跳到主要内容

123 篇博文 含有标签「mlops」

查看所有标签

模型已到生命周期终点,并带走了你的提示词

· 阅读需 12 分钟
Tian Pan
Software Engineer

弃用通知看起来人畜无害。它以更新日志或邮件中一段平静的文字形式出现:该模型快照将在几个月后的某个日期从 API 中移除,这里是推荐的替代方案,感谢你与我们一起构建。其中暗含的工作量似乎只是一行代码的改动 —— 换掉模型字符串,重新部署,搞定。

这种设想是错误的,而且错得很昂贵。模型字符串是你损失的最小的东西。真正随着旧模型一起消失的,是你花了六个月调优的提示词(prompt) —— 每一个针对边缘案例的补丁、每一个重新排序的指令、每一个你因为那个特定模型会有特定烦人行为而添加的“仅以有效的 JSON 响应,不要用 Markdown 包装”。这些都不是可移植的。从统计学意义上讲,它是针对一个模型的行为进行拟合的。替代模型并不是“缺陷对缺陷”兼容的,因此这种拟合不再成立。

模型生命周期的结束是一个迁移项目。如果把它仅仅视为一次配置更改,你就会在生产环境中、在新模型上通过真实流量发现其中的差异。

当测试集泄露到微调中:你自己造成的污染

· 阅读需 10 分钟
Tian Pan
Software Engineer

AI 领域的每个人都知道基准测试污染(benchmark contamination)的警示故事:模型厂商抓取公开网络,GSM8K 和 MMLU 最终出现在预训练语料库中,导致报告的分数衡量的是召回而非推理。这通常被视为别人的过错——是基础模型实验室的问题,是你继承下来的瑕疵。因此,你构建了自己的留存评估集,将其存放在私有仓库中,并认为自己是清白的。

你可能并不清白。在生产级 AI 系统中,最具破坏性的污染很少是继承来的,而是由心怀好意的工程师遵循看似合理的流程在内部制造出来的。你的评估集通过你自己建造的大门泄露到了训练流水线中,而且这种泄露是无声的:就在你的基准测试停止衡量任何真实事物的瞬间,每个仪表盘都会变成绿色。

这就是你亲手造成的污染。它比你继承的那种污染更值得关注,因为你是唯一能够检测到它的人——而几乎没有人会为此进行审计。

量化衰减:你的评估集从未预见到的能力税

· 阅读需 13 分钟
Tian Pan
Software Engineer

一个自托管 LLM 团队将生产模型从 fp16 量化为 int4。内存占用降低了 4 倍,吞吐量几乎翻倍,GPU 账单大幅缩减,团队重新运行了曾用于 fp16 发布把关的同一套评估组件。MMLU-Pro 保留了基准测试的 98.1%。综合质量看起来不错。他们发布了。

六周后,一名支持工程师注意到数学辅导功能悄悄变差了。合规团队标记了在对抗性提示下违反政策的补全次数有所增加。结构化输出的重试率从 1.4% 攀升至 6.8%。这些都没有出现在评估仪表盘上,因为评估仪表盘是为了验证另一个模型而构建的——那个虽然共享相同权重文件,但每个激活值背后都有四倍比特位的模型。

这就是量化漂移(quantization slippage)。成本分析只计算了内存和延迟方面的收益,却没有计算这次替换在无形中要求的评估重新锚定。而针对 fp16 分布进行校准的评估套件,现在正用错误的准则对错误的模型进行评分。

你的微调语料库是代码库。别再通过存储桶交付了。

· 阅读需 12 分钟
Tian Pan
Software Engineer

在任何严肃的微调项目进入到第九个月时,你的训练语料库的作者数量可能已经超过了你的代码库。合成生成流水线编写了数百万个示例。供应商标注公司从你从未见过的劳动力那里贡献了 8 万行数据。一位工程师在上周二添加了 47 个示例,以修复他们在评估(eval)中发现的回归问题。一个抓取任务每天晚上将生产环境的追踪记录(traces)拉取到一个“补充”的 parquet 文件中。二月份有人扔进 S3 的一个 CSV 文件仍然在那里,仍然处于训练组合中,而编写该文件的人已经在三月份离职了。

