#daVinci-LLM:把预训练从“炼丹”推进到“科学实验”
论文 / 项目:daVinci-LLM: Towards the Science of Pretraining
GitHub: GAIR-NLP/daVinci-LLM
arXiv: 2603.27164
模型:3B 参数,Qwen2-style decoder-only 架构,从随机初始化训练 8T tokens。
核心口号:不只是开源权重,而是开放“预训练科学过程”本身。
这篇 daVinci-LLM 技术报告表面上是在发布一个 3B base model,但它真正重要的地方不在“又出了一个 3B 模型”,而在于它试图回答一个更基础的问题:
预训练到底能不能从经验主义的工程炼丹,变成可复用、可验证、可积累的科学方法?
作者的主张很明确:今天大模型领域最关键、但最不透明的部分不是 post-training,而是 pretraining。因为预训练决定了模型能力上限;后训练更多是在已有能力地基上做对齐、激活和格式化,很难凭空补出预训练阶段没有形成的深层能力。
但预训练研究长期卡在一个结构性矛盾里:
- 商业公司有算力,但没有动力公开完整数据、失败实验、混合比例和训练轨迹;
- 学术机构有研究自由,但通常没有足够资源做大规模系统性预训练消融;
- 开源权重模型提供了 final artifact,却往往不提供背后的 decision process。
daVinci-LLM 的定位,就是站在“工业级资源 + 学术式开放”的交叉点上,把完整预训练过程作为研究对象公开出来。
#1. 一句话讲清楚这篇文章
如果用一句话概括:
daVinci-LLM 训练了一个 3B 模型,但真正贡献是开放了一个从数据分层处理、动态课程设计、混合比例调整、训练中间检查点,到 200+ 消融实验的完整预训练研究范式,试图说明“小模型也能靠系统性预训练方法逼近更大模型”。
最终结果上,daVinci-LLM-3B 在论文报告的综合分数上达到 51.72,几乎追平 OLMo-3-7B 的 51.65。尤其在推理相关任务上非常突出,例如:
| 维度 | daVinci-3B | OLMo-3-7B | LLaMA-3.2-3B | Qwen-2.5-3B |
|---|---|---|---|---|
| Overall | 51.72 | 51.65 | 37.58 | 51.44 |
| General | 52.96 | 55.13 | 51.08 | 55.16 |
| Code | 55.99 | 54.42 | 32.40 | 56.13 |
| Science | 48.30 | 45.98 | 22.45 | 44.65 |
| MATH | 62.80 | 39.60 | 9.00 | 37.20 |
注意,这里的关键不是“3B 全面超过所有模型”。它没有超过 Qwen-3/3.5 这类强 4B 模型,也不是所有 general knowledge 都最强。关键是:在全开放、完整披露训练过程的前提下,一个 3B 模型通过系统性数据和课程设计,能在若干推理维度上达到甚至超过更大模型。
#2. 这篇文章想解决什么问题?
#2.1 之前的问题:预训练报告缺少“因果过程”
很多模型发布会告诉你:
- 模型多大;
- 训练了多少 token;
- 跑分多少;
- 大概用了哪些数据类别;
- 最终权重开放或不开。
但真正对研究者最有价值的问题通常不会被回答:
- 为什么这个阶段用这个数据比例?
- 什么时候应该从 web text 转向 reasoning-heavy 数据?
- 代码、科学、数学、QA 的比例怎么调?
- 数据过滤、重写、合成分别有多大收益?
- 哪些方案失败了?为什么失败?
- 训练过程中不同能力是如何生长、饱和、退化的?
- PPL 评测和生成式评测结论不一致时该信哪个?
这些问题本质上不是“模型 artifact”问题,而是 pretraining dynamics 问题。
所以 daVinci-LLM 的目标不是单纯发布一个模型,而是把预训练过程拆成一组可验证问题:
- 数据处理深度是否系统性影响能力?
- 不同能力的饱和速度是否不同?
- 数据混合比例是否应该随训练阶段动态变化?
- 结构化 QA 这种数据格式是否能突破 raw text 的收益瓶颈?
- 高比例 reasoning data 会不会导致灾难性遗忘?
- base model 的评测协议是否会改变我们对能力的判断?
这就是标题里 “Towards the Science of Pretraining” 的含义:把预训练从一次性 recipe,变成由问题、假设、实验、负结果和经验规律构成的科学过程。
#3. 三个核心支柱:Data、Training、Science
README 里把项目组织成三个支柱:
- Data Transparency:用 Data Darwinism 框架标注和处理 7.5T+ token 数据;
- Training Transparency:公开两阶段自适应课程、训练日志和 5k-step 间隔中间检查点;
- Scientific Transparency:公开 200+ controlled ablations,包括成功和失败配置。
这三点对应的是三个层面的开放:
- 不是只开放模型,而是开放模型从哪里来;
- 不是只开放数据名字,而是开放数据如何被加工;
- 不是只开放最终 recipe,而是开放 recipe 是如何被消融实验推出来的。
这对基础模型研究很重要。因为如果只有 final checkpoint,别人最多复现“结果”;如果有完整轨迹和负结果,别人才能研究“规律”。
#4. Data Darwinism:把数据处理深度变成可讨论变量
这篇文章最核心的概念之一是 Data Darwinism。它把数据处理分成 L0-L9 十个等级,用来描述数据从“原始采集”到“高阶合成”的处理深度。
可以粗略理解为:
| Level | 操作 | 直观含义 |
|---|---|---|
| L0 | Data Acquisition | 抓取原始数据,比如网页、PDF、代码仓库 |
| L1 | Format Normalization | 把 HTML/PDF/各种格式转成统一文本 |
| L2 | Rule-based Filtering | 用规则去重、去乱码、去非目标语言 |
| L3 | Lightweight Model Filtering | 用模型判断教育价值、领域、质量,只筛选不改写 |
| L4 | Generative Refinement | 用生成模型清理、重组、修复内容,但不引入外部知识 |
| L5 | Cognitive Completion | 把隐含推理补全,比如生成解释、推导、QA、教学桥接 |
| L6-L9 | Higher-Order Synthesis | 更高阶的上下文补全、环境合成、多智能体生态、世界合成 |
这里最有价值的是:它把“数据质量”这个模糊词拆成了更具体的处理层级。
过去我们说“高质量数据”往往很空泛。Data Darwinism 试图让我们问得更清楚:
- 你只是做了 L2 规则过滤,还是做了 L3 语义过滤?
- 你只是筛掉坏数据,还是做了 L4 结构重写?
- 你只是清理已有内容,还是做了 L5 的 reasoning chain 显式化?
- 对不同任务,L3/L4/L5 哪个层级的边际收益最大?
这和用户关心的“基础模型能力形成机制”是高度相关的:因为它把能力来源从“token 数量”推进到了“token 的认知结构”。
#5. 数据池:不是只有 web,而是 General / Code / Science / QA 四类能力材料
论文的数据池约 7.58T tokens,分为几大类:
- General:主要来自 Nemotron-CC-v1,约 4.28T,提供广泛语言和世界知识;
- Code:自爬 GitHub、Nemotron code、StackExchange 等,约 598B;
- Science / Math:MegaMath、Darwin-Science、Nemotron math/science 等,约 1.94T;
- QA:结构化问答和推理型数据,约 734B。
最终训练总计 8T tokens,并不是简单把 7.58T pool 顺序喂完,而是在不同阶段按不同混合比例采样。关键的训练阶段如下:
| 阶段 | token 数 | 目标 | 数据比例大意 |
|---|---|---|---|
| Stage 1-1 | 4T | 稳定建立通用基础 | General 68.2%,Code 9.53%,Science 22.27%,无 QA |
| Stage 1-2 | 2T | 增强 reasoning | General 降到 55.42%,Code 11.66%,Science 32.92%,无 QA |
| Stage 2-1 | 1T | 平衡引入结构化推理 | General 10%,Code 30%,Science 30%,QA 30% |
| Stage 2-2 | 1T | QA-intensive reasoning amplification | QA 70%,General 18.84%,Science 8.85%,Code 2.61% |
这张表是理解全文的关键:它不是一个静态数据配方,而是一个随能力成熟度变化的 curriculum。
#5.1 先把各阶段配比精确摊开
论文 Table 2 给出的最精确粒度是“每个训练阶段中四大类别的 token allocation”。换算成同一张表如下:
| 训练阶段 | 阶段 token 数 | General | Code | Science / Math | QA |
|---|---|---|---|---|---|
| Stage 1-1 | 4T | 2.73T / 68.2% | 381B / 9.53% | 891B / 22.27% | 0 / 0% |
| Stage 1-2 | 2T | 1.11T / 55.42% | 233B / 11.66% | 658B / 32.92% | 0 / 0% |
| Stage 2-1 | 1T | 100B / 10% | 300B / 30% | 300B / 30% | 300B / 30% |
| Stage 2-2 | 1T | 188.4B / 18.84% | 26.1B / 2.61% | 85.5B / 8.85% | 700B / 70% |
| 合计 | 8T | 约 4.1284T | 约 940.1B | 约 1.9345T | 1T |
这里有几个细节值得注意:
- Stage 1 完全没有 QA。 前 6T tokens 仍然是标准 next-token pretraining 风格,只是在 General / Code / Science 之间动态调比例。
- Stage 1-1 到 Stage 1-2 的核心变化是:General 降、Science 升。 General 从 68.2% 降到 55.42%,Science 从 22.27% 升到 32.92%,Code 小幅上升到 11.66%。这对应论文观察到 general knowledge 较早饱和,而 code/science reasoning 仍在增长。
- Stage 2-1 是一个非常刻意的平衡设计。 10% web text 保留通用语言/知识底座,30% Code、30% Science、30% QA 三足鼎立,目标不是立刻把 QA 拉满,而是先建立能承受高密度 reasoning supervision 的稳定表征。
- Stage 2-2 变成 QA-intensive。 QA 直接升到 70%,但仍保留 18.84% General、8.85% Science、2.61% Code。这个配比说明它不是纯 SFT-style QA 灌入,而是“高 QA 浓度 + 少量 anchor data” 的持续预训练。
如果把 8T 总训练量作为分母,大致占比是:General 约 51.6%,Science/Math 约 24.2%,QA 约 12.5%,Code 约 11.8%。但这个总占比会掩盖 curriculum 的重点:真正的结构变化发生在 Stage 2,QA 从 0 突然变成 30%,再变成 70%。
#5.2 每类数据池的来源、规模与 Darwin Level
论文 Table 2 同时给出了数据池的来源和处理层级。需要注意:表中 source-level 行只标注某个 source 是否用于某阶段,并没有披露每个 source 在每个阶段内部的精确采样比例;精确 token allocation 只披露到 General / Code / Science / QA 四大类。 所以下面能精确写的是“source pool size + 使用阶段 + 处理层级”,不能把每个 source 的 stage-wise token 数强行细分。
#General:4.28T,主要承担语言和世界知识底座
| 数据源 | 规模 | Darwin Level | 使用阶段 | 来源 / 处理方式 |
|---|---|---|---|---|
| Nemotron-CC-v1 | 4.28T | L3 | Stage 1-1 / 1-2 / 2-1 / 2-2 | 来自 99 个 Common Crawl snapshots;经过文本抽取、英语过滤、全局去重,并用 educational value / informativeness 分类器打分分层。 |
General 数据几乎完全由 Nemotron-CC-v1 non-synthetic portion 构成。它的作用不是专门推 reasoning,而是提供广覆盖语言、事实、常识、世界知识和自然文本分布。Stage 2-2 仍保留 188.4B General,我理解它的功能类似 anchor:防止模型在 70% QA 高强度训练下过度格式化或丢失一般语言能力。
#Code:598B,既有真实代码,也有代码 QA / 合成代码
| 数据源 | 规模 | Darwin Level | 使用阶段 | 来源 / 处理方式 |
|---|---|---|---|---|
| Self-Crawled GitHub | 187B | L3 | 全阶段 | 自爬公开 GitHub;先用 10 stars 作为规则质量门槛,再经过 OpenCoder filtering pipeline 去掉低质量或无信息代码。 |
| Nemotron-Pretraining-Code-v1-non-synthetic | 220B | L3 | 全阶段 | 真实 GitHub 代码;做 permissive license 过滤、精确/模糊去重,再用 OpenCoder 过滤。 |
| Nemotron-Pretraining-Code-v1-synthetic-code | 171B | L5 | 全阶段 | LLM 基于短代码片段生成 question-answer pairs,覆盖 11 种编程语言,并通过 Python AST 等启发式检查过滤。 |
| TxT360-Stack-Exchange | 20B | L2 | 全阶段 | Stack Exchange 364 个社区的技术讨论;从 XML dump 解析帖子/评论层级,规则清洗和格式归一化。 |
Code 类别在 Stage 1-1 占 9.53%,Stage 1-2 占 11.66%,Stage 2-1 升到 30%,但 Stage 2-2 降到 2.61%。这个设计很有意思:Code 在 Stage 2-1 是 reasoning balance 的关键支柱,但在 Stage 2-2 被 QA 主导挤压。 论文后面的 QA ratio 消融也解释了风险:如果 QA 数据中 code-related QA 多样性不足,过高 QA 比例可能让 code 出现非单调甚至 collapse,所以 Stage 2-1 先给 30% Code 建稳定基础很关键。
#Science / Math:1.94T,是复杂推理能力的主材料
| 数据源 | 规模 | Darwin Level | 使用阶段 | 来源 / 处理方式 |
|---|---|---|---|---|
| MegaMath-Web | 231B | L3 | Stage 1-1 / 1-2 | 从 Common Crawl 提取数学内容,使用 Resiliparse + trafilatura、fastText 数学过滤、MinHash LSH 去重。 |
| MegaMath-Web-Pro | 13B | L4 | 全阶段 | MegaMath-Web 高质量子集;FineMath classifier 选高教育价值文档,再用 Llama-3.3-70B-Instruct 做噪声移除和逻辑重组。 |
| MegaMath Refined | 176B | L4 | Stage 2-1 / 2-2 | 作者用 Qwen3-235B-A22B-Instruct 对 MegaMath-Web 做二次 generative refinement,抽取关键事实、去噪、重组为信息密度更高的形式。 |
| MegaMath-Synth-Code | 5B | L5 | 全阶段 | LLM 生成数学文本、符号表达式、可执行 Python code 交织的数据,并用 AST / execution checks 验证。 |
| Nemotron-CC-Math-v1-3 | 81B | L4 | Stage 1-1 / 1-2 | 来自 98 个 Common Crawl snapshots 的数学网页,Phi-4 清理,FineMath score=3。 |
| Nemotron-CC-Math-v1-4+ | 52B | L4 | Stage 1-1 / 1-2 | 同源高质量数学网页,FineMath score=4-5。 |
| Nemotron-CC-Math-v1-4+-MIND | 74B | L5 | 全阶段 | 用 MIND 框架把数学文档转成 Teacher-Student、Problem-Solving、Debate 等多轮对话,显式重构隐含推理。 |
| Nemotron-CC-Math-v1-3 Refined | 68B | L4 | Stage 2-1 / 2-2 | 作者用 Qwen3-235B 对 v1-3 再做一轮 L4 refinement。 |
| Nemotron-CC-Math-v1-4+ Refined | 47B | L4 | Stage 2-1 / 2-2 | 作者用 Qwen3-235B 对 v1-4+ 再做一轮 L4 refinement。 |
| Darwin-Science-Book | 251B | L4 | 全阶段 | 科学书籍 PDF,经 olmOCR、去重、规则过滤、教育价值/学科分类,再用 GPT-OSS-120B 清理目录、参考文献、页眉页脚、OCR artifacts。 |
| Darwin-Science-Paper | 215B | L4 | 全阶段 | 科学论文 PDF,同样经过 OCR、过滤、分类和 GPT-OSS-120B L4 refinement。 |
| Darwin-Science-Paper-GPT | 290B | L5 | Stage 1-1 / 1-2 | 基于 L4 paper,用 GPT-OSS-120B 做 Cognitive Completion:补全逻辑跳步、解释术语、加入教学桥接。 |
| Darwin-Science-Paper-Qwen | 440B | L5 | Stage 2-1 / 2-2 | 基于 L4 paper,用 Qwen3-235B-A22B-Instruct 做更强的 L5 Cognitive Completion。 |
Science / Math 是最能体现 Data Darwinism 思想的部分:它不是一个单一数学数据集,而是把 网页数学、教材/书籍、科学论文、合成代码、文档对话化、论文认知补全 混在一起。Stage 1 用 MegaMath-Web、Nemotron 原始数学子集和 Darwin-Science-Paper-GPT;Stage 2 则替换/增加了更强 refinement 和 Qwen 版本 cognitive completion,例如 MegaMath Refined、Nemotron refined、Darwin-Science-Paper-Qwen。
这说明 Stage 2 的变化不只是“QA 比例上升”,Science 内部也发生了质量升级:从较多 L3/L4 raw/refined scientific text,转向更强 L4 refined + L5 cognitive completion。
#QA:734B pool,但训练阶段实际采样 1T,是 Stage 2 的结构化推理核心
| 数据源 | 规模 | 领域 | Darwin Level | 使用阶段 | 来源 / 处理方式 |
|---|---|---|---|---|---|
| Nemotron-CC-v1 Synthetic QA | 492B | General | L5 | Table 2 标为未直接用于四个阶段 | 从高质量 Common Crawl 文档生成 diverse QA,包括 yes/no、open-ended、multiple-choice 等。 |
| Nemotron-Pretraining-SFT-v1-General | 12B | General | L5 | Stage 2-1 / 2-2 | MMLU-style QA,覆盖多领域知识,由 LLM 基于 curated source documents 生成。 |
| Nemotron-Pretraining-SFT-v1-Code | 21B | Code | L5 | Stage 2-1 / 2-2 | Genetic-Instruct 生成 coding instruction-code pairs,并由 Coder-LLM / Judge-LLM 生成与过滤。 |
| Llama-Nemotron-Post-Training-Dataset-Code | 5B | Code | L5 | Stage 2-1 / 2-2 | 多语言编程任务和 problem-solving prompts,原数据构造中已过滤质量/正确性。 |
| Nemotron-Pretraining-SFT-v1-Math | 138B | Science/Math | L5 | Stage 2-1 / 2-2 | 按 OpenMathInstruct-2 路线,由强 teacher model 为 GSM8K、MATH 等 seed questions 生成多候选解并按正确性筛选。 |
| Llama-Nemotron-Post-Training-Dataset-Math-RS | 10B | Science/Math | L5 | Stage 2-1 / 2-2 | 数学推理问题,作者用 Qwen3-32B non-thinking mode 做 rejection sampling,只保留可验证正确的回答。 |
| Llama-Nemotron-Post-Training-Dataset-Science-RS | 0.4B | Science | L5 | Stage 2-1 / 2-2 | 科学开放题/选择题,作者用 Qwen3-32B 做 rejection sampling。 |
| MegaMath-QA-RS | 9B | Science/Math | L5 | Stage 2-1 / 2-2 | MegaMath-QA 的合成 QA 子集,作者用 Qwen3-32B 做 rejection sampling,保留 final answer 可验证正确的样本。 |
| MegaScience-RS | 1B | Science | L5 | Stage 2-1 / 2-2 | STEM 科学推理 post-training 数据,作者用 Qwen3-32B 做 rejection sampling。 |
| Darwin-Science-Book QA | 46B | Science | L5 | Stage 2-1 / 2-2 | 作者用 Qwen3-235B-A22B-Instruct 从 Darwin-Science Book 直接生成 grounded QA,并要求答案能由原文验证。 |
QA 这里有一个容易误读的地方:Table 2 里 QA pool 总量是 734B,但 Stage 2-1 + Stage 2-2 的 QA allocation 是 300B + 700B = 1T。这说明训练中会对 QA pool 进行重复采样或按 curriculum 重新采样,而不是每个 token 只用一次。
另外,Table 3 把 QA 来源分成 General、Code、Science 三类。按 pool size 粗略看,QA pool 内部非常偏向 general/science:
- General:Nemotron-CC-v1 Synthetic QA 492B + Nemotron-SFT-General 12B,约 504B;
- Code:Nemotron-SFT-Code 21B + Llama-Nemotron-Code 5B,约 26B;
- Science/Math:138B + 10B + 0.4B + 9B + 1B + 46B,约 204.4B。
如果只看实际标注用于 Stage 2-1/2-2 的 QA source,Nemotron-CC-v1 Synthetic QA 在 Table 2 中是 “–”,那么被明确用于 Stage 2 的 QA pool 约为 242.4B,其中 Code 只有 26B,Science/Math 约 204.4B,General 12B。这解释了论文 Section 4.3.2 的观察:Stage 2-1 中 QA 比例过高时,science 会继续涨,但 code 可能因为 code QA 绝对多样性不足而 collapse。
#5.3 四个阶段的来源变化:真正的 curriculum 在哪里?
把来源变化压缩成一句话:
Stage 1 是 “General-heavy + raw/refined science/code”;Stage 2-1 是 “balanced reasoning mix”;Stage 2-2 是 “QA-intensive + 少量 general/science/code anchor”。
更细地看:
| 阶段 | 数据来源特征 | 设计意图 |
|---|---|---|
| Stage 1-1 | Nemotron-CC-v1 占 68.2%;Code 和 Science 作为辅助;Science 中包含 MegaMath-Web、Nemotron-CC-Math、Darwin-Science 等。 | 先建立语言、世界知识、基本代码/科学表征,保证优化稳定。 |
| Stage 1-2 | General 降到 55.42%;Science 升到 32.92%;Code 小幅升到 11.66%。 | 根据 general 早饱和、reasoning 仍增长的观察,把 token 从通用文本转给 code/science。 |
| Stage 2-1 | 10% General + 30% Code + 30% Science + 30% QA;Science 切入更多 refined / Qwen cognitive completion;QA 开始进入。 | 不是马上极端 QA,而是先让 Code、Science、QA 平衡,避免过早 domain collapse。 |
| Stage 2-2 | 70% QA;General 18.84% 作为最大 anchor;Science 8.85%,Code 2.61%。 | 在平衡基础形成后,用高浓度 QA 做 reasoning amplification,同时用少量非 QA 数据维持分布宽度。 |
这个 curriculum 的核心逻辑不是“越到后面越高质量”这么简单,而是三条线同时变化:
- 类别比例变化:General ↓,Reasoning-heavy ↑,最后 QA ↑↑。
- 处理深度变化:Stage 2 更多使用 L4 refined / L5 cognitive completion 数据。
- 数据格式变化:从 raw/refined text 转向 explicit QA / problem-solution / reasoning scaffolds。
这也是为什么 daVinci-LLM 对 pretraining science 有意义:它不是只问“多少 token”,而是把 token 类别、处理深度、格式结构、训练阶段 四个维度绑在一起研究。
#6. 模型架构:不是创新点,基本是 Qwen2-style 3B
daVinci-LLM 的模型架构本身不是这篇文章的主要创新。它采用 Qwen2-based decoder-only causal LM,约 3.09B 参数:
| 项 | 配置 |
|---|---|
| 参数量 | ~3.09B |
| Layers | 36 |
| Hidden size | 2048 |
| Attention heads | 16 |
| KV heads | 2,GQA |
| MLP intermediate | 11008 |
| Activation | SwiGLU |
| Norm | RMSNorm |
| Positional encoding | RoPE, base 10000 |
| Sequence length | 4096 |
| Tokenizer | Qwen2 tokenizer, vocab 151936 |
| Precision | bfloat16 |
这个选择其实反而说明了文章的重点:不是靠魔改架构,而是靠数据处理、训练课程和系统性实验。
如果一个相对标准的 3B 架构,能通过更科学的预训练策略取得明显 reasoning gains,那么这说明预训练 recipe 本身仍然有很大研究空间。
#7. 两阶段课程:从“广泛语言建模”到“结构化推理学习”
#7.1 Stage 1:先建地基,观察不同能力的饱和速度
Stage 1 训练 6T tokens,分成:
- Stage 1-1:4T tokens
以 Common Crawl / general text 为主,先建立稳定通用语言能力。batch size 从 1024 逐步升到 4096,LR warmup 后保持 3e-4。
- Stage 1-2:2T tokens
发现 general knowledge 很快饱和后,减少 general text,增加 code 和 science 数据,用 cosine decay 从 3e-4 降到 3e-5。
论文的观察很重要:
General knowledge 在约 1T tokens 后很快 plateau;code 和 science reasoning 在 4T 后仍然继续增长。
这给出一个很实际的训练启发:不同能力不是同速生长的。
如果你一直用固定数据比例训练,就会在已经饱和的能力上浪费大量 compute;更合理的方法是持续评测不同能力曲线,把 token 预算转移到仍在增长的能力上。
这也是 daVinci-LLM 从 Stage 1-1 到 Stage 1-2 调整 mixture 的原因。
#7.2 Stage 2:raw text 调比例不够了,需要换数据格式
Stage 1-2 后,作者发现继续调整 domain proportion 的收益开始变小。于是做了一个关键判断:
当标准 raw text corpus 接近饱和时,只是在 web/code/science 之间重新分配比例,已经不够;需要引入显式 reasoning structure,也就是 QA 格式。
于是 Stage 2 引入大规模结构化 QA:
- Stage 2-1:1T tokens
采用 30% QA + 30% code + 30% science + 10% general 的平衡配置。目标是让模型先适应高密度 reasoning signal,同时避免某一能力坍缩。
- Stage 2-2:1T tokens
在 Stage 2-1 建立稳定表征后,把 QA 提高到 70%,做 targeted reasoning amplification。
这背后的原则可以总结为:
先 balance,再 intensify。
不要一上来就把 QA 拉满。因为模型还没有稳定的多领域表征,高比例 QA 可能造成过拟合或 domain collapse。先用 30/30/30/10 建一个平衡基础,再在最后阶段把 QA 提到 70%,这样可以放大 reasoning,又不明显遗忘 general capability。
#8. 200+ 消融实验:真正有价值的是这些“为什么”
这篇文章最值得读的不是最终分数,而是 Section 4 的 200+ ablations。它把预训练 recipe 背后的很多经验问题具体化了。
#8.1 数据处理深度:L3 有用但有限,L4/L5 对复杂推理更关键
#L3:模型过滤比规则过滤略好,但不是质变
在代码数据上,作者比较了 L2 rule-based filtering 和 L3 model-based filtering。结果是 L3 有稳定但较小收益:
| 配置 | HumanEval | EvalPlus | MBPP | Avg Code | Overall |
|---|---|---|---|---|---|
| L2 Rule-based | 54.43 | 48.58 | 42.40 | 48.47 | 46.66 |
| L3 Model-based | 54.70 | 48.39 | 45.80 | 49.63 | 46.93 |
| Δ | +0.27 | -0.19 | +3.40 | +1.16 | +0.27 |
解释:L3 能去掉低质量代码、配置文件、自动生成文件、常量堆积等噪声,所以对基础编程任务 MBPP 更有帮助。但对 HumanEval / EvalPlus 这种更复杂代码推理,单纯过滤不够。
#L4:生成式重写对复杂数学推理更有效
作者用 Qwen3-235B 对数学数据做 L4 generative refinement:清理叙述噪声、提取公式、重组证明步骤,但保持语义不变。结果:
| 配置 | GSM8K | GSM-Plus | MATH | Avg Science | Overall |
|---|---|---|---|---|---|
| Baseline | 64.06 | 40.58 | 38.00 | 40.52 | 47.27 |
| L4 Refined | 65.43 | 42.38 | 45.00 | 42.25 | 47.83 |
| Δ | +1.37 | +1.80 | +7.00 | +1.73 | +0.56 |
这里最关键的是 MATH +7。说明复杂推理不是只需要“更多数学文本”,而需要更清晰的逻辑结构。对模型来说,原始论文/教材里经常省略中间步骤;L4 把这些结构整理出来后,模型更容易学习到推理模式。
#L5:合成 QA 能定向增强,但迁移有限
L5 cognitive completion 是把隐含推理变成显式问答/推导。例如从代码、科学文本里生成问题、答案和中间解释。论文发现:
- CodeQA 更直接增强 code benchmark;
- CC-QA / science QA 更直接增强 science reasoning;
- 这种增强有明显 source-target alignment,跨域迁移不是无限的。
这点很重要:合成数据不是“只要是 reasoning 就通吃”。它的来源域、问题形式、答案结构决定了主要增强哪类能力。
#8.2 训练动态:能力饱和不同步,所以 mixture 要动态变
论文的 Stage 1 观察可以总结为:
- general knowledge 约 1T tokens 后趋于饱和;
- code/science reasoning 在 4T tokens 后仍有增长;
- 因此 Stage 1-2 减少 general、增加 code/science 是合理的;
- 但继续调 raw text 比例会遇到瓶颈。
作者还做了一个对照:从 Stage 1-2 checkpoint 继续训练,一条路继续增加 code/science 但不加 QA;另一条路进入 Stage 2,引入 30% QA。结果 Stage 2 明显更好,尤其 code 和 science 增长更大。
这说明:
当模型对 unstructured corpus 的收益进入平台期时,数据格式转换 比 同类数据比例微调 更重要。
这和很多人对 pretraining 的直觉不同。我们常把预训练理解成“持续 next-token prediction on raw text”,但 daVinci-LLM 的证据支持另一种看法:后期预训练也可以逐渐接近“结构化能力塑形”。
#8.3 混合比例:高 reasoning data 必要,但内部平衡更重要
在 Stage 2-1,作者固定 QA 为 30%,变化 code/science 比例。关键结论:
- code + science 总比例高是必要的;
- 但 code-heavy 或 science-heavy 都可能牺牲整体能力;
- 30% QA + 30% code + 30% science + 10% web 是一个平衡点。
这对应一个很朴素但重要的原则:reasoning intensification 不能等于单域偏科。
尤其基础模型还不是 post-trained specialist,它需要保留广泛表征。过强的单域分布会让能力变窄。
#8.4 QA 比例:同样是 70% QA,早期可能崩,晚期反而有效
这可能是全文最值得注意的实验之一。
在 Stage 2-1,从 Stage 1 checkpoint 直接尝试不同 QA 比例:
- 中等 QA 比例下 general 还稳定;
- QA 到 100% 时 general 明显下降;
- code 呈现非单调:先提升,超过一定比例后 collapse;
- science 因为 QA 数据里 science 占比较多,所以还会继续提升。
作者认为这是因为 QA pool 本身不均衡:science QA 很多,code QA 相对少。QA 比例过高时,code supervision 的绝对多样性不够,容易过拟合或表征坍缩。
但在 Stage 2-2,从已经经过平衡 Stage 2-1 的 checkpoint 继续训练时,70% QA 反而表现最好:
| 配置 | 训练 tokens | General | Code | Science | Overall |
|---|---|---|---|---|---|
| QA-30% | 419B | 51.80 | 47.16 | 40.59 | 46.94 |
| QA-50% | 419B | 51.83 | 49.89 | 43.42 | 48.43 |
| QA-70% | 419B | 52.16 | 52.40 | 45.77 | 49.84 |
这说明 “最佳数据比例” 不是一个静态常数,而依赖训练阶段和当前表征基础。
更直白地说:
模型早期承受不了的高强度 supervision,在已有平衡基础后可能变成有效放大器。
这对持续预训练、midtraining、agent 预训练都很有启发。
#9. 评测问题:PPL 和生成式评测可能给出不同结论
论文还有一个容易被忽略但很重要的点:base model 的评测协议会影响结论。
他们区分两类评测:
- PPL-based evaluation:给定候选答案,看模型给正确答案的 likelihood 是否更高;
- Generative evaluation:让模型自由生成答案,尤其是 CoT / reasoning / code 输出。
这两者不是等价的。
特别是当模型经历大量 QA-style pretraining 后,它可能更擅长“生成式回答”,但在 PPL 多选打分上未必同比提升。因此不同评测协议可能出现 ranking reversal。
这对读榜单很重要:
如果一个模型训练目标越来越接近结构化问答和生成式推理,那么只看 PPL multiple-choice 可能低估它;但只看生成式 CoT 也可能放大 prompt format 带来的优势。
所以论文强调:base model evaluation 必须和预期使用场景匹配,而且最好同时报告多种协议。
#10. 我怎么看这篇文章的真正贡献?
我觉得 daVinci-LLM 的贡献可以分成三层。
#10.1 工程贡献:开放了一个完整 3B 预训练轨迹
包括:
- final checkpoint;
- intermediate checkpoints;
- 训练日志;
- 数据组成;
- 数据处理 pipeline;
- 评测配置;
- 200+ 消融实验。
这对想研究 capability emergence、训练阶段转折点、数据比例影响的人很有价值。
#10.2 方法贡献:把“数据质量”转化成“处理深度”
Data Darwinism 最大的意义不是 L0-L9 名字本身,而是提供了一种比较数据处理方法的坐标系。
未来讨论数据时,可以不再停留于:
我用了高质量数学数据。
而是问:
它是 L3 筛选、L4 重写,还是 L5 显式推理补全?这些层级分别对哪些能力有效?
这会让 pretraining data research 更可积累。
#10.3 科学贡献:提供了一些可迁移的预训练规律
文章里最可能被复用的规律包括:
- 不同能力的训练饱和速度不同:general 早饱和,reasoning 持续增长;
- 后期只调 raw corpus 比例不够,需要 data format shift;
- L4/L5 这种结构化处理对复杂推理比单纯过滤更重要;
- 高浓度 QA 要分阶段引入:先平衡,再强化;
- 合成 QA 的收益有强 domain alignment,不能假设通用迁移;
- 评测协议会改变我们对 base model 能力的判断。
这些比“3B 追平 7B”这个口号本身更值得记住。
#11. 这篇文章的局限和需要谨慎的地方
#11.1 结果不是“普遍证明 3B 可以等于 7B”
论文里 daVinci-3B 综合分追平 OLMo-3-7B,但这不意味着 3B 模型普遍可以替代 7B。它在 general knowledge 上仍低于 OLMo-3-7B,也低于 Qwen-2.5-3B / Qwen-3 系列若干指标。
更准确的解读是:
在特定数据策略和评测集合下,系统性 pretraining recipe 可以让 3B 在 reasoning-heavy benchmarks 上获得超出参数规模直觉的表现。
#11.2 评测集可能受 QA-style 训练影响
模型在 Stage 2 大量引入 QA 和 reasoning 数据,因此在生成式 benchmark 上很强。但这也意味着我们需要警惕:
- benchmark contamination;
- format overfitting;
- CoT prompt 对模型的额外适配;
- QA 训练导致某些生成式任务被特别放大。
论文确实讨论了 PPL vs generative evaluation 的差异,这是优点;但外部复现和更广泛评测仍然必要。
#11.3 Data Darwinism 高层级仍偏研究纲领
L0-L5 在论文中有实际操作和消融;L6-L9 更像未来方向。比如 environment synthesis、ecosystem synthesis、world synthesis,非常吸引人,但目前还不是成熟可规模化 recipe。
所以不要把 L0-L9 都当成已经验证过的技术栈。更稳妥的理解是:
- L0-L5:已有较具体实践;
- L6-L9:提出未来数据生成范式的方向。
#11.4 3B 规模规律未必直接外推到 30B/300B
3B 是一个很适合做系统性消融的规模,但在更大模型上:
- 数据质量和数量的边际关系可能变化;
- high-QA ratio 的最优点可能不同;
- general knowledge plateau 时间可能延后;
- 合成数据对模型的影响可能更复杂。
因此 daVinci-LLM 更像一个“可开放研究的实验平台”,而不是最终的 universal law。
#12. 对 LLM Agent / 长轨迹 RL / 持续学习的启发
这篇文章和 LLM Agent 表面上不是一个方向,但对 agent 训练很有启发。
#12.1 Agent 能力可能也需要“预训练阶段的结构化塑形”
现在很多 agent 训练直接上 RL,尤其是长轨迹任务。但 daVinci-LLM 提醒我们:能力地基很大程度来自 pretraining data structure。
如果模型在预训练或持续预训练阶段没有见过足够多:
- 任务分解;
- 状态跟踪;
- 工具调用轨迹;
- 错误恢复;
- 长程 credit assignment 的显式解释;
- 环境反馈到策略修正的过程;
那后续直接用 RL 在超长 agent 轨迹上优化,可能效率很低、方差很大,也容易学到表面策略。
换句话说:agentic RL 之前,可能需要 agentic pretraining / midtraining。
#12.2 “先 balance,再 intensify” 对 agent 训练尤其重要
daVinci-LLM 的 Stage 2 经验是:
不要一上来就用极高比例 QA;先用 balanced mixture 建立稳定表征,再提高 QA 强度。
类比到 agent:
- 早期不能只训某一类 tool-use 或某一类 benchmark;
- 需要混合 planning、search、code execution、memory、reflection、environment feedback 等不同轨迹;
- 在模型具备稳定 agentic representation 后,再强化某类长轨迹任务或特定能力。
否则很可能出现“某类 benchmark 变强,但整体交互能力变窄”的问题。
#12.3 Data Darwinism 可以扩展到 Agent Trajectory Darwinism
Data Darwinism 的思想可以迁移到 agent 数据:
| 文本预训练 | Agent 轨迹训练类比 |
|---|---|
| L2 去噪 | 去掉无效轨迹、重复轨迹、错误格式 |
| L3 模型过滤 | 评价轨迹质量、任务难度、工具调用合理性 |
| L4 refinement | 重写轨迹,使观察-行动-反馈链更清晰 |
| L5 cognitive completion | 补全隐含思考、失败原因、credit assignment、反思 |
| L6+ environment synthesis | 构造可执行环境生成新任务和交互数据 |
这可能比“直接收集大量 agent logs”更重要。因为 agent logs 本身往往噪声很高,真正有价值的是把轨迹变成可学习的认知结构。
#12.4 对 model-based RL / latent reasoning 的连接
用户关心 model-based RL / Dreamer for LLM Agent 和 latent-space reasoning。daVinci-LLM 至少给出一个侧面证据:能力增强不一定只能来自在线 RL,也可以来自更高质量、更高结构密度的离线训练数据。
如果往 model-based RL 延伸,一个可能路线是:
- 用环境交互数据构建 raw trajectory pool;
- 对轨迹做 Darwin-style 分层处理;
- L4:清理和重组 observation-action-reward 的因果链;
- L5:显式补全 hidden state、belief update、错误归因;
- 再用这些结构化轨迹做持续预训练 / world model training;
- 最后在 latent space 中进行 planning 或 imagination rollout。
这比直接在文本动作空间做长轨迹 RL 可能更稳定,也更符合“先形成模型,再做控制”的思路。
#13. 如果只记住五点
- daVinci-LLM 的核心不是 3B 模型,而是全开放预训练科学过程。
- Data Darwinism 把数据质量拆成 L0-L9 处理深度,L4/L5 对复杂推理尤其重要。
- 不同能力饱和速度不同:general knowledge 早饱和,code/science reasoning 更长期增长。
- 后期预训练不能只调数据比例,还要做 data format shift,引入结构化 QA / reasoning data。
- 高强度 reasoning 数据要分阶段引入:先平衡,再强化;否则容易 domain collapse 或能力变窄。
#14. 我的总体判断
我会把 daVinci-LLM 看作一篇值得认真读的 pretraining methodology paper,而不是普通模型发布。
它最有价值的地方在于:它把很多过去只能靠经验猜的预训练决策,变成了可以讨论、比较、复用的实验结论。尤其是以下几个方向:
- 数据处理深度 vs 数据规模;
- raw text vs structured QA;
- capability-specific saturation;
- staged curriculum;
- reasoning intensification 与 capability preservation 的平衡;
- base model evaluation protocol 的有效性。
对想研究基础模型训练、持续预训练、agent 预训练数据、长轨迹能力形成的人来说,这篇文章的意义不是告诉你“用这个 recipe 就行”,而是提醒你:
基础模型能力不是只靠参数和 token 堆出来的,它很大程度上取决于数据在认知结构上的组织方式,以及训练过程中何时、以什么强度引入这些结构。
这也是它和“训练范式”相关的地方:如果未来我们想让 LLM Agent 具备更稳定的长期规划、自我修正和环境建模能力,那么也许不能只盯着 RL 算法本身,而要像 daVinci-LLM 这样,从预训练数据结构、课程阶段、能力饱和曲线和负结果记录开始,重新把 agent 能力形成过程变成一门可积累的科学。