AI 基建
0%
第十二部分 · 实践与运营 · 第 92 章

生产数据引擎

作者Changkun Ou
阅读时长约 15 分钟

生产数据引擎是一条受治理的证据流水线。它把合格的产品事件转化为服务于明确用途、带版本的数据产品,例如监控质量、调查故障、构建评测集或采集训练样本。它不会把产品流量当作免费的原材料。生产轨迹是对已部署系统带有偏差的观测,而且往往意味着敏感责任。点击、编辑、重新生成、批准或停止等事件都是有用的证据,但不会自动成为标签。

这一区分会改变系统设计。流水线必须判断哪些数据可以采集,在写入存储之前尽量减少数据,保留解释数据所需的上下文,按用途抽样,获取并核验判断,将评测数据与训练数据分开,并发布带有数据沿袭关系的不可变发布版本。模型更新只是可能的消费方之一,而且仍须通过 第 89 章 中的评测门和发布门。

数据工作不是模型开发末尾的文书工作。采集和标注中的小问题会层层放大,最终造成难以定位且代价高昂的故障 (Sambasivan et al. 2021)。数据集文档的作用也在于此:创建者必须让消费方知道数据为何存在、如何采集、包含什么,以及适合哪些用途 (Gebru et al. 2021)。生产环境中的这套规范,应当从产品边界开始落实。

从数据接入契约开始

埋点设计不应从“记录一切”开始。先明确数据需要支持什么决定,再确定作出该决定所需的最少证据。数据接入契约必须在第一个事件写入存储之前,定义什么是合格事件。

契约字段 必须回答的问题
事件身份 哪个稳定的事件标识可用于去重和沿袭追踪?
主体与租户 这次交互属于谁?应采用哪一层隔离边界?
系统上下文 哪个任务版本、模型发布版本、提示词版本、检索版本、工具版本、策略版本和界面版本共同产生了这次体验?
证据与结果 为解释该事件,需要保留哪些输入、输出、工具影响、来源、后续结果及结果延迟?
用途与权限依据 数据的明确用途是什么?允许哪些下游使用?适用时需要什么使用授权或同意?
生命周期 保留期限、删除沿袭关系、访问控制和适用的衍生工件分别是什么?
选择机制 哪项抽样策略选中了该事件?它的纳入概率是多少?

这份契约既是 Schema,也是策略。对于身份缺失、租户未知、缺少使用授权、版本无效,或用途不允许拟议消费方使用的事件,应拒绝或隔离。条件允许时,应在写入存储之前完成数据最小化,并删除或遮蔽敏感内容。加密一份不必要的数据副本,并不能使采集行为变得必要。

系统上下文之所以重要,是因为行为取决于上下文。在模型发布版本 A、提示词版本 7、检索版本 3 和界面版本 2 下发生的重新生成,不能与其中任何组件变更后的相同操作等同看待。第 91 章 在决策边界定义了修正事件。数据引擎会保留这些事件及其上下文,但不会擅自把它们解释成评分。

区分不同类型的证据

数据仓库中有几类对象看起来相似,含义却不同:

  • 行为事件 记录接受、编辑、重新生成、放弃、批准、拒绝、升级或停止等操作。
  • 观测记录 把合格事件与系统上下文,以及接入契约允许使用的后续结果连接起来。
  • 标注 记录人或机器对一份带版本的任务规格所作的回答。适用时,它还要保留标注者身份或类别、时间戳、准则版本,以及置信度或弃权信息。
  • 裁定标签 是通过既定质量流程后得到的最终答案。一致不等于真值:审查者可能因为共同遵循了错误指令,或共同缺少关键证据而得出一致结论。
  • 数据产品 是面向特定用途、不可变的观测记录、标注或标签发布版本,附有清单、沿袭关系、质量结果和允许的消费方。

把这些对象分开,可以避免一种看似方便却无效的捷径。用户接受答案,可能因为答案正确,也可能只是因为它够方便,甚至用户从未认真查看。会话中途结束,可能说明答案很差、问题已经解决、用户受到打断,或界面响应太慢。编辑只表明修改前后的工件存在差异,并不能说明用户为何修改。这些信号可以帮助确定调查优先级,但真值必须来自针对具体任务的结果或合格判断。

