跳到主要内容

116 篇博文 含有标签「mlops」

查看所有标签

厂商基准测试是你的天花板,而非预测

· 阅读需 12 分钟
Tian Pan
Software Engineer

模型发布的公告在周二早上落地。博客文章开头是一张图表:HumanEval 提升了 4 个点,SWE-bench Verified 提升了 6 个点,MATH 提升了 3 个点,而当前流行的 Agent 测试套件提升的数值在一年之前足以写成一篇研究论文。到了周二下午,你公司的 Slack 频道里就会出现该图表的截图,随之而来的还有一个类似决策的问题:“我们要切换过去吗?”这个讨论线程将基准测试的增量视为一种预测 —— 仿佛这些数字描述了新模型在 你的 产品中、使用 你的 提示词、在 你的 工具链下、针对 你的 评估准则所能表现出的效果。事实并非如此。厂商给出的数字是你可能看到的性能上限。你实际获得的提升大约在零到该标题数值的一半之间,如果不运行一次厂商从未运行过的评估,你无法得知确切结果。

这并非在抱怨基准测试的有效性。基准测试是真实的。它们是针对真实的评估套件运行的。厂商没有撒谎。问题在于厂商的评估套件是一个理想化的环境,剥离了生产部署中引入的每一个变量,而在这些条件下生成的数字在结构上无法预测模型在你环境下的行为。将其视为一种预测是一种范畴错误 —— 它会导致采购决策、容量规划承诺以及发布时间表都基于虚构的事实进行校准。

Embedding 迁移是新时代的 Schema 迁移

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数团队在生产环境中第一次更换嵌入模型(embedding model)时,都会将其视为批处理作业。重新运行嵌入器,构建新索引,切换别名,然后部署。延迟保持正常。错误率为零。每个查询都有结果。然而,检索质量会在数周内悄悄下降,而没人察觉。因为症状是“用户抱怨答案感觉不对”,而不是监控面板上的红报警报。

这不仅仅是部署问题,而是一个团队决定盲目进行的架构迁移(schema migration)。旧的嵌入空间和新的嵌入空间是不同的参考系;以前表示“这两个段落关于同一个话题”的余弦几何(cosine geometry)在数值置信度上不再具有相同的含义。以前聚集在一起的文档和查询会以非均匀的方式漂移。在旧分布上训练的重排序器(re-rankers)会开始处理那些不再符合其学习规律的样本。对逐点相关性(pointwise relevance)评分正常的评估套件会漏掉这一切,因为没有任何单个文档移动得太远,但整个图谱发生了旋转。

如果将这种更换视为数据库迁移,几乎所有出错的情况都是可以预防的。如果将其视为批处理作业,那么回归(regressions)就会按照无人负责的进度表悄然降临。

跨区域 Prompt 版本偏差:你的 CDN 误运行了六小时的 A/B 测试

· 阅读需 12 分钟
Tian Pan
Software Engineer

你在 09:14 发布了一个系统提示词(system-prompt)变更。发布仪表盘在 09:31 变绿。到 11:00 时,你的评估追踪器依然显示正常,成本仪表盘也无异常,但一位客户成功工程师联系了团队:仅在亚太地区,解析端的结构化输出错误上升了约 3%。北美无异常。欧洲无异常。

发布在覆盖 67% 的区域时自动暂停了,因为某个 POP 节点上的一个非核心健康检查在切换期间发生了抖动,而当时没人注意到。在六个小时里,us-easteu-west 运行着提示词 v47,而 ap-southap-northeast 仍停留在 v46。你正在运行一个按地理位置划分的实时 A/B 测试——只不过这个测试不是你设计的,你看不到测试过程,而且那个本应捕捉质量回退的评估套件正巧连接到其中一个区域的新版本,然后若无其事地忽略了问题。

这种失败模式并不是单个工具的 bug。它是将提示词通过为不同类型的工件构建的部署系统进行推送时,所产生的可预见的后果。

Embedding 模型轮换是数据库迁移,而非代码部署

· 阅读需 12 分钟
Tian Pan
Software Engineer