现在看看你的应用程序代码仓库。每一行代码都可以追溯到具体的作者。每一次变更都经过了至少一名审核者的 PR。提交(Commits)是经过签名的。主分支(Main branch)是受保护的。合并需要第二个人参与。这里有审计日志。如果审计员询问 payment_processor.py 的第 47 行是谁写的,你可以在几秒钟内给出答案。

如果他们问产生模型 v2.3 的语料库中的第 47 个示例是谁写的,诚实的回答是“2024 年第二季度的 Mechanical Turk 批次,供应商未知,理由缺失。”你的微调语料库是比代码库权限更高的部署表面——它直接决定了生产环境中模型的行为——而你正在通过存储桶(bucket)发布它,却通过经过审查的 PR 发布代码。威胁模型被倒置了。

生产环境偏差审计:在用户发现之前捕捉 AI 歧视

· 阅读需 13 分钟
Tian Pan
Software Engineer

我在生产环境中见过的代价最高昂的偏差缺陷(bias bug),是通过一个 Twitter 讨论串发现的,而不是仪表盘。一个小团队发布了一个信用评分助手。他们运行了标准的发布前审计:平衡的训练集、对抗性去偏差(adversarial debiasing),以及留出集(holdout set)上低于 5% 的等同赔率差距(equalized-odds gap)。发布一个月后,一名用户发布了截图,显示其家庭中的女性在财务状况完全相同的情况下,获得的额度始终低于男性。当团队的监控系统反应过来时,监管机构已经开始介入调查。

教训并不是说这个团队懒惰。他们严格执行了文献推荐的审计流程。教训在于,发布前审计衡量的是模型的快照,而当真实用户接触到它时,那个模型早已不复存在。分布发生了偏移。新的人群出现了。提示词模板(prompt-template)的更改引入了措辞伪影(phrasing artifact),并与姓名产生了交互作用。模型升级悄悄地牺牲了校准度(calibration)来换取流畅度。你在 11 月进行的审计,无法保护 5 月在生产环境中运行的模型。

孤儿微调:基础模型废弃后如何恢复领域专业知识

· 阅读需 10 分钟
Tian Pan
Software Engineer

2024年1月4日,OpenAI 下线了 /fine-tunes 接口。每一个基于 Ada、Babbage、Curie 和 Davinci 微调的模型都停止了响应。那些花费数月在这些模型上构建生产系统的团队——精心设计的提示、标注的数据集、标签流水线——一觉醒来发现收到的是 HTTP 404。微调模型没有迁移,学到的行为没有迁移,领域专业知识就此消失。

这不是小概率事件。2024年8月,Google 彻底关闭了 PaLM API,没有任何向后兼容的宽限期。与 OpenAI 至少允许现有 GPT-3.5 微调模型继续运行(只是禁止新的训练任务)不同,Google 的关闭意味着生产推理在同一天停止。如果你的微调 PaLM 模型处于关键路径上,你就遭遇了服务中断。

为什么 AI 质量监控会将模型漂移、数据漂移和提示词漂移混为一谈 —— 以及针对每种情况的对策

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个欺诈检测模型的准确率在三周内悄无声息地下降了一半。延迟正常,错误率为零,所有基础设施仪表盘都显示绿色。工程师们在第一周审计数据管道,第二周比较模型权重,第三周重新审视工单,直到有人发现欺诈者只是改变了他们的语言模式。修复工作——用最近的样本重新训练——只花了两天。而误诊却花了三周。

这种模式在生产环境中的 AI 团队里不断重复:性能下降触发了笼统的“模型问题”警报,团队开始基于直觉而不是根本原因来调整参数。原因并不是缺乏监控纪律,而是大多数可观测性技术栈将三个结构上截然不同的问题混为一谈。模型漂移(Model drift)、数据漂移(Data drift)和提示词漂移(Prompt drift)具有不同的检测特征、不同的警报拓扑结构和不同的修复路径。将它们混淆,就会在错误的修复方案上浪费数周时间。

为什么回滚 AI 功能比回滚代码更难

· 阅读需 9 分钟
Tian Pan
Software Engineer