图 92.1 展示了这条流水线。最后一道门说明模型变更会影响未来的曝光分布,但系统中不存在自动训练并部署的闭环。

engine event 合格的产品事件 及系统和曝光上下文 intake 最小化并授权 校验数据接入契约 event->intake sample 按明确用途抽样 记录纳入概率 intake->sample judge 标注并裁定 保留准则和裁判版本 sample->judge split 稳定分区 审计 / 评测 / 训练 / 隔离 judge->split release 带版本的数据产品 清单、沿袭关系和质量门 split->release consumer 明确的消费方 监控 / 诊断 / 评测 / 训练 release->consumer gate 确认候选版本合格 离线评测和受控发布 改变未来曝光 consumer->gate 只有模型发生变化时
图 92.1. 一条受治理的生产数据流水线。合格事件先经过最小化与授权校验,再按明确用途抽样,必要时接受标注,随后进入稳定分区,并发布为带版本的数据产品。训练只是受门控的消费用途之一,并非每个事件的终点。

按问题选择抽样方法

一种抽样器无法服务所有用途。应当为不同用途维护独立的数据流和预算:

数据流 选择设计 正确用途 主要注意事项
代表性监控 概率样本,通常按预先声明的切片分层 估计合格总体中的质量与安全水平 每个合格单元都必须有已知且为正的入样概率
诊断发现 错误聚类、新颖性搜索、不确定性、分歧或目标切片 发现故障机制和困难个案 不是代表性样本,也不能用于估计总体
训练数据采集 覆盖缺口、预期学习价值、弱监督和去重 构建候选训练发布版本 选择策略会改变训练分布
事件接入 严重程度触发条件,以及用户或运营人员报告 遏制、调查并复现伤害 保留证据、访问限制和事件处置流程

这些数据流不能混在一起报告。富集了困难样本的队列很适合诊断,但它未经调整的失败率不能描述服务总体。反过来,代表性监控可能会把许多标注预算用在普通个案上,因为这些个案本来就是待估计数量的一部分。这是测量,不是浪费。

如果监控采用不等概率抽样,就必须保留每个事件的纳入概率。设合格总体包含 NN 个事件,概率样本为 ss,事件 ii 的观测结果为 yiy_i,纳入概率为 πi=P(is)\pi_i = P(i \in s),则总体均值的 Horvitz-Thompson 估计量为 (Horvitz and Thompson 1952):

μ^HT=1Nisyiπi.\widehat{\mu}_{HT} = \frac{1}{N}\sum_{i \in s}\frac{y_i}{\pi_i}.

其中,NN 是测量窗口内的合格事件数,ss 是实际抽中的事件集合,yiy_i 是事件 ii 的测量值,πi\pi_i 是该事件已知且为正的入样概率。相应的逆概率权重是 1/πi1/\pi_i。这个估计量无法修复错误的合格规则、依赖未观测质量的结果缺失,或未知的选择策略。结果延迟和无响应也需要各自的测量方法。

把主动学习用于采集,而不是测量

主动学习可以把稀缺的审查资源投向预计对学习器有用的样本 (Settles 2009)。不确定性抽样只是其中一种方法,并不等于主动学习的全部。团队也可以根据预期模型变化、多样性、新颖性、错误聚类或切片覆盖率来选取样本。每种方法都隐含着不同的价值定义。

这些方法有明确的局限。模型不确定性可能没有校准。高不确定性队列可能过度选择离群样本,同时漏掉置信度很高的错误。对于生成式回答,多次采样之间的分歧是一项诊断特征,不是经过校准的错误概率。共识也可能出错,而且判断两个自由形式的答案在语义上是否等价,本身也可能需要人工判断。必须保留独立的代表性审计样本,使采集策略不能给自己的发现打分。

弱监督可以通过程序化标注函数扩大候选训练集 (Ratner et al. 2016)。其标签模型依赖有关标注函数准确性和标注函数之间的依赖关系的假设。相关规则可能反复产生同一种错误,看起来却像是获得了多张独立选票。应将这些函数版本化,测试它们的覆盖率与冲突,并把输出与留出的人类审计样本比较。弱标签可以作为发布流程的输入,但不会自动成为去噪后的真值。