在某个预发布(staging)频道里,一位工程师写道:“将嵌入模型(embedder)升级到 v3,新模型在 MTEB 上的得分提高了 4 分,冒烟测试通过后合并。”两天后,客服工单开始陆陆续续出现,反馈搜索结果感觉“莫名其妙地不对劲”。一周后,检索精度下降了 14 个百分点,余弦相似度分数从 0.85 暴跌至 0.65 左右,而且没人能解释原因——因为这次部署看起来与过去五次模型升级完全一样。这根本不是一次普通的部署。而是一次披着部署外衣的数据库迁移。

嵌入模型轮转是 AI 基础设施中最容易被归类错误的变更类型。它通过与提示词(prompt)微调或生成模型版本更新相同的渠道进入你的系统——配置文件、PR、CI 检查——因此它遵循配置变更的治理流程。但从底层来看,新的嵌入模型并不会产生旧向量的更好版本。它产生的向量完全存在于不同的坐标系中,跨两个流形计算余弦相似度是一个范畴错误(category error)。正确的心理模型不是“升级依赖版本”,而是“在提供读取服务的同时,为一个拥有 5000 万行的表更换主键编码”。

孤儿适配器难题:当你的微调模型寿命超过其基础模型时

· 阅读需 14 分钟
Tian Pan
Software Engineer

一名高级工程师在六个月前离职了。她负责管理用于路由客户支持工单的分类器适配器——这是一个基于 847 个手动标注样本训练的 32 秩 LoRA,挂载在一个还有 43 天就要停用的基础模型上。没人记得为什么从最初的 2,000 个样本中选出了这 847 个。训练数据存在一个 S3 存储桶里,由于其生命周期策略,超过一年的对象会被自动清除。她的笔记本电脑已被抹除。那个微调笔记本(notebook)中有一个单元格调用了一个预处理函数,该函数是从她个人的 dotfiles 仓库导入的,而现在那个仓库是私有的。

这就是“孤儿适配器”(Orphan Adapter)——一个比其维护者、数据甚至其所基于的基础模型寿命更长的微调模型。它存在于你的生产栈中,路由着真实的流量,而团队中没人能重新构建它。停用邮件并没有制造这场危机,它只是揭露了危机。

为什么 AI 功能开关不同于普通功能开关

· 阅读需 12 分钟
Tian Pan
Software Engineer

金丝雀部署完美收工:错误率纹丝不动,延迟没有飙升,监控大盘一片绿色。你将新模型全量推送给所有流量——三周后,客服队列里挤满了用户投诉,说 AI "感觉不对劲"、"不再有用了"。

这正是将传统功能开关机制套用到 AI 系统上的核心问题。一个模型可以在"没有崩溃"的情况下悄悄退化:它照常返回 200 状态码,以正常速度生成 token,输出的文本也能通过表面校验——但与此同时,它的幻觉频率在悄悄上升,回答越来越简短或回避,或者在你的用户真正依赖的细微推理模式上悄然退步。你多年来一直监控的遥测指标,从来就不是为了捕捉这类故障而设计的。

AI 功能生命周期衰减问题:如何在用户发现之前捕捉到性能下降

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 AI 功能上线一切顺利。演示令人印象深刻,发布指标看起来很好,模型在测试集上的基准准确率达到了 88%。大约三个月后,一位客户成功经理转发了一张截图。AI 推荐结果毫无道理。你查看日志,进行快速评估,发现准确率已经漂移到 71%。没有任何警报触发,没有抛出任何错误。整个过程中基础设施监控面板一直显示绿色。

这种情况并非偶发。对 32 个生产数据集的研究发现,91% 的机器学习模型会随时间降级,而且大多数降级是悄无声息的。系统继续运行,代码没有变化,但随着现实世界不断演进而模型原地踏步,预测结果越来越差。

AI功能下线手册:如何在不损害信任的前提下淘汰表现不佳的AI

· 阅读需 11 分钟
Tian Pan
Software Engineer

