跳到主要内容

你的标注流水线才是 AI 产品的真正瓶颈

· 阅读需 12 分钟
Tian Pan
Software Engineer

每个开发 AI 产品的团队最终都会发布一个反馈组件。点赞、点踩、或者星级评分,又或者是修正字段。组件上线了,数据流转了,但随后几周甚至几个月,模型却没有任何改变——而团队仍然坚信他们拥有一个有效的反馈闭环。

组件只是简单的部分。其背后的标注流水线(annotation pipeline)才是 AI 产品真正陷入停滞的地方。

这通常不是工具问题或资源问题,而是一个基础设施的优先级排序问题(infrastructure sequencing problem)。团队首先构建数据捕获层,因为它可见且易于演示。而下游机制——Schema 版本控制、标注者间一致性(inter-annotator agreement)跟踪、路由、队列管理、重训练触发器——则由于在出问题前不可见,而在一个又一个 Sprint 中被降低优先级。等到团队意识到反馈在数据库中过期未用时,数周甚至数月的生产信号已经变得无关紧要。

捕获与改进之间的鸿沟

考虑一个典型的轨迹。一个团队发布了一个 LLM 功能。他们添加了点赞/点踩组件并进行了仔细的埋点。一周内,他们收到了数千个负面信号。六周后,模型依然没有变化。

这期间发生了什么?通常情况是这样的:一位数据科学家将反馈导出到电子表格中,发现标签定义模糊(点踩是指“事实错误”还是“不符合我的需求”?),在 Slack 中发起了讨论,接着被卷入其他工作,讨论便冷了下去。数据在那儿积压。新的反馈在旧反馈之上堆积。最终有人提出了标注 Schema,但第一个 Schema 与原始反馈的存储方式不兼容,导致历史数据无法使用。循环重新开始。

这种模式具有可衡量的成本。研究一致表明,91% 的 ML 模型性能会随着时间的推移而下降,而陈旧的标注——即在不同的数据分布下或针对早期标签 Schema 收集的标注——在三到六个月内会变得对模型质量产生实质性损害。在该窗口期内未被路由、审核和合并的反馈不仅是被浪费了,甚至可能会降低它本应改进的模型的性能。

为什么标签 Schema 版本控制会破坏下游的一切

标注 Schema 是人类反馈与模型训练之间的契约。当它发生变化时——在快速更迭的产品中,这种情况经常发生——每一个依赖旧 Schema 的下游系统都必须进行协调。

问题在于,Schema 的更改几乎从未像代码更改那样被严格跟踪。一个标签从二元(“有用 / 无用”)变为四级量表;季度中期增加了一个新的意图类别;一个边缘案例被重新分类。这些变化中的每一个都会在标注历史中产生分叉:更改前收集的数据与更改后收集的数据不具有直接可比性。

管理得当的团队会像对待代码一样对待标签 Schema。他们使用版本标识符,维护可以将历史标注根据新定义重新解释的迁移脚本,并在开启任何新的标注批次前强制执行 Schema 兼容性检查。像 Databricks MLflow 3 这样的平台现在为标注 Schema 提供类似 Git 的版本控制,正是因为这种需求无处不在。Snorkel 的编程式标注(programmatic labeling)方法——将标签定义编码为可执行函数而非自然语言指南——使得追溯性重新标注变得可行:更新标注函数,在历史语料库上重新运行,你就能在无需人工重新标注的情况下获得一份协调一致的数据集。

不这样做的团队会发现自己无法整合跨不同产品版本收集的反馈,这实际上意味着每当产品演进时,他们的训练数据都会“清零”。

标注者间一致性(Inter-Annotator Agreement)不是一次性检查

大多数标注工作流仅在初始设置阶段计算一次标注者间一致性(IAA),作为健全性检查(sanity check)。这是错误的频率。

IAA 衡量人类标签的一致性——即两个独立的标注者对相同输入达成一致的频率。Cohen's Kappa 修正了两个标注者之间的随机一致性,适用于二元和定类标签。Krippendorff's Alpha 则能同时处理多个标注者,并适用于定序和定距数据,使其更适合主观质量评分。这两个指标现在都已内置在 Prodigy 和 Datasaur 等标注平台中。

问题不在于计算 IAA,而在于是否持续计算。随着标注队列的增长,新标注者的加入,指南因非正式解读而产生偏差,以及输入分布的变化。一个在第一个月测得 0.82 Kappa 的团队,到第四个月可能在不知情的情况下仅以 0.58 Kappa 的水平运行。这种退化的症状表现出来的不是标注错误,而是模型不稳定、无法解释的性能倒退,以及训练运行无法收敛到明显的改进上。

补救措施是每周使用共享校准集(calibration set)进行 IAA 检查:每周让所有标注者独立标注一组固定的输入样本。分歧会触发标注者与工程团队之间的同步会议。这听起来成本很高,但它远比调试一个基于静默退化标签训练的模型要便宜得多。

无人谈论的路由问题

即使反馈被捕获且标签保持一致,数据通常也无法到达能够对其采取行动的人手中。这就是路由问题,它加剧了 Schema 和 IAA 问题。

在大型产品中,反馈涉及多个模型组件。一次简单的用户交互可能包含检索步骤、摘要步骤和格式化步骤,每个步骤由不同的团队负责。对最终输出的“点踩”可能意味着其中任何一个层级出现了故障。如果没有路由——即把反馈信号映射到负责的模型组件的逻辑——反馈就会进入一个无人感到需要负责的通用队列。