把标注作为生产服务运行

“人类反馈”这个说法掩盖了背后的社会技术系统。优化器看不到为澄清模糊指令而发生的对话,只看到最终标签。因此,尽管执行标注的人不是模型,标注运营本身仍会影响模型行为。

一套可信的标注运营至少包括:

  1. 一份带版本的任务规格,其中说明范围、定义、反例和证据要求,并提供弃权或升级选项。
  2. 核验标注者资格,包括领域和语言能力;随后让标注者在带有答案解释的校准集上练习。
  3. 植入式质量检查、对概率样本进行盲法重复标注,以及与生产评分保持独立的切片级审计。
  4. 处理分歧和准则缺陷的裁定流程。一致性指标衡量的是一致程度;裁定与外部结果才用于判断有效性。
  5. 一套受运营管理的队列,包含优先级、队列中最久等待时间、吞吐量、服务水平目标、审查者疲劳控制和有界升级路径。

当这些决定没有被记录时,往往就会引发数据级联问题 (Sambasivan et al. 2021)。基准数据中的标签错误也说明,即使数据集已被广泛使用,也不能免于审查 (Northcutt et al. 2021)。应按任务、准则版本、标注者群组、语言和其他重要切片,追踪错误估计及其不确定性。不要只根据标注者与多数意见的一致程度对其排序,因为多数意见本身也可能错误。

机器判断也需要同样的规范

AI 反馈可以降低成本和延迟。InstructGPT 展示了如何使用人类偏好数据进行训练 (Ouyang et al. 2022);Constitutional AI 则展示了主要依靠成文原则和 AI 反馈进行监督的流程 (Bai et al. 2022)。这两种设计都不能保证判断来源永远正确。

记录机器标注时,应保留裁判模型、裁判提示词、解码设置、策略或评分规则版本、输入证据、输出和弃权信息。应在留出样本上进行专家校准,按切片检查分歧,并规定哪些情况必须由人复核。机器标注不是真值。更换裁判版本,相当于换用新的测量工具;在比较跨时间的分数之前,必须先做衔接研究。

下层约束

流水线上方的消费方决定下方需要什么证据契约。代表性服务指标需要概率抽样。回归测试套件需要冻结且独立核验的个案。第 19 章 中的 基于人类反馈的强化学习(RLHF) 需要与评分规则和裁判人群关联的偏好数据。第 28 章 中采用可验证奖励的训练,需要记录每项结果的验证规则。因此,服务层必须采集版本和曝光上下文,但只能在接入时定义的用途与数据权利范围内采集。训练需求本身不能授权数据采集。

查看内容之前先分配数据分区

同一个事件不能既作为训练样本,又作为训练有效的证明。应使用不可变的分区盐值和稳定的事件身份,在查看内容或结果之前完成稳定分配。典型去向包括:

  • 监控与审计,用于代表性测量和独立质量检查。
  • 回归评测,用于保存能够约束未来发布版本的合格个案。
  • 训练与弱监督,用于保存候选样本和程序化标签。
  • 隔离区,用于存放权限缺失、记录损坏、疑似投毒、事件未解决或违反 Schema 的数据。

系统有时还需要实体级分组。身份不同的两个事件,仍可能包含同一次对话、同一份文档、同一用户或同一生成内容的不同变体。应跨分区检查精确重复和语义重复,并记录和阻止分区冲突。一旦某个个案已经影响模型或提示词开发,再把它移入所谓的留出集,就会造成自适应泄漏。

下面这段无外部依赖的代码演示确定性分配。在真实系统中,分区盐值是受访问控制的发布参数,相关实体会在哈希之前分组。

import hashlib


def stable_partition(event_id, split_salt, eligible=True):
    """Assign an event before its content or outcome is inspected."""
    if not eligible:
        return "quarantine"

    key = f"{split_salt}:{event_id}".encode("utf-8")
    bucket = int.from_bytes(hashlib.sha256(key).digest()[:8], "big") % 10_000
    if bucket < 1_000:
        return "monitoring-and-audit"
    if bucket < 2_000:
        return "regression-evaluation"
    return "training-and-weak-supervision"