当一次人格更新让一个流行的 AI 助手变得明显更加讨好和客气时,工程团队迅速发现了问题,并在几天内发布了回滚。代码更改很干净。模型切换也很直接。然而,用户还是被激怒了——不是因为回滚出错了,而是因为他们中的一些人已经围绕那个“奉承版”建立了工作流。他们的提示策略、审阅环节、对模型置信度信号的解释——所有这一切都针对一个他们再也无法访问的 AI 进行了调整。

回滚代码只花了几个小时。回滚用户却是不可能的。

这种不对称性是 AI 功能管理的中心挑战,大多数工程团队在吃亏之前都会低估它。传统的回滚思维将“撤销”视为一种纯粹的技术操作。对于 AI 功能来说,这只是故事的一半。

没人愿意写的 AI 事故复盘:四层诊断框架

· 阅读需 12 分钟
Tian Pan
Software Engineer

上季度,某推荐引擎推送了冒犯性内容,随后召开的事故复盘会议以一种我们再熟悉不过的方式收场:两小时的会议里,ML 工程师把矛头指向检索语料库,数据工程师把矛头指向提示词,产品工程师把矛头指向监控,基础设施团队把矛头指向没人记得何时升级的模型版本。最终产出了三条行动项,却没有一条落实到具体负责人。事故就此关闭。六周后,同样的故障模式再次上线。

这不是某一个团队的故事,而是大多数组织处理 AI 事故时的默认结局。AI 功能在生产环境中造成的后果,由足够多的参与方共同承担,导致标准的事故复盘根本无法锁定因果关系。那套在排查数据库超时时行之有效的"5 Why"分析法,面对"模型给出了错误答案"时便彻底失灵——因为下一步该追问什么,从来都不显而易见。

嵌入模型更迭:当你的提供商悄然导致整个向量索引失效

· 阅读需 10 分钟
Tian Pan
Software Engineer

你花了数周时间构建检索流水线。分块策略已调整,相似度阈值已校准,用户反馈看起来很积极。然后,在某个周一的早晨,在你没有任何部署的情况下,检索质量开始下降。以前能搜出正确文档的查询,现在返回的却是关联度极低的噪音。没有错误日志。没有异常。流水线运行顺畅。

发生变化的是你的嵌入(Embedding)提供商更新了模型。你的整个向量索引——那些费尽心力嵌入的数百万个文档——现在填充的是来自一套坐标系统的向量,而这套系统与你的查询编码器生成的向量已不再匹配。结果不是系统崩溃,而是不可见的垃圾数据。

企业 AI 的最后一公里难题:为何大多数试点项目从未到达生产

· 阅读需 8 分钟
Tian Pan
Software Engineer

一个在内部基准测试中得分 94%、在演示中令利益相关者印象深刻、通过所有离线评估的模型,进入生产后仍然可能跌落至 7% 的真实客户数据有效准确率。这不是假设——这是多个企业 AI 部署中有据可查的结果,也是一种更广泛模式的症状:从"试点成功"到"生产价值"之间的鸿沟,正是大多数企业 AI 悄然消亡的地方。

在各行各业,大约 85–88% 的企业 AI 试点项目从未到达生产。每启动 33 个 PoC,只有四个能够上线。尽管模型能力大幅提升,这一比例三年来几乎没有改变。失败的根源几乎从不在于模型是否足够好——几乎总是在于成功演示与真实用户真正依赖该系统完成实际工作之间所发生的事情。

RAG 评估失效悖论:为什么更新知识库会破坏你的基准测试

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 RAG 评估套件在忠实度(faithfulness)方面达到了 0.89。你向知识库添加了 5,000 个新的支持文档。你重新运行相同的评估,忠实度降到了 0.79。你的团队提交了一个模型退化(model regression)工单。

其实没有任何退化。你的评估只是变成了一个谎言。

这就是 RAG 评估失效悖论:在你更新知识库的那一刻,你针对旧索引构建的评估集就会悄无声息地停止衡量其设计的初衷。大多数团队在几个月后才会发现这一点——在为幻影般的退化消耗了大量的工程周期之后——如果他们真的能发现的话。