跳到主要内容

67 篇博文 含有标签「infrastructure」

查看所有标签

生产环境中的端侧 LLM 推理:何时选择边缘模型以及它们的实际成本

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队决定使用端侧 LLM 推理的方式,就像他们决定重写数据库时一样:冲动行事,仅仅是为了应对原本可以用更廉价方案解决的问题。推介词总是令人心动——无需网络往返、完全隐私、零推理成本——而且初始原型也验证了这一点。然而,在发布六个月后,模型开始悄无声息地输出更差的结果,新的操作系统更新打破了量化兼容性,而那些使用廉价安卓手机的用户正在运行一个你无法推送更新的版本。

本指南旨在让你在看清现实的情况下做出决策。在特定场景下,端侧推理确实是正确的选择,但其成本结构与团队预期的不同,且生产环境中的失效模式与云端 LLM 部署几乎完全不同。

为具备代码编写能力的智能体构建沙箱:最小权限原则并非可选

· 阅读需 15 分钟
Tian Pan
Software Engineer

大多数团队在发布第一个可执行代码的智能体(Agent)时,只采取了一种安全控制措施:API 密钥范围限制(API key scoping)。他们给智能体一个具有 repo:read 权限的 GitHub 令牌,以及一个可以访问工作目录的 shell,然后就称其为“已沙箱化”。这种做法是错误的,其弊端只有在发生安全事故后才会变得显而易见。

能够编写和执行代码的智能体的威胁模型与 Web 服务器或 CLI 工具的威胁模型有着本质的区别。攻击面不再是协议边界,而是智能体读取的一切内容。这包括 git 提交记录、文档页面、API 响应、数据库记录以及它打开的任何文件。其中的任何输入都可能包含提示词注入(prompt injection),从而将你的研究型智能体转变为数据泄露管道。

LLM 应用中的 SSE vs WebSockets vs gRPC Streaming:那个稍后会让你头疼的协议抉择

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数构建 LLM 功能的团队选择流式协议的方式就像选择字体一样:快速、不加思索,然后忍受由此带来的后果多年。这种选择第一次让你踩坑通常是在生产环境中——比如 CloudFlare 524 超时导致你的 SSE 流损坏,WebSocket 服务器在持续负载下发生内存泄漏,或者 gRPC-Web 集成在单元测试中表现良好,但在客户端需要向上游发送消息时静默失败。协议决定了你的故障模式。基于基准吞吐量进行选择是一个错误的切入点。

每个主要的 LLM 提供商——OpenAI、Anthropic、Cohere、Hugging Face——都通过 Server-Sent Events (SSE) 流式传输 Token。这一事实是一个强有力的先验理由,但并不是因为 SSE 快。而是因为 SSE 是无状态的,能与 HTTP 基础设施轻松兼容,且其故障模式是可预测的。问题的关键在于你的应用是否有某些需求迫使你偏离这条路径。

AI基础设施碳核算:你的团队尚未衡量的可持续发展成本

· 阅读需 10 分钟
Tian Pan
Software Engineer

每个正在基于LLM构建系统的工程团队,都在做基础设施决策时忽视了一项隐性成本。你会追踪token数量、延迟和API开支,但几乎没有人追踪其运行的推理工作负载的碳排放——而这个缺口正在迅速收窄,来自监管和市场两个方向的压力都在增加。

AI系统现在占全球温室气体排放的2.5–3.7%,已正式超过航空业2%的贡献,且每年增长15%。仅2024年,运行AI专用服务器的美国数据中心就消耗了53–76 TWh的电力——足以为720万户家庭供电一年。这种规模已不再是假设,工程团队需要了解自身贡献的预期正成为真实的组织压力。

为生产环境选择向量数据库:基准测试不会告诉你的事

· 阅读需 13 分钟
Tian Pan
Software Engineer

当工程师评估向量数据库时,他们通常会加载 ANN 基准测试,并选择在 recall-at-10 排行榜上名列前茅的产品。三个月后,他们就开始提交迁移工单了。这些基准测试是在单一客户端、静态且索引完美的索引数据集上测量查询吞吐量的。但生产环境完全不是这样。

本指南涵盖了预测向量数据库在实际工作负载下能否撑住的五个维度,以及一个将这些维度与你的技术栈进行匹配的决策框架。

事件驱动的 Agent 调度:为什么 Cron + REST 调用无法胜任循环 AI 工作负载

· 阅读需 12 分钟
Tian Pan
Software Engineer

团队调度循环 AI Agent 任务最常见的方式,也是最危险的方式:一个每隔 N 分钟触发一次 REST 调用的 Cron 条目,它启动一个 LLM 工作流,任务要么完成,要么悄无声息地失败。这个模式在预发布环境看起来没什么问题,但在生产环境中,它会制造出一类极难发现、难以恢复、难以推理的故障。