purpose = stable_partition("event-0042", "split-policy-v3")
assert purpose == stable_partition("event-0042", "split-policy-v3")
assert purpose in {
    "monitoring-and-audit",
    "regression-evaluation",
    "training-and-weak-supervision",
}
assert stable_partition("event-0042", "split-policy-v3", eligible=False) == "quarantine"

把一次故障转化为合格测试

生产故障只是线索,而不是现成的评测个案。将它提升到 第 52 章 所述的测试套件之前,需要完成以下工作:

  1. 最小化并清理 轨迹。删除无关的个人信息或秘密信息,同时保留故障机制。
  2. 复现 行为。在受控测试工具中复现问题,并记录模型、提示词、检索、工具、策略和界面版本等上下文。
  3. 裁定 失败内容、当时可用的证据,以及预期行为是否有效。
  4. 冻结预期行为,并选择恰当的抽象层级。当多种回答均可接受时,应优先固定属性或结果,而不是脆弱的精确字符串。
  5. 保留来源与独立性。在评测清单中保存来源信息和独立性,并防止该个案及其近似变体进入训练。

只有当最终测试仍然有效、可观测且被强制执行时,它才是持久的保护措施。过期测试可能固化已经废止的策略;脆弱测试可能拒绝合理改进;团队也可能针对可见测试套件过拟合,或无视失败的门控。因此,提升测试时除了追求长期保留,还必须规定负责人、审查日期和退役条件。

让数据权利传递到每个衍生物

数据引擎继承 第 59 章 中的隐私和来源责任。删除沿袭关系必须把一个原始事件连接到策略允许删除的每一项衍生特征、标注、标签、评测个案、数据集分片和训练工件。删除请求应触发可审计的工作流,其中记录负责人、截止时间、受影响的发布版本、完成证据,以及任何合法例外的明确说明。

用途限制必须随衍生物一起传递。有权访问原始事件,并不意味着可以把它放入训练语料、发送给外部标注者,或永远保留在评测个案中。应在每个提升边界执行使用授权,而不只是在采集时检查。数据集发布版本还应列出允许的消费方,以便发现未声明的复用。隐藏的数据依赖和未声明的消费方,是生产机器学习系统中反复出现的技术债来源 (Sculley et al. 2015)。

安全控制也属于这一层。系统应去重重试事件、验证事件来源、限制公开反馈的速率、隔离租户密钥、扫描注入的秘密信息,并隔离疑似投毒反馈。用户报告是重要证据,但不是可信代码,也不是可信标签。

衡量反馈回路,而不只是数据集

系统部署会改变接下来可能出现的证据。推荐会改变用户看到的内容,拒绝会改变用户接下来的尝试,缓慢的回答会改变用户是否愿意等待。这就是施为性反馈效应:已部署系统参与塑造自己日后观测到的分布 (Perdomo et al. 2020)。

应记录曝光记录、处理分配、模型发布版本和服务策略版本。如果策略以概率方式选择行动,还应保留它的倾向概率,也就是该策略选择该行动的概率。缺少曝光上下文时,未发生点击无法解释,因为用户可能根本没有看到对应选项。

前后对比不能确立因果关系。总体、界面、季节或同期策略也可能发生变化。在伦理和实践允许时,应使用随机留出组、分阶段实验或有充分理由的反事实设计。除了目标结果,还要监控保护指标。如果无法开展实验,就应明确结论只是较弱的观察性主张,并说明可能的混杂因素。

有用的运营指标应覆盖整条流水线,而不是只庆祝数据行数增加:

  • 合格事件覆盖率、Schema 拒绝率、去重率、敏感信息遮蔽率和未知版本率;
  • 带不确定性的代表性逆概率加权质量,以及切片覆盖率;
  • 采集产出率、新颖性、重复率,以及与受保护评测分区的重叠;
  • 标注分歧率、裁定率、盲法重复标注错误率、弃权率、队列等待时间、服务水平未达标次数和审查者工作负荷;
  • 删除完成延迟、未经授权的使用尝试和未解决的沿袭关系;
  • 下游评测变化、发布保护条件和实验结果。

没有任何单项指标能够认证这台引擎。高标注一致率可能与错误的评分规则同时存在;快速处理队列可能以审查者疲劳为代价;更大的数据集也可能覆盖得更差。

