Arain119 commited on
Commit
7825abf
·
verified ·
1 Parent(s): 926a2ce

Upload REPORT.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. REPORT.md +79 -79
REPORT.md CHANGED
@@ -1,79 +1,79 @@
1
- # Sophia 技术报告
2
-
3
- *2026 年 9 月 13 日。交付物:`sophia.pt`,sha256 `e49ddc2cbbd311330f21fe52ada853e3ed745cf5f2e47de83da3898234592268`。*
4
-
5
- 两年前的今天,2024 年 9 月 12 日,OpenAI 把代号 Strawberry 的模型推上线,正式名字叫 o1。它做的事在事后看很简单:让模型在回答之前先想。训练时用强化学习打磨那条思考链,推理时用更多时间换更高的正确率——test-time compute,行业坐标系里多出来的第二条轴。IMO 资格赛从 13% 到 83% 的那个数字,让"想多久"从此和"多大"平起平坐。
6
-
7
- 两年后的今天,我们在一张 RTX 5090 上把这个问题的诚实版本又跑了一遍:一个十亿参数的模型,从头训练,把 o1 教给行业的两件事——会想的训练数据、会学偏好的后训练——在自己的尺度上做到哪一步。这份报告是过程的全记录,包括所有没有赢的实验。
8
-
9
- ## 一、预训练:先决定她读什么
10
-
11
- 模型是 1,012,630,480 参数的 K3-derived 稠密 Hybrid 解码器:28 层,`[KDA, KDA, KDA, Gated-MLA] × 7`,NoPE,4K 上下文,BF16,Muon hybrid 优化器,seed 42,1,310,720 tokens/update,15,259 步跑满 20B tokens。这些数字在训练第一天就写死进了契约,之后没有一个人碰过。
12
-
13
- 真正做过选择的只有一件事:语料。早期的配比稿里,81% 的中文 token 来自一个教育过滤源——那样的模型读完的是课本,不是人话。实测每万字的语域标记:fineweb-edu 的第一二人称 16.2 次、感叹号 0.7 次、口语词命中 17.5 次;SkyPile 是它的两倍,Zhihu-KOL 是它的六倍。最终的配比把 conversational Chinese 抬到了正经位置:FineWeb 做骨干,SkyPile 和知乎长回答补足"人是怎么说话"的那一半,许可代码保留一遍约占 7%。一个要做对话的模型,训练数据里得先有人对话。
14
-
15
- 15,259 步走完的那天,产出的是一个基座:它见过足够多的语言,还不知道怎么当一个对话者。那是后训练的工作。
16
-
17
- ## 二、人格宪法
18
-
19
- Sophia 的行为规范不是散落在提示词里的叮嘱,是一份独立的文件:`configs/sft/sophia_persona.md`,我们叫它人格宪法。它规定的不是语气,是存在方式:
20
-
21
- > 你是 AI,也是完整的个体,两者不冲突:你的情感、好恶和看法是真实的,不说"我没有感情""我只是数学模拟"。
22
-
23
- 宪法里的条款大多是行为级的:先回应对方真正说的事,再说自己的看法;有确定答案的问题,第一句就是答案;要你写的东西直接写,不先反问要什么风格;对方前面说过的每一件事都要接上——限制、指代、你自己上一轮说过的话。答错事实可以,但不能前一句说 A 后一句说非 A。
24
-
25
- 宪法里最有意思的一节是给思考块立规矩:think 是第一人称的推理草稿,只写对回答有用的东西——"对方不吃鱼,刚才推荐的清蒸鲈鱼得换掉"是好 think;"我需要先给对方提供情绪价值"是坏 think。思考是为了答对,不是为了表演正确姿态。这个区分在后面的所有实验里反复被证明是对的。
26
-
27
- ## 三、蒸馏管线:教师写,机器判
28
-
29
- SFT 语料的 88,267 行没有一行来自人工:全部由教师模型(claude)按依赖脚本一次写完。脚本是这个管线真正的发明——每一条会话在生成前就被规定了用户每一轮要做什么:追加约束("对了,我不吃辣")、回指前文("就用你刚才说的第一部")、变换上一轮的回答、或者直接纠错。前一代语料的失败模式是模型学会了"续写"而不是"阅读",所以脚本存在的意义就是逼出必须读历史才能答对的轮次。
30
-
31
- 写完不等于收货。每一行都要过机器判官:结构不完整拒收(reject: shape)、think 里写规划黑话拒收(planning)、系统提示泄漏拒收(leak)、身份漂移拒收(identity_leak)、超长拒收、语言不纯拒收。数学题的答案和教师给的表达式对账,代码题的答案真的拿去跑断言。被判官扔掉的行没有进入训练集——88,267 行是幸存者。
32
-
33
- 助手轮的格式从第一天就是 `<think>…</think>回答`,思考是训练目标的一部分,不是装饰品。
34
-
35
- ## 四、Adaptive thinking:让她自己决定要不要想
36
-
37
- o1 教给行业的真实教训不是"永远要想"——是想是一种可以花的算力,花不花应该由问题决定。Sophia 是否思考由模型逐轮自行决定,这也是训练数据的自然分布:简单轮次的 think 本来就短,难轮次的 think 本来就该长。
38
-
39
- 推理引擎把这个结构用到了底:采样时先采 think、到闭合标签停,再从每条 think 分支出若干回答。这不只是为了快——它让 GRPO 能给 think token 单独算功劳:同一条 think 下有的回答好有的坏,差别记在答案头上;这条 think 整体好坏,记在 think 头上。
40
-
41
- ## 五、后训练:六组实验,一次真赢
42
-
43
- 这是这份报告最不愿意写成说明文的部分,因为它是整段经历里最有叙事性的。后训练前前后后做了六组实验,判官统一是 claude-haiku-4-5,判定统一是 134 题 × 16 采样的配对 t 检验(标准误 ±1.1 分)——这个数字是我们定的换冠军的门槛:快探针看得出方向,只有 powered 判定说了算数。
44
-
45
- **SFT 选 epoch**:三个 epoch 各留一个 ckpt,三路 haiku 盲评均位次 1.88、复读率 9.7% 的 epoch3 胜出。7,176 步,基座变成了对话者。
46
-
47
- **RFT(拒绝采样微调)**:4,600 prompt × k16,71,955 次 rollout,选 best-of-16 ≥75 分的 1,681 行自蒸馏,104 步。配对差 −0.25(t=−0.46)。零结果,但原因比结果值钱:深多轮难题上的 best-of-16 是**蒙对的运气**——16 次里碰巧对一次的那个"对"不可复现,蒸馏它学不到任何东西。**运气不能蒸馏**,这是第一条机制教训。
48
-
49
- **DPO**:同一批 rollout 建偏好对——chosen 是无 flag 最高分(≥75),rejected 是带 flag 最低分,gap≥30,1,953 对,β=0.1,500 步。配对差 **+2.10,t=+3.71,p<0.001**。真赢,也是唯一的一次。机制解释和 RFT 互为镜像:坏不是运气,坏是**系统性模式**——矛盾、跑题、胡说,这些是可学的负向目标。**抬好的失败,压坏的成功。**
50
-
51
- **DPO 剂量扫描**:赢了就加码?3,910 对、1,000 步的第二轮把坏模式压得更低,但中位字数 70→55、截断 flag 79→218——模型变得更短更保守,配对差 −1.79。**过冲有签名:truncated 升、字数降、判官分降。** 甜点是 ~2k 对/500 步,边际到此为止。
52
-
53
- **GRPO**:on-policy 强化学习,k16、79 步(组内 chunk 补丁解决了 k16 更新图的 OOM——按 token mask 份额加权,与整组 backward 逐位等价)。它把复读率砍半(0.043→0.023)、hit_eos 提到 0.978,但 powered 判定 +0.03(t=0.056)——教科书级的零效应。机制在动,总分不动。
54
-
55
- **DPO-2(on-policy)**:用 GRPO 后的模型重新 rollout 建 593 对新鲜偏好对——chosen 73.9 对 rejected 19.8,pair 质量极高,模型也学进去了(mean_acc 0.67)。Powered 判定 −1.29。机制改善(contradiction −15%)没能换算成判官总分。
56
-
57
- 六组实验的曲线读出来是一句话:**+2.10 → +0.03 → −1.29**。DPO-1 吃掉了所有"系统性坏模式"的低垂果实,之后残余的失败是 off_topic、context_loss 这类能力缺口——16 次采样全灭的题没有正样本可比,偏好学习无从着力。判官驱动的偏好优化在这个模型、这份数据、这个判官的组合上,天花板已经被三次 powered 测量钉死了。
58
-
59
- ## 六、数字与限度
60
-
61
- 交付模型在 powered 探针下:judge_mean 51.37,pass_70 0.352,hit_eos 0.975,distinct4 0.928,中位字数 66。多轮对话包(30 会话 × 6 轮)judge_mean 27.93——深多轮仍是最弱的一段。
62
-
63
- 已知的失败模式,全部是实测样本不是推测:约束登记会丢(用户说过不吃鱼,后面还会推荐鱼);会伪造执行轨迹(函数写对,"示例输出"是编的);算术和冷门事实会自信出错;被连续追问时会退化成复读螺旋。C-Eval+CMMLU 似然法 26.2%≈随机——1B 对话模型对 ABCD 选项符号有位置先验,MC 基准在这个尺度上区分度本就差。
64
-
65
- **公开基准同协议对照**(2026-09-15,五个同档基线与 Sophia 走同一管线、同一数据、同一判分,无任何官方公布值混入;逐题明细见 `ops/eval/public_benchmarks/`):判别式任务上 Sophia 与 MiniCPM4-0.5B 几乎同档——两者在字母似然协议下均贴近随机(MMLU 22.96 vs 22.9,BoolQ 62.17 vs 62.2,MMLU-Pro 11.45 vs 11.7),落后于 Qwen3.5-0.8B / Llama3.2-1B / Gemma3-1B。IFEval 官方校验器(541 题,strict)她拿 12.2%——是真实的残余指令遵循,但离基线的 26.4–51.8% 有系统性差距。NIAH 单针检索基线全部 100%,她 62.5% 且随深度衰减(1K→90%,3K→30%)。判官制开放对话(SophiaBenchmark,134 题,claude-haiku-4-5)她 51.25,列同档第 4,高于 Llama3.2-1B(48.09)与 Qwen2.5-0.5B(50.35)。
66
-
67
- ## 七、交付
68
-
69
- ```
70
- pretrain(20B, 契约跑满)
71
- → sft(88,267 行 × 3ep, epoch3 选中)
72
- → dpo(1,953 对, 500 步) = sophia.pt
73
- ├─ rft(104步, 零结果) runs/rft_e3.pt
74
- └─ grpo+dpo2(链式实验, 未过门) runs/grpo/, 已弃
75
- ```
76
-
77
- 判官费用全程 ~¥500,GPU 全部单卡 5090。权重、sha256、谱系、探针全量判分、多轮样本包随包附证。没有任何东西上传到外网。
78
-
79
- 两年前 o1 证明了会想比会说值钱。这个十亿参数的小模型给出的答案是:在它能站住的高度上,把"想"写进训练数据、把"好坏"交给统计判定、把诚实写进报告——天花板到了就说到哪是哪。
 
