一人工程 · solus opus

← 全部作品

essay一人工程DPO少数据对齐

700 个偏好就能 ship

simedw 的 DPO 训练只用了 700 个偏好例数,跑了 12 分钟。预训练 125M 模型用了半天。一人工程的少数据哲学——700 个偏好也能 ship,不需要 OpenAI 的百万例数。

700 个偏好就能 ship

HN 评论里 arkmm 问训练成本,simedw 回答: 「For DPO I only had around 700 preference examples, so not much data at all. That took about 12 minutes to train on a single GPU. Pretraining was obviously a a lot slower, the 125M model took roughly half a day.」

700 preference examples。 12 minutes。 单 GPU。

simedw 用 700 个偏好数据训了 DPO。 iOS app 上的 Piano RollTab 用了这个 DPO 模型。

OpenAI 的 DPO 数字

OpenAI / Anthropic 的对齐训练数据:

  • RLHF 偏好数据:百万级
  • Constitutional AI:几十万条原则
  • DPO 偏好数据:几十万到百万

OpenAI 训练一个 DPO 模型:

  • 偏好数据:1M+
  • 训练时间:几天到几周
  • GPU:几百张 H100
  • 成本:百万美元级

simedw 的 DPO 数字

simedw 的 DPO:

  • 偏好数据:700 例
  • 训练时间:12 分钟
  • GPU:单卡
  • 成本:电费(自己机器上跑)

数字差 1000 倍。 结果差多少?

700 个偏好能做什么

simedw 的 700 个偏好能做:

  • 把模型的「续写倾向」从随机偏向「接 prompt 的连续」和「避免重复」
  • iPhone 上用户弹了 8 个音,模型续写的质量明显提升
  • 自动指标「continuation 跟 prompt 的接续度」从 30% → 69%

700 个偏好。 4 行数字。 一次训练的产物。

为什么 700 个够

700 个够的原因不是「OpenAI 错了」。

是「少数据 + 自评」的特殊组合:

  • simedw 自己听 30 分钟
  • 给每个续写打「好/不好」
  • 攒到 700 个
  • 训练 12 分钟

OpenAI 做不了:

  • 招 1000 个标注员
  • 每人听 30 分钟
  • 每人给 700 个打分
  • 1000 × 700 = 700,000 个偏好

这是 OpenAI 的「人多」策略。

simedw 的策略是「人少」:

  • 自己听
  • 自己打
  • 自己训练
  • 12 分钟出结果

trade-off:

  • OpenAI:数据多 + 通用
  • simedw:数据少 + 自评

少数据的好处

少数据的隐含好处:

  • 没有「标注员审美污染」
  • 一个人听 + 一个人打 = 一致的品味
  • 模型学的是「simedw 喜欢什么」

OpenAI 的 DPO 模型学的是「1000 个标注员平均喜欢什么」。 simedw 的 DPO 模型学的是「simedw 喜欢什么」。

两个模型的「好听」定义不同。 两个模型的「好听」都对自己的用户有效。

一人工程的少数据哲学

不是「数据越多越好」。

是「够 ship 就够」。

simedw 的判断标准:

「iPhone 上弹 8 个音,模型续写的质量能让用户觉得好玩。」

不是「超过 GPT-2」。 不是「打败人类钢琴家」。

是「让用户觉得好玩」。

一个标准够低 → 数据够少 → 训练够快 → ship 够快。

少数据哲学的代价

少数据的代价:

  • 模型只能服务「像 simedw 的审美」的用户
  • 不能服务「所有人」
  • scale up 时会撞墙

但 simedw 不 scale up。 simedw 只服务 iPhone piano 用户。

这是「一人工程」的核心:

知道自己服务谁。 知道自己不服务谁。 用 700 个偏好服务该服务的人。

签名:solus opus。