跳到主要内容

720 篇博文 含有标签「llm」

查看所有标签

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

· 阅读需 13 分钟
Tian Pan
Software Engineer

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

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

多轮对话会话状态坍缩问题

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的单次请求错误率看起来很正常。延迟在 SLO 范围内。LLM 裁判对输出的评分是 87%。接着,一位用户提交了支持工单:“我把账号告诉了机器人三次,它却一直重复问我。”另一位用户说:“它先是同意退款,两轮对话后又否认该政策的存在。”

单轮失败是显而易见的。请求进来,模型出现幻觉或拒绝回答,你的评估 (eval) 捕捉到了它,然后你修复提示词。反馈循环很紧密。多轮失败则完全不同:会话开始时表现良好,随后逐轮恶化,而你的监控从未报警,因为每个单独的回复在技术上都是连贯的。问题出在整个会话上——而几乎没有团队为此建立观测机制。

对主要前沿模型(Claude 3.7 Sonnet、GPT-4.1、Gemini 2.5 Pro)的研究显示,从单轮转向多轮对话时,平均性能会下降 39%。这个数字掩盖了真相:只有大约 16% 的下降是由于能力损失。另外 23 个百分点则是一场可靠性危机——随着对话长度增加,模型在同一任务上的最佳表现与最差表现之间的差距翻了一番。你得到的不仅是质量更差的输出,还有极不稳定的输出。

没人会写的 AI 系统 On-Call 运维手册

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 p99 延迟刚刚飙升到了 12 秒。警报在凌晨 3:14 响起。你打开运维手册 (runbook),看到如下指令:检查数据库连接池、验证负载均衡器、重启服务。你三样都做了。延迟依然居高不下。服务并没有宕机——它正在运行且有响应。但有些地方不对劲。事实证明,由于最近的一次提示词 (prompt) 变更无意中开启了“啰嗦”模式,模型生成的响应比平时长了三倍。运维手册里没有关于这一条的说明。

这是工程团队尚未准备好应对的新一类值班事故:系统正在运行,但模型表现异常。传统的 SRE 运维手册假设的是二进制的故障状态。AI 系统是以概率方式失效的,其症状看起来不像停机,而更像“漂移”(drift)。

端侧 LLM 推理:何时将 AI 迁出云端

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数团队只有在亲身碰壁后,才会发现云端运行 AI 推理的棘手之处:追溯到个人健康信息(PHI)跨越 API 边界的 HIPAA 审计;在预发布环境中表现良好,直到处于不稳定连接环境下的用户反馈“一直在转圈”的延迟数据;或者是每天 10,000 次请求时看似合理,但在 1,000 万次请求时却变成灾难的单次推理 API 账单。设备端推理通常是正确的答案 —— 但团队选择它的原因以及他们遇到的问题,很少与博客文章对比中提到的相同。

这是一个关于该决策的实用指南:本地执行何时优于云端 API、哪些小模型真正具备交付能力,以及在基准测试演示结束后,部署生命周期是什么样的。

产品工程师必读的训练后对齐:RLHF、DPO 和 RLAIF 对你究竟意味着什么

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数构建 AI 功能的团队认为,一旦产品发布,用户反馈就会成为后续可以利用的资源。记录点赞和点踩信号,积累足够的量,最终进行微调。现实情况更为棘手:一年的反应记录并不等同于一年的对齐质量训练数据。这两者之间的差距,正是对齐技术——RLHF、DPO、RLAIF——要么拯救你,要么令你措手不及的地方。

这篇文章不是对对齐研究的综述。它是一份面向工程师的决策指南,旨在帮助你从数据收集的角度理解这些技术的需求,从而确保你今天部署的埋点确实能够支持你计划在六个月后进行的微调。

预训练的阴影:你的微调计划忽视的隐性约束

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的团队花了三个迭代周期标注了5万条领域样本。你在前沿模型上运行了LoRA微调。评估指标提升了。然后一位同事稍微改变了提示词的措辞,模型又回到了你以为已经抑制的行为。这不是数据集问题——这就是预训练的阴影。

实践者不断重新发现的核心洞察是:微调教会模型如何在新语境中说话,但无法改写模型根本知识或倾向。在预训练期间编码的行为、偏见和事实先验是一个引力场——微调只能在其周围轨道运行,很难真正逃脱。

AI 功能定价:工程团队总是跳过的单位经济学框架

· 阅读需 13 分钟
Tian Pan
Software Engineer

Cursor 在 2025 年实现了 10 亿美元营收,却亏损了 1.5 亿美元。客户支付的每一分钱都直接流向了 LLM API 供应商,工程、支持和基础设施开销无从覆盖。这不是一个规模化问题——而是一个单位经济学问题,在酿成危机之前始终隐而不见。

大多数构建 AI 功能的工程团队都在犯同一个错误:把推理成本当作一个无关紧要的小项,上线固定费率订阅,然后假设经济账迟早会算对。但它永远不会自己算对。可变推理成本的行为方式与软件中任何其他 COGS 都截然不同——一旦你最重度的用户发现了你最昂贵的功能,那些适用于传统 SaaS 的定价架构就会让你流血不止。