发布数据产品,而不是可变表

候选发布版本会经历明确的状态:采集、校验、整理、分配、标注、确认合格、冻结、发布、监控,以及废弃或删除。发布会生成不可变清单。后续修正必须生成新版本,不能悄悄修改早期模型已经使用的数据。

发布之前,应通过场景测试演练流水线如何处理:

  • 重复事件,以及载荷冲突的重试事件;
  • 缺少使用授权、删除请求和未经授权的消费方;
  • 结果过期,或结果被错误关联到另一次曝光;
  • 抽样器中断、纳入概率错误和切片覆盖偏差;
  • Schema 漂移、标注者漂移和未经审查的准则变更;
  • 未经专家校准的裁判版本变更;
  • 分区冲突、近似重复泄漏和自适应泄漏;
  • 投毒反馈、对抗性指令和跨租户记录。

生产数据发布记录是交接工件,其中应列明:

  • 发布身份、负责人、用途、时间窗口和不可变清单;
  • 接入 Schema、合格规则、版本、来源和来源计数;
  • 抽样策略、纳入概率、分区规则和分区盐值标识符;
  • 标注规格、人员队伍或裁判版本、质量结果、裁定策略和未解决的局限;
  • 使用授权、允许的消费方、访问控制、保留期限、删除沿袭关系和已完成的数据权利与隐私审查;
  • 场景测试结果、泄漏检查、已知事件和回滚或撤回流程;
  • 与精确发布版本关联的下游评测、实验和部署决定。

第 6 章 说明如何为训练准备数据集,第 23 章 说明如何生成候选样本。本章介绍的引擎负责管理进入这些流程的线上证据。下一章会补充成本、服务水平、所有权和租户边界方面的运营契约。因此,可靠的生产反馈回路不是产品收割用户数据,而是一个证据系统,其用途、不确定性、数据权利和发布决定都可以接受审查。

争议所在
  • 应让多少生产流量进入训练? 更多流量可以提升数据新鲜度,也可能放大当前模型的盲区和产品现有用户构成的偏差。合适的比例取决于覆盖证据和独立测量的结果。
  • 何时应让机器判断机器? 机器判断可以扩大规模并提高一致性,专家审查则能暴露模型共有的盲区。两者结合很常见,但可接受的校准误差和升级率取决于具体领域。
  • 一个评测个案应保留多久? 永久测试套件有助于保存系统记忆,但旧个案也可能固化过时策略并持续消耗注意力。个案退役必须有证据和带版本的决定,不能静默删除。

延伸阅读

  • Sambasivan et al., ““Everyone wants to do the model work, not the data work”: Data Cascades in High-Stakes AI” (数据工作被低估的代价), 2021. doi.org
    Sambasivan 等记录了高风险 AI 中的数据级联:上游数据问题会复合成严重的下游模型失效。
  • Northcutt et al., “Pervasive Label Errors in Test Sets Destabilize Machine Learning Benchmarks,” 2021. arXiv:2103.14749
    该论文发现 10 个主流机器学习基准测试集中平均存在 3.3% 的标注错误,这些错误可颠覆模型排名并破坏评测的稳定性。
  • Settles, “Active Learning Literature Survey,” 2009. minds.wisconsin.edu
    这篇综述梳理了主动学习的查询策略、假设、评估方法,以及选择标注样本时的实际考虑。
  • Ratner et al., “Data Programming: Creating Large Training Sets, Quickly” (弱监督), 2016. arXiv:1605.07723
    数据编程让用户编写带噪声的标注函数替代手工标注,通过生成式模型对输出去噪,从而以程序化方式快速构建大规模训练集。
  • Ouyang et al., “Training Language Models to Follow Instructions with Human Feedback” (循环所假定的人类打分者), 2022. arXiv:2203.02155
    InstructGPT 先使用标注者示范训练,再使用偏好排序和强化学习;最终助手行为反映的是整条流程,而不是单独的监督微调。
  • Bai et al., “Constitutional AI: Harmlessness from AI Feedback” (把性情挪进模型), 2022. arXiv:2212.08073
    Constitutional AI 通过成文原则、自我批判、修订与 AI 反馈,训练无害但不过度回避的助手行为。

评论

登录后评论