过去三年,工程团队上线的AI功能数量超过了此前十年的总和。但他们几乎没有下线过任何一个。德勤的研究发现,2025年有42%的公司放弃了至少一个AI项目——相比前一年的17%大幅上升——每个被废弃项目的平均沉没成本高达720万美元。然而,那些留在生产环境中的功能往往比被砍掉的更具破坏性:它们缓慢侵蚀用户信任,积累每月复利的技术债,并消耗本可用于有效工作的工程资源。

这种不对称是结构性的。AI功能上线会带来公告、利益相关方的兴奋和团队荣誉。而退场则被视为失败的承认。因此,糟糕的功能不断积累。解决之道不是意志力,而是一套决策框架——让退场成为一种正常、可预期的工程结果,而非组织危机。

生产环境 AI 的偏差监测基础设施:超越上线前的审计

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的模型通过了公平性审查。人口统计学平价(demographic parity)在可接受范围内,机会均等指标(equal opportunity metrics)看起来很干净,审计报告也被贴上了绿色的勾,进入了 Confluence。三个月后,一名记者拿出的屏幕截图显示,你的系统对某一人口群体的贷款批准率仅为另一群体的一半——而你发布前的那些数据在技术层面一直都是准确的。

这就是偏差监控的缺口。发布前的公平性测试是根据运行测试时存在的数据集来验证你的模型的。但在生产环境中运行的 AI 系统并不处于那种静态的世界中。用户行为会发生变化,人口分布会产生偏移,特征相关性会演变,而那些在发布时无法衡量的差异可能在几周内演变成严重的失效模式。能够捕捉这些问题的系统,在当今大多数 ML 技术栈中都是缺失的。

LLM 升级的金丝雀发布:为什么模型上线与代码部署的失效方式完全不同

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 CI 通过了。你的评估(evals)看起来没问题。你切换了流量开关,然后继续工作。三天后,一位客户提交了一个工单,称生成的每一份报告都不再包含 summary 字段。你翻阅日志发现,新模型开始稳定地生成 exec_summary —— 这是一个隐蔽的键名重命名,由于你忘记将其添加到发布门禁(rollout gates)中,你的 JSON schema 验证从未捕获到这一点。根本原因是模型升级。检测滞后时间为 72 小时。

这并非假设。在那些拥有复杂应用代码部署流水线,却将 LLM 版本升级视为基本“免费” —— 仅是配置更换而非部署 —— 的公司里,这种情况屡见不鲜。这种思维模型是错误的,由此导致的失败模式极其难以捕捉。

AI 流水线的契约测试:组件间 Schema 校验的交接规范

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数 AI 流水线故障并非模型问题。模型运行正常,输出看起来也是 JSON,但下游阶段却悄然崩溃——原因可能是字段被重命名、类型发生变化,或者嵌套对象新增了一个下游阶段根本不知道如何处理的必填属性。流水线执行完毕并报告成功,而某个数据仓库里的数字已经悄悄出错。

这就是 AI 流水线的契约测试问题,也是生产 AI 系统中最被忽视的可靠性风险之一。根据近期基础设施基准数据,企业 AI 系统平均每月发生近五次流水线故障,每次解决耗时超过十二小时。主要原因并非模型质量差,而是数据质量和 Schema 契约违规:64% 的 AI 风险存在于 Schema 层。

数据飞轮陷阱:为什么你的反馈循环可能在原地空转

· 阅读需 12 分钟
Tian Pan
Software Engineer

每位产品负责人都听过这个论调:更多用户产生更多数据,更好的数据训练更好的模型,更好的模型吸引更多用户。数据飞轮是复利护城河,这正是AI巨头们能够赢得市场的原因。

这个论调并没有错。但实施几乎总是出了问题。在实践中,大多数数据飞轮都有多个泄漏点——反馈循环看似在运转,实际上却在放大偏差、强化陈旧模式,或者优化一个与真实目标背道而驰的代理指标。构建这些系统的工程师很少知道自己遇到的是哪种泄漏,因为所有泄漏从外部看起来都一样:参与度上升,模型在可测量的指标上持续改进,而系统却在难以归因的方式下变得越来越没用。

这就是数据飞轮陷阱。理解其失败模式,是构建真正有效飞轮的前提。