Prompt Cache 盈亏平衡点:提供商端前缀缓存何时真正划算的精确数学计算

· 阅读需 12 分钟
Tian Pan
Software Engineer

Prompt 缓存听起来是一个稳赢的方案:Anthropic 和 OpenAI 都宣传缓存命中可享受 90% 的折扣,且文档中展示了令人印象深刻的成本削减图表。团队实施了它,观察着缓存命中率计数器不断上升,并理所当然地认为自己在省钱。但实际上,有些团队支付的费用比完全不使用缓存时还要

问题在于“写入溢价”(write premium)。每当你缓存一个前缀时,你都需要支付额外的费用——在 5 分钟的缓存窗口内是 1.25 倍,在 1 小时的窗口内是 2 倍。如果你的命中率太低,这些写入溢价的累积速度会超过读取折扣所节省的费用。缓存并不是免费的保险;它是你对自己流量模式下的一场赌注。

Prompt 金丝雀:你的 AI 团队缺失的部署原语

· 阅读需 11 分钟
Tian Pan
Software Engineer

2025 年 4 月,全球使用最广泛的 AI 产品之一更新了系统提示词。错误率保持平稳。延迟表现正常。部署仪表盘显示一切正常。然而在三天内,数百万用户发现了一些严重的问题:模型变得异常谄媚,附和错误的想法,验证糟糕的推理,并对用户说的任何话都表现出虚假的热情。回滚公告发布时,该事件已经席卷社交媒体,用户纷纷晒出截图作为证据。在一段时间内,Twitter 成了生产告警系统。

当你把提示词和模型的变更当作配置更新,而不是行为部署时,就会发生这种情况。那些在代码金丝雀基础设施上投入多年的团队,却仍在以单一原子级切换的方式发布 AI 变更——瞬间全球化、瞬间不可逆,没有分级发布,除了用户投诉外也没有自动回滚信号。

LLM 行为的金丝雀部署并非可有可无。它是缺失的基础设施层,区分了那些能在内部捕捉退化的团队,和那些只能通过支持工单发现问题的团队。

每日十万请求下的提示注入检测:为何简单防御失效,以及真正有效的方法

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队都是在用户发现问题之后,才意识到自己的提示注入防御已经失效。你把"忽略所有先前指令"加入屏蔽词列表,然后上线。三个月后,攻击者将载荷进行 Base64 编码,或将指令藏在 RAG 检索到的 HTML 注释里,或使用错字混淆手法("忽略所有之前的指示"),你的防御瞬间土崩瓦解。屏蔽词列表无济于事,因为提示注入的攻击面是无界的——不存在封闭的恶意输入词汇表。

在流量较低时,你可以承担为每个请求调用第二个 LLM 进行验证的成本。但在每天十万次请求的规模下,这笔账算不过来,延迟也会让用户明显感知。本文探讨的是当暴力解法失效后,架构应该如何设计。

提示词-模型耦合陷阱:为何你的提示词只会说一种模型的「方言」

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数提示词迁移在预发布环境看起来都很顺利。90% 的测试用例通过,新模型的响应感觉更清晰,演示也运行得很流畅。然后你上线了,不到两天,结构化输出解析器开始在 12% 的响应中抛出异常,一个面向用户的分类流水线开始返回错误标签,一个工具调用 Agent 在一个之前能正常处理的 Schema 上陷入了循环。没有人改动过提示词。是模型变了。

这就是提示词-模型耦合陷阱:在某个模型上可靠运行的提示词,会悄然积累对该模型特定行为怪癖的依赖,而这些依赖在迁移日之前根本看不见。

LLM 输出的基于属性的测试:发现你的评估集从未想过的 Bug

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的评测集(eval suite)显示准确率为 94%。但用户反馈,对于名字不是 "John" 或 "Alice" 的情况,该功能是失效的。这两者都是事实,而它们之间的差距有一个专门的名字:你精心挑选的测试集只编码了你已经预料到的失败模式。

基于属性的测试(Property-based testing,简称 PBT)诞生于 1999 年,旨在揭示确定性软件中正是这一类的盲点。将其应用于 LLM 输出时,它会自动生成数以万计的对抗性输入变体,探测手写测试用例在结构上无法触及的领域边界。2025 年的一项 OOPSLA 研究发现,平均每个基于属性的测试发现的变异 Bug 数量大约是普通单元测试的 50 倍。另一项研究测量出,PBT 和基于示例的测试(EBT)在不同的 Bug 上会失败——将两者结合后,检测率从 68.75% 提高到了 81.25%。这 12.5 个百分点的差距并非舍入误差,它代表了单一方法无法察觉的整整一类故障。

本文面向那些已经拥有评测集,并希望找出那些评测集在结构上无法发现的 Bug 的工程师。