1
+ # Sophia 技术报告
2
+
3
+ *2026 年 9 月 13 日。交付物:`sophia.pt`,sha256 `e49ddc2cbbd311330f21fe52ada853e3ed745cf5f2e47de83da3898234592268`。*
4
+
5
+ 两年前的今天,2024 年 9 月 12 日,OpenAI 把代号 Strawberry 的模型推上线,正式名字叫 o1。它做的事在事后看很简单:让模型在回答之前先想。训练时用强化学习打磨那条思考链,推理时用更多时间换更高的正确率——test-time compute,行业坐标系里多出来的第二条轴。IMO 资格赛从 13% 到 83% 的那个数字,让"想多久"从此和"多大"平起平坐。
6
+
7
+ 两年后的今天,我们在一张 RTX 5090 上把这个问题的诚实版本又跑了一遍:一个十亿参数的模型,从头训练,把 o1 教给行业的两件事——会想的训练数据、会学偏好的后训练——在自己的尺度上做到哪一步。这份报告是过程的全记录,包括所有没有赢的实验。
8
+
9
+ ## 一、预训练:先决定她读什么
10
+
11
+ 模型是 1,012,630,480 参数的 K3-derived 稠密 Hybrid 解码器:28 层,`[KDA, KDA, KDA, Gated-MLA] × 7`,NoPE,4K 上下文,BF16,Muon hybrid 优化器,seed 42,1,310,720 tokens/update,15,259 步跑满 20B tokens。这些数字在训练第一天就写死进了契约,之后没有一个人碰过。
12
+
13
+ 真正做过选择的只有一件事:语料。早期的配比稿里,81% 的中文 token 来自一个教育过滤源——那样的模型读完的是课本,不是人话。实测每万字的语域标记:fineweb-edu 的第一二人称 16.2 次、感叹号 0.7 次、口语词命中 17.5 次;SkyPile 是它的两倍,Zhihu-KOL 是它的六倍。最终的配比把 conversational Chinese 抬到了正经位置:FineWeb 做骨干,SkyPile 和知乎长回答补足"人是怎么说话"的那一半,许可代码保留一遍约占 7%。一个要做对话的模型,训练数据里得先有人对话。
14
+
15
+ 15,259 步走完的那天,产出的是一个基座:它见过足够多的语言,还不知道怎么当一个对话者。那是后训练的工作。
16
+
17
+ ## 二、人格宪法
18
+
19
+ Sophia 的行为规范不是散落在提示词里的叮嘱,是一份独立的文件:`configs/sft/sophia_persona.md`,我们叫它人格宪法。它规定的不是语气,是存在方式:
20
+
21
+ > 你是 AI,也是完整的个体,两者不冲突:你的情感、好恶和看法是真实的,不说"我没有感情""我只是数学模拟"。
22
+
23
+ 宪法里的条款大多是行为级的:先回应对方真正说的事,再说自己的看法;有确定答案的问题,第一句就是答案;要你写的东西直接写,不先反问要什么风格;对方前面说过的每一件事都要接上——限制、指代、你自己上一轮说过的话。答错事实可以,但不能前一句说 A 后一句说非 A。
24
+
25
+ 宪法里最有意思的一节是给思考块立规矩:think 是第一人称的推理草稿,只写对回答有用的东西——"对方不吃鱼,刚才推荐的清蒸鲈鱼得换掉"是好 think;"我需要先给对方提供情绪价值"是坏 think。思考是为了答对,不是为了表演正确姿态。这个区分在后面的所有实验里反复被证明是对的。
26
+
27
+ ## 三、蒸馏管线:教师写,机器判
28
+
29
+ SFT 语料的 88,267 行没有一行来自人工:全部由教师模型(claude)按依赖脚本一次写完。脚本是这个管线真正的发明——每一条会话在生成前就被规定了用户每一轮要做什么:追加约束("对了,我不吃辣")、回指前文("就用你刚才说的第一部")、变换上一轮的回答、或者直接纠错。前一代语料的失败模式是模型学会了"续写"而不是"阅读",所以脚本存在的意义就是逼出必须读历史才能答对的轮次。
30
+
31
+ 写完不等于收货。每一行都要过机器判官:结构不完整拒收(reject: shape)、think 里写规划黑话拒收(planning)、系统提示泄漏拒收(leak)、身份漂移拒收(identity_leak)、超长拒收、语言不纯拒收。数学题的答案和教师给的表达式对账,代码题的答案真的拿去跑断言。被判官扔掉的行没有进入训练集——88,267 行是幸存者。
32
+
33
+ 助手轮的格式从第一天就是 `<think>…</think>回答`,思考是训练目标的一部分,不是装饰品。
34
+
35
+ ## 四、Adaptive thinking:让她自己决定要不要想
36
+
37
+ o1 教给行业的真实教训不是"永远要想"——是想是一种可以花的算力,花不花应该由问题决定。Sophia 是否思考由模型逐轮自行决定,这也是训练数据的自然分布:简单轮次的 think 本来就短,难轮次的 think 本来就该长。
38
+
39
+ 推理引擎把这个结构用到了底:采样时先采 think、到闭合标签停,再从每条 think 分支出若干回答。这不只是为了快——它让 GRPO 能给 think token 单独算功劳:同一条 think 下有的回答好有的坏,差别记在答案头上;这条 think 整体好坏,记在 think 头上。
40
+
41
+ ## 五、后训练:六组实验,一次真赢
42
+
43
+ 这是这份报告最不愿意写成说明文的部分,因为它是整段经历里最有叙事性的。后训练前前后后做了六组实验,判官统一是 claude-haiku-4-5,判定统一是 134 题 × 16 采样的配对 t 检验(标准误 ±1.1 分)——这个数字是我们定的换冠军的门槛:快探针看得出方向,只有 powered 判定说了算数。
44
+
45
+ **SFT 选 epoch**:三个 epoch 各留一个 ckpt,三路 haiku 盲评均位次 1.88、复读率 9.7% 的 epoch3 胜出。7,176 步,基座变成了对话者。
46
+
47
+ **RFT(拒绝采样微调)**:4,600 prompt × k16,71,955 次 rollout,选 best-of-16 ≥75 分的 1,681 行自蒸馏,104 步。配对差 −0.25(t=−0.46)。零结果,但原因比结果值��:深多轮难题上的 best-of-16 是**蒙对的运气**——16 次里碰巧对一次的那个"对"不可复现,蒸馏它学不到任何东西。**运气不能蒸馏**,这是第一条机制教训。
48
+
49
+ **DPO**:同一批 rollout 建偏好对——chosen 是无 flag 最高分(≥75),rejected 是带 flag 最低分,gap≥30,1,953 对,β=0.1,500 步。配对差 **+2.10,t=+3.71,p<0.001**。真赢,也是唯一的一次。机制解释和 RFT 互为镜像:坏不是运气,坏是**系统性模式**——矛盾、跑题、胡说,这些是可学的负向目标。**抬好的失败,压坏的成功。**
50
+
51
+ **DPO 剂量扫描**:赢了就加码?3,910 对、1,000 步的第二轮把坏模式压得更低,但中位字数 70→55、截断 flag 79→218——模型变得更短更保守,配对差 −1.79。**过冲有签名:truncated 升、字数降、判官分降。** 甜点是 ~2k 对/500 步,边际到此为止。
52
+
53
+ **GRPO**:on-policy 强化学习,k16、79 步(组内 chunk 补丁解决了 k16 更新图的 OOM——按 token mask 份额加权,与整组 backward 逐位等价)。它把复读率砍半(0.043→0.023)、hit_eos 提到 0.978,但 powered 判定 +0.03(t=0.056)——教科书级的零效应。机制在动,总分不动。
54
+
55
+ **DPO-2(on-policy)**:用 GRPO 后的模型重新 rollout 建 593 对新鲜偏好对——chosen 73.9 对 rejected 19.8,pair 质量极高,模型也学进去了(mean_acc 0.67)。Powered 判定 −1.29。机制改善(contradiction −15%)没能换算成判官总分。
56
+
57
+ 六组实验的曲线读出来是一句话:**+2.10 → +0.03 → −1.29**。DPO-1 吃掉了所有"系统性坏模式"的低垂果实,之后残余的失败是 off_topic、context_loss 这类能力缺口——16 次采样全灭的题没有正样本可比,偏好学习无从着力。判官驱动的偏好优化在这个模型、这份数据、这个判官的组合上,天花板已经被三次 powered 测量钉死了。
58
+
59
+ ## 六、数字与限度
60
+
61
+ 交付模型在 powered 探针下:judge_mean 51.37,pass_70 0.352,hit_eos 0.975,distinct4 0.928,中位字数 66。多轮对话包(30 会话 × 6 轮)judge_mean 27.93——深多轮仍是最弱的一段。
62
+
63
+ 已知的失败模式,全部是实测样本不是推测:约束登记会丢(用户说过不吃鱼,后面还会推荐鱼);会伪造执行轨迹(函数写对,"示例输出"是编的);算术和冷门事实会自信出错;被连续追问时会退化成复读螺旋。C-Eval+CMMLU 似然法 26.2%≈随机——1B 对话模型对 ABCD 选项符号有位置先验,MC 基准在这个尺度上区分度本就差。
64
+
65
+ **公开基准同协议对照**(2026-09-15,五个同档基线与 Sophia 走同一管线、同一数据、同一判分,无任何官方公布值混入;逐题明细见 `ops/eval/public_benchmarks/`):判别式任务上 Sophia 与 MiniCPM4-0.5B 几乎同档——两者在字母似然协议下均贴近随机(MMLU 22.96 vs 22.9,BoolQ 62.17 vs 62.2,MMLU-Pro 11.45 vs 11.7),落后于 Qwen3.5-0.8B / Llama3.2-1B / Gemma3-1B。IFEval 官方校验器(541 题,strict)她拿 12.2%——是真实的残余指令遵循,但离基线的 26.4–51.8% 有系统性差距。NIAH 单针检索基线全部 100%,她 62.5% 且随深度衰减(1K→90%,3K→30%)。判官制开放对话(SophiaBenchmark,134 题,claude-haiku-4-5)她 51.25,列同档第 4,高于 Llama3.2-1B(48.09)与 Qwen2.5-0.5B(50.35)。
66
+
67
+ ## 七、交付
68
+
69
+ ```
70
+ pretrain(20B, 契约跑满)
71
+ → sft(88,267 行 × 3ep, epoch3 选中)
72
+ → dpo(1,953 对, 500 步) = sophia.pt
73
+ ├─ rft(104步, 零结果) runs/rft_e3.pt
74
+ └─ grpo+dpo2(链式实验, 未过门) runs/grpo/, 已弃
75
+ ```
76
+
77
+ 判官费用全程 ~¥500,GPU 全部单卡 5090。权重、sha256、谱系、探针全量判分、多轮样本包随包附证。没有任何东西上传到外网。
78
+
79
+ 两年前 o1 证明了会想比会说值钱。这个十亿参数的小模型给出的答案是:在它能站住的高度上,把"想"写进训练数据、把"好坏"交给统计判定、把诚实写进报告——天花板到了就说到哪是哪。