有效的路由需要两样东西:一套映射到所有权的失败模式分类体系,以及针对该分类体系对传入反馈进行分类的自动分拣系统。在大规模生产环境下,这绝非人力所能及。运行成熟标注流水线的团队使用分类器模型来路由反馈:一个在过去标记样本上训练的轻量级模型,它学会了区分“这是检索失败”、“这是生成失败”还是“这是格式化失败”。每个类别都会路由到相应模型团队的标注队列中。

在底层模型变好之前,这听起来需要构建大量基础设施。这正是重点所在。推迟建设这些基础设施的团队会将时间花在错误的改进上——当问题出在检索器时,他们却在优化生成器,反之亦然。

队列优先级:并非所有反馈都同等重要

标注队列通常是先进先出(FIFO)的。这是一个错误的默认设置。

并非所有反馈对模型改进都有同等价值。来自新用户的信号不如来自已经形成了“什么是好的输出”的清晰心理模型的核心用户的信号更有参考价值。模型已经处理得很好的边缘案例信号,不如高频失败模式的信号有用。六个月前在不同产品条件下收集的信号,不如上周收集的信号具有时效性。

现代标注平台提供优先级控制——Kili Technology 允许设置每个资产的优先级分数,Labelbox 使用批次级的优先级范围——但它们大多将优先级逻辑留给团队自己处理。做得好的团队会同时实施两种优先级策略:

  • 不确定性采样:将模型置信度最低的输入排在队列顶端。这些示例最能改变决策边界。
  • 影响权重:将高流量输入的反馈排在最前面。对每天出现一万次的查询进行的标注,其价值是对仅出现一次的查询进行标注的一万倍。

结合这两者可以得到一种有原则的排序,从而使每单位标注成本的训练回报最大化。主动学习的研究表明,这种方法可以在不产生可衡量性能损失的情况下,将标注成本降低 40–60%。实施该策略的团队标注得更少,但进步得更快。

反馈过期时钟

人类反馈是有保质期的。这不仅是一个比喻,而是一个具有可衡量后果的实际约束。

在一种数据分布下收集的反馈在另一种分布下可能不再有效。随着产品的演进、用户行为的转变以及模型本身的变化,旧的反馈在代表当前失败模式方面的参考价值会降低。有效窗口因领域而异:对于对话式 AI 产品,六个月通常是上限;对于新闻和金融内容则更短;对于稳定的技术领域则更长。

这意味着标注流水线需要一个“训练转化耗时”指标:从捕获反馈项到该项影响模型权重所经历的时间。跟踪这一指标的团队被迫直接面对重训练节奏问题。如果训练转化耗时始终是四个月,但反馈在三个月内就过期了,那么该流水线在结构上就无法吸收当前的信号。

解决方法并不总是更快的重训练,而往往是更智能的分批处理。优先处理最近的高影响反馈。在固定窗口后使低置信度标注过期。维护一个频繁更新的“新鲜”训练分区和一个每季度更新一次的“稳定”分区。大型 AI 实验室的 RLHF 流水线就是这样运作的:持续的偏好收集进入滚动的训练批次,而不是单次的季度重训练运行。

一个运转良好的标注流水线究竟是什么样的

基础设施差距是真实存在的,但解决方案并不神秘。弥补这一差距的团队通常会实现以下组件:

带有迁移工具的 Schema 注册表。 每个标签 Schema 都有一个版本标识符。Schema 变更需要一个迁移脚本,根据新定义重新解释历史数据。在没有注册 Schema 版本的情况下,不得开启任何标注批次。

持续的 IAA 监控。 所有标注员每周都会对一个包含 100–200 个示例的固定校准集进行重新标注。IAA 分数会被长期跟踪。一旦分数跌破阈值,就会在开启新批次前触发校准会议。

自动路由。 分拣分类器将传入的反馈映射到模型组件的所有权。所有权映射到队列分配。任何反馈都不会落入无人负责的通用队列。

优先级加权队列。 为每个反馈项计算不确定性采样分数和影响权重。队列排序是动态的,而非先进先出。

训练转化耗时 SLA。 团队跟踪捕获反馈项到影响模型权重所需的时间。设定一个服务等级协议(SLA)——例如六周——并将违反 SLA 的情况视为基础设施故障,而非轻微的延迟。

到期强制执行。 标记早于领域适用窗口的标注。训练任务会从新鲜分区中剔除过期的标注。

这些组件在技术上都不复杂。但它们都需要刻意的工程投入,而这些投入通常为了模型实验而被降低了优先级。这种模式在不同团队中反复出现:模型实验之所以可行,是因为标注基础设施已经完善,而不是尽管基础设施破烂不堪仍能进行。

在信号失效前完成闭环

那些能够发布随着时间推移而真正持续改进的 AI 产品的团队,并不是在发布时拥有最强模型的团队。相反,是那些标注流水线能赶在信号失效之前,迅速将生产信号转化为训练改进的团队。

构建反馈组件是显而易见的。但构建下游机制——Schema 版本控制、IAA 追踪、路由、优先级排序、到期强制执行——则是隐形的,直到团队突然意识到数据库中堆积了数月无法解释且不可回收的信号时,其重要性才显现。几乎每个团队都会经历这一时刻。关键在于这一时刻到来的时机:是足够早以至于还能挽救,还是太晚以至于产品的改进轨迹已经永久受损。

标注流水线不是一个辅助系统。它是产品的学习能力。请给予相应的重视。

References:Let's stay in touch and Follow me for more thoughts and updates