Cron 诞生于 1975 年,最初是为运维脚本设计的。它所内建的假设——运行时间短、无状态执行、触发即忘——在每一个维度上都与 LLM 工作负载的现实相悖。循环 AI Agent 任务是长时运行的、有状态的、成本高昂的,其失败方式会在多次重试中不断叠加。用 Cron 来调度它们,不只是可靠性风险,更是可见性风险:出问题时,你往往浑然不知。

LLM 速率限制是一个分布式系统问题

· 阅读需 14 分钟
Tian Pan
Software Engineer

你的 AI 产品有两个功能面:一个面向用户的聊天功能和一个后台报告生成任务。两者在同一个 Key 下调用同一个 LLM API。一个下午,你收到了一张工单:“聊天回复在中途被截断了。”没有触发任何警报。日志中也没有 429 错误。API 在整个过程中一直返回 HTTP 200。

发生了什么:报告生成任务逐渐消耗了你大部分的共享 Token 配额。聊天请求虽然能完成,但仅达到了你的 max_tokens 限制——在语义上被截断,在语法上有效,却在无声无息中出错了。你的标准监控从未察觉到这一点,因为在 HTTP 层面上没有任何异常。

这并不是一种边缘情况。当工程师将 LLM 速率限制视为简单的节流问题,而不是意识到它们实际上属于分布式系统失效类别时,就会发生这种情况。

LLM 供应商锁定的隐性迁移成本

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数工程团队认为自己已经对 LLM 供应商锁定做了充分防护:用 LiteLLM 统一 API 调用、避免在托管平台上做微调、把原始数据存在自己的存储里。他们感到安全。然后某天提供商宣布弃用某模型,或竞争对手降价 40%,团队才发现,自己搭建的抽象层大概只处理了约 20% 的实际迁移成本。

另外 80% 藏在没人仔细看过的地方:围绕模型格式怪癖写成的系统提示词、按照某个模型的拒绝阈值校准的评估套件、一旦换模型就会失效的嵌入索引,以及建立在某种行为模式上却根本无法迁移的用户预期。

多区域 LLM 服务:没人警告过你的缓存局部性问题

· 阅读需 12 分钟
Tian Pan
Software Engineer

当你在多个区域运行无状态 HTTP API 时,路由问题基本上已经解决了。在前面放一个全球负载均衡器,按地理位置分配请求,最糟糕的情况也不过是缓存项稍微过时。任何副本都可以处理任何请求,并获得相同的结果。

LLM 推理打破了每一个假设。一旦你添加了提示词缓存(Prompt Caching)——你肯定会加,因为缓存命中和未命中的成本差异大约是 10 倍——你的服务就会以大多数基础设施团队预料不到的方式变得有状态,直到他们在第二个区域看到延迟数据退化。

多租户 LLM 问题:规模化部署中的嘈杂邻居、隔离与公平性

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的 SaaS 产品以十个设计客户的规模上线,一切运转完美。随后你陆续接入了一百个租户,其中一个——一位在复杂研究工作流中使用 20 万 token 上下文窗口的重度用户——导致了所有其他客户的延迟飙升。支持工单开始涌来。你查看监控面板,却看不到任何明显异常:模型健康,API 返回 200,p50 延迟看起来正常。而你的 p95 已经悄悄翻了三倍。

这就是嘈杂邻居问题,它对 LLM 基础设施的冲击比几乎任何其他共享系统都要剧烈。以下是它为何比数据库场景更难解决——以及真正有效的应对方案。

你团队的基准测试正在互相欺骗:共享评估基础设施的污染问题

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的红队刚完成了一次越狱扫描。他们发现了三个新型攻击向量,将其整理成文档,并把这些提示词放入共享提示词库,供其他人学习。一周后,安全团队运行基线评估,报告鲁棒性提升了 12%。所有人都在庆祝,却没人问为什么。

实际发生的是:安全团队的基线评估悄悄纳入了红队的攻击提示词。模型并没有变得更健壮——是评估被污染了。你的基准测试现在衡量的是对已知攻击的免疫力,而非对新攻击的泛化能力。

这就是共享评估基础设施污染问题,它比大多数团队意识到的要普遍得多。症状是指标被人为拉高,根本原因是把评估基础设施当生产基础设施来对待——优化了共享和效率,而非隔离性和保真度。

AI 依赖足迹:每个功能都在增加新的基础设施所有者

· 阅读需 10 分钟
Tian Pan
Software Engineer

上个季度,你的团队上线了一个基于 RAG 的搜索功能。它需要向量数据库、嵌入模型、标注流水线、分块服务和评估框架。每个组件单独来看都合情合理。但六个月后,你发现这五个组件中有三个没有明确的负责人,有两个运行在工程师的个人云账户上,还有一个被供应商悄悄下线了,无人知晓。凌晨三点的告警来自一个没人记得是何时添加的组件。

这就是 AI 依赖足迹问题:每个 AI 功能所需基础设施的累积叠加,加上组织层面在上线前几乎不规划所有权的现实,共同造就了这一困局。