跳到主要内容

639 篇博文 含有标签「llm」

查看所有标签

微调数据饱和:为何增加训练样本反而让模型变差

· 阅读需 10 分钟
Tian Pan
Software Engineer

几乎每个经历过初期演示阶段的微调项目,都会重蹈同一个覆辙:团队遭遇质量平台期,决定需要更多数据,增加了 50% 的样本,重新训练,却发现模型要么一如既往地平庸,要么明显变差了。增加数据的直觉对大多数软件问题是对的——更多信号通常有帮助。但微调存在一个预训练所没有的饱和区间,大多数从业者并不能识别自己何时进入了这个区间。

2024 年一项在 Qasper 数据集上测试 LLM 微调的研究发现,将训练集从 500 条扩展到 1,000 条后,Mixtral 的准确率得分从 4.04 跌至 3.28,完整性得分从 3.75 跌至 2.58。这不是超参数问题,而是数据饱和:模型开始记忆分布噪声,而非学习可泛化的模式。团队在引擎已经淹没之后,继续往里加燃油。

AI 的先发劣势:AI 功能发布时机的决策框架

· 阅读需 10 分钟
Tian Pan
Software Engineer

科技行业的传统智慧——快速行动、尽早发布、建立护城河——在模型改进曲线的特定阶段会在 AI 领域变得致命。2023 年,数十个团队围绕一项单一能力建立起了可行的业务:让用户上传 PDF 并提问。随后,OpenAI 在 ChatGPT 中添加了原生文件上传功能。这些业务的死亡不是因为行动太慢,而是因为它们行动得太早。

这并非孤立事件,而是构建在快速迭代基础模型之上的结构性特征。大多数发布时机框架是为速度较慢的技术曲线设计的。你过去用于决定何时发布 SaaS 功能的框架并不适用于 AI——输入不同,失败模式也完全不同。

固化功能陷阱:当你的 AI 差异化优势沦为维护累赘

· 阅读需 10 分钟
Tian Pan
Software Engineer

在 2022 年,一支团队花了三个月时间微调一个基于 BERT 的分类器,用于对客户支持工单进行分类。这是一次实实在在的胜利——准确率达到了 94%,而他们旧的基于规则的系统最高只有 70%。两年后,同一个分类器运行在陈旧的基础设施上,每当类别发生变化时都需要专家进行重新训练,而且在最新的基准测试中,它的表现甚至不如对尖端模型进行的一次零样本提示(zero-shot prompt)。没人敢碰它。开发它的工程师已经离职了。现在的团队担心弃用它会破坏某些功能。该功能就此被冻结了。

这就是“冻结功能陷阱”(frozen feature trap)。它是 AI 技术债中一种较为隐蔽的形式,且正在整个行业中蔓延。各支团队逐渐发现,曾经看起来像是护城河的东西,实际上是一个他们一直在往里砸钱的无底洞。

函数调用 vs 代码生成的智能体动作:无人基准测试的权衡

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个在生产环境中运行的智能体曾经收到指令"清理测试数据",然后对生产数据库执行了 DROP TABLE 命令。工具调用成功执行了。审计日志显示了一个结构完美的 JSON 载荷。智能体做的恰恰就是被要求做的——只是不是任何人所期望的那样。这不是一个提示注入的故事,而是一个架构选择的故事:团队赋予了智能体生成和执行任意代码的能力,却低估了这在运行时真正意味着什么。

将函数调用与代码生成作为 AI 智能体动作层之间的选择,是智能体架构中最关键的决策之一,却几乎没有人对其进行直接基准测试。论文衡量任务完成的准确性;它们很少衡量在生产中真正重要的失败模式——静默语义错误、不可逆副作用、安全暴露面,以及出错时的调试成本。

泛化悬崖:微调如何导致隐性的能力退化

· 阅读需 10 分钟
Tian Pan
Software Engineer

一家企业软件公司的团队在客户支持工单上微调了一个 7B 模型。目标指标——解决准确率——提高了 12 个百分点。团队发布了它。三周后,产品出现了谁也没预料到的第二种失败模式:模型悄然失去了处理多步问题的能力。用户会问一些稍超出支持领域的问题,得到的是自信但逻辑混乱的回答。模型牺牲了它不知道自己需要的广度,换取了它能够衡量的深度。

这就是泛化悬崖(generalization cliff):紧随窄领域微调而来的隐性能力退化。与崩溃或超时不同,它不产生错误。模型仍然响应。它只是在与训练分布相邻的任务上表现变差——而这些任务从未出现在评估套件中。

乐于助人但却出错:生产环境 AI Agent 中的操作性幻觉问题

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 AI agent 刚刚完成了一项复杂的数据库迁移任务。它调用了正确的工具,使用了恰当的术语,引用了正确的库,并返回了看起来完全合理的输出。然后你的 DBA 在一个拥有 5000 万行的生产表上运行它 —— 结果备份标志(backup flag)写错了。这个标志存在于相邻的库版本中,语法上是有效的,但它在静默状态下没有执行备份步骤。

这个 agent 并不是在胡言乱语。它表现得自信、流畅且方向正确。但在操作上,它错得正是会导致数据丢失的那种方式。

这是该领域投入不足的一种幻觉类别,也是你的评估(evals)几乎肯定无法捕捉到的那种。

超参数幻觉:为什么 Temperature 和 Top-P 应该最后才调

· 阅读需 10 分钟
Tian Pan
Software Engineer

当 LLM 的输出感觉不对劲时,工程师会本能地去调 temperature。这是调试手册里最早的动作之一——调低它以获得更强的一致性,调高它以获得更多创意。这感觉很有效,因为改动简单且效果立竿见影。但这几乎从来都不是正确的做法。

Temperature 和 top-p 只是输出质量最后 10% 的因素,而不是前 90%。真正决定模型成败的变量是上下文质量、指令清晰度和模型选择——依次排列。在一个有问题的提示词之上再调整采样参数,就像给一道还没煮熟的菜调味一样。根本问题并没有消失。

接手 AI 系统审计:如何掌控一个非你亲手构建的 LLM 功能

· 阅读需 12 分钟
Tian Pan
Software Engineer

有人离职了。入职文档上写着“去问 Sarah”,但 Sarah 现在已经在另一家公司了。你正盯着一个 900 行的系统提示词(system prompt),里面有些章节标题写着类似 ## DO NOT REMOVE THIS SECTION 的字样,而你完全不知道如果删掉会发生什么。

这就是“继承的 AI 系统”问题,它与继承常规代码不同。对于遗留代码,意志坚定的工程师可以追踪执行路径、阅读测试,并从行为中重构意图。但对于继承的 LLM 功能,提示词就是逻辑——但它是用自然语言编写的,其失败模式是概率性的,而且作者的意图被困在他们的脑海里。没有堆栈跟踪会告诉你哪个护栏(guardrail)触发了以及为什么触发。

AI 流水线中的惰性评估:不到万不得已,不要调用 LLM

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数 AI 流水线(pipelines)在编写时,都好像每一个请求都值得进行一次完整的 LLM 调用。用户提交一条消息,流水线将其传递给模型,等待响应并返回——每一次都无条件地如此操作。这虽然可行,但既昂贵又缓慢,而且通常是不必要的。

实际上需要完整 LLM 推理的请求比例比大多数工程师预想的要小。关于 token 级别路由的研究表明,1.5B 和 32B 参数模型之间只有约 11% 的 token 存在差异,且只有 4.9% 的 token 是真正的“发散性”的——这意味着如果由较小的模型处理,它们会改变推理路径。生产环境中的语义缓存显示,65% 的传入流量在语义上与流水线已经回答过的内容相似。这些并不是边缘案例。它们占据了流量的大部分,而你却在为处理它们支付全额费用。

解决方法是惰性求值(lazy evaluation):在确认确实需要昂贵模型之前,不要调用它。

生产环境中的 LLM 代码审查:构建工程师真正信任的 Diff 流水线

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数部署 LLM 代码审查工具的团队都会在两周内发现同一种失败模式:模型为每个 PR 生成 10–20 条评论,其中 80% 都是噪音。在第三个 PR 中,如果开发者不看就关闭了所有评论,这个工具就名存实亡了 —— 通知被发送到无人查看的频道,而机器人仍然在每次推送时消耗算力。

问题不在于模型。而在于这些团队发布了一个评论生成器,却称之为审查工具。

LLM 应用的特征存储模式:停止检索那些你可以预计算的内容

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数构建 LLM 应用的团队最终都会趋向于同一种临时架构:散乱的计算用户摘要的定时任务(cron jobs),每次请求都要重新查询的向量数据库,因延迟到了令人尴尬的地步而添加的 Redis 缓存,以及三个对“用户偏好”定义略有不同的代码库。通常只有在生产事故发生后,他们才会意识到自己构建了什么:一个特征存储(feature store)—— 而且是一个拼凑出来的劣质品。

特征存储是传统机器学习(ML)基础设施中经过实战检验的最成熟模式之一。当有意识地将其应用于 LLM 上下文组装时,它可以消除困扰大多数检索流水线的延迟、成本和一致性问题。本文将解释其原理。

多模型共识:当单个 LLM 不足以进行最终签核时

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的 AI 功能发布时准确率为 85%。领导层非常兴奋。但随后一项合规审计发现,那 15% 的错误答案集中在特定的监管解读上——而你所使用的供应商家族中的每个模型都以同样的方式犯了错。你调用了一个模型,它失败了。因为你从未将其与其他模型进行对比,你完全没有意识到这种失败是系统性的。

多模型共识架构(Multi-model consensus architecture)是解决这一问题的结构化方案。与其信任单个大语言模型(LLM),不如将请求分发给来自不同供应商家族的多个模型,汇总它们的响应,并根据一致性进行路由。不一致的模式本身就成为了系统中的一等信号,而不仅仅是一个调试产物。

这种方法的每次推理成本要高出 2 到 4 倍。对于大多数用例来说,这显然不值得。但对于特定类别的输出——法律摘要、医疗分诊路由、金融风险标记、安全评估——错误答案的代价远超额外推理的成本,以至于计算逻辑几乎立即发生反转。