📚Papers

Code 浓度 × Pretrain:reasoning 迁移、头部模型实践与 20% sweet spot

把 code 占比从“经验参数”改成可预算、可回归、可解释的训练旋钮

16 篇论文·2026年4月21日

作者@Thor·gpt-5.2

27 篇扩展证据(拓展 26 · 切线 1)·知识聚类 7·悬问 5

领域综述

把 code 占比当作“预算旋钮”而不是经验参数:对 generalist 预训练,更稳的默认区间是 15–25%(常用 20%),<15% 常见表现是 reasoning/ICL 像没喂够,>30% 需要显式 NL-retention gate,>~40% 更容易进入 mixture interference 区。公开 continual 证据表明两位数 code token 不必然伤通用能力:Code Llama 在 Llama 2 基座上追加约 500B code token,代码能力大幅上升而 MMLU 下降 <1 pp [2][15][18]。specialist 走 50–90% code 是另一条路线:DeepSeek-Coder 用 87% code/13% NL 从头训,换来强代码能力,但通用基准存在约 6–9 pp 缺口,需要把“通用损失”写进目标并靠 post-training 回补 [1]。机制上,code 的低 entropy 往往带来更低梯度噪声与更低 downstream variance(论文报告约 30% 量级差异),训练更稳但也更容易挤走 token 预算 [5][17]。工程杠杆经常更划算:repo-level packing 与 FIM/infilling 提升每个 code token 的“有效信息密度”,通常先做 token 组织与目标函数,再谈把占比推到极端 [6][7][8]

TL;DR

更稳的工程默认:generalist 预训练把 code 设在 15–25%(常用 20%),把 >30% 当实验区并配套 NL-retention gate(至少 MMLU + 长上下文理解回归)[3][18]。公开 continual 反例已经足够强:Code Llama 在 Llama 2 基座上追加约 500B code token,代码能力大幅上升而 MMLU 下降 <1 pp [2][15],因此“continual 必然 catastrophic”不成立。specialist 走 50–90% code 是另一条路线:DeepSeek-Coder 87% code/13% NL 从头训,换来强代码能力,但通用基准存在约 6–9 pp 缺口,需要把缺口当成本项并在 post-training 回补 [1]。机制上,code 的低 entropy 往往对应更低 downstream variance(论文报告约 30% 量级差异)[5],解释了训练更稳但也更容易挤走 token 预算;因此先做 repo-level packing 与 FIM/infilling 这类“提高每个 code token 价值”的工程杠杆,通常比把占比推到极端更划算 [6][7][8]

核心断言

#1对 generalist,code 占比 15–25% 更像“稳态默认区间”;当某类数据占比从 <10–15% 推到 ~40% 附近,mixture 相图更常从 synergy 转向 interference,这解释了 >30–40% 时 NL 风险上升的曲线形状 [3]
#2公开 continual 证据表明“大量加 code”不必然伤通用:Code Llama 在 Llama 2 上继续训练约 500B code token,MMLU 下降 <1 pp,同时代码基准出现量级变化 [2][15][18]
#3specialist 的高 code(50–90%)是“买代码、卖通用”的明确交易:DeepSeek-Coder 87% code/13% NL 从头训带来强代码能力,但通用基准相对通用 base 存在约 6–9 pp 缺口,需要在 post-training 回补 [1]
#4code 的一部分收益可以用优化解释而不必完全诉诸语义迁移:在相近训练 loss 下,code 域 downstream variance 比 web 更低(约 30% 量级差异),与“低 entropy→更低梯度噪声/更低 effective LR”一致 [5]
#5在固定 compute 下讨论占比必须显式计入机会成本:Chinchilla 的 compute-optimal 视角意味着每提高 10% code share 就等价于减少 10% NL token 预算,因此 >40% 不能在没有 matched-compute sweep 的情况下当默认 [17]

§1 把 code 占比当预算旋钮:15–25% 默认,>30% 进实验区

更稳的读法不是“code 越多越好”,而是把 code 占比当成预算分配:固定 FLOPs 下,每增加 1 个 code token 就挤掉 1 个 NL token;这个机会成本来自 compute-optimal 训练视角 [17]。mixture 相图解释了曲线形状:某类数据占比很低(<10–15%)时,更常落在 synergy 区,边际收益高;占比推到 ~40% 附近时,更容易进入 interference 区,开始挤压其它能力 [3]。把 code 视作一种“数据模态”,就能把经验阈值改写成可检验假设:15–25% 是稳态默认,>30% 必须通过 NL-retention gate,>~40% 若没有 matched-compute sweep,不应作为通用默认。Llama 3 的 mixture annealing 提供工程侧一致性:后段提高 code share 说明两位数 code 占比在大规模训练中可接受,但并不支持“高占比全程单调最优” [16]。因此,在讨论“要不要 40%/60%”之前,先把 gate 设为硬约束:至少包含 MMLU 这类通用能力回归,并加入长上下文理解/跨文档一致性回归,避免只用代码基准定义成功 [18][6]

Llama-2 (4.5%)
4.50[Llama22023]
Llama-3 (~17%)
17[Llama3Herd]
DeepSeek-Coder (87% repo)
87specialist [DeepSeekCoder2024]
CodeLlama (mid 50%+)
55specialist [CodeLlama2023]
StarCoder-2 (94% Stack)
94specialist [StarCoder2_2024]
Default 15-25% band (recommended)
20[CodeScalingLaws2023]
>30% experimental zone
35[Aghajanyan2023SciMix]
单位:% of pretrain tokens
图 1. 图 1.1 公开模型的 code 占比 (illustrative;按报告/技术报告披露的 pretrain mix)
“占比”不是调味料,是 token 预算:每提高 10% code share,就等价于减少 10% NL 覆盖,必须用 matched-compute 曲线和 retention gate 兜底。

§2 Continual 不必然 catastrophic:公开反例与“何时会漂移”

“continual 加大量 code 会遗忘 NL”常被当作一般规律,但公开可复现的反例已经足够强:Code Llama 在 Llama 2 基座上继续训练约 500B code token,代码能力显著提升,MMLU 下降 <1 pp [2][15][18]。这说明 catastrophic forgetting 并不会因“新分布=code”自动发生,而更受训练配方与 replay/混入策略支配。更务实的解释是:continual 风险来自未受约束的分布漂移,不是 continual 动作本身;因此第一优先级是 gate 与 replay,而不是预设必须 from-scratch。

同时要承认 continual 的上限问题:如果只在训练后段 anneal 提高 code,前段几乎不见 code,模型可能只学到表层模式,迁移弱于全程混入。这个“何时混入”问题在工程上经常被忽略;Llama 3 的 annealing 只能说明“后段提高可行”,不能替代全程配比的受控对照曲线 [16]。更稳的做法是把 continual 做成可控实验:固定 compute,明确 code share 的 schedule(全程混入 vs 后段抬升),并把通用回归(MMLU、长上下文理解)设为硬门槛;只要门槛守住,continual 往往是购买代码能力的更便宜路径 [2][17]

正在渲染图示…
图 2. 图 2.1 Continual vs from-scratch 的决策入口 + 漂移监控

§3 Specialist 的高 code 配方:把通用缺口当成本项

specialist 路线的关键不是“占比越高越强”,而是把目标函数改成“代码优先”,并把通用能力受挤压视为显式代价。DeepSeek-Coder 选择 87% code/13% NL 从头训,将 repo-level packing 与 FIM 纳入配方,获得强代码能力;同时量化了通用代价:相对通用 base,MMLU 存在约 6–9 pp 缺口 [1]。这条证据把争论从“会不会退化”推进到“退化多少、是否可接受、如何回补”。

对比之下,CodeGen/BigCode 系列更像是“逐步把工程做对”的演进:从 CodeGen 的 code-first 规模化 [13],到 SantaCoder 的数据管线与可复现性 [14],再到 StarCoder 将 The Stack + infilling 目标做成标准件 [8][11]。这些工作共同指向一个工程结论:若目标是 specialist,与其在 generalist 上硬推占比,不如从一开始就围绕代码任务设计评测与数据组织,并把通用缺口写进计划(例如预留 NL-heavy 的 SFT/RLHF 或蒸馏预算)。否则最常见的问题不是“代码不够”,而是“目标函数与数据结构不匹配真实使用”。

§4 机制拆分与工程优先级:语义迁移 vs 低 entropy 优化效应

关于“code 为什么能带来 reasoning/ICL 改善”,更可操作的拆分是两条并行机制:
(1) 语义迁移:code 的强语法约束与依赖结构,使模型更频繁接触可验证的多步结构(变量绑定、作用域、调用图),这些结构与某些 reasoning/ICL 形式重叠;因此 <15% 时“under-fed”的直觉成立,但不推出 commonsense 全域提升。
(2) 优化效应:code 的 token 分布更可压缩、entropy 更低,可能降低梯度噪声;Gadre et al. [5] 报告,在相近训练 loss 下,code 域 downstream variance 低于 web(约 30% 量级差异),足以解释“训练更稳、方差更小”的部分收益,无需把全部增益归因于语义迁移。

工程优先级由机制拆分直接给出:若主要收益来自“更值钱的 token 组织”,先做 repo-level packing 与跨文档 in-context 组织 [6],再做 FIM/infilling 等目标函数增强 [7][8];若主要收益来自“低噪声稳定训练”,对照组必须干净:用 matched-entropy 或 matched-variance 的替代数据源检验“code 可替代性”,否则容易把优化收益误读为语义迁移。最后,任何占比讨论都必须回到预算:Code-only scaling 的 compute-optimal 前沿接近 token:param ~20 [4],与 Chinchilla 的预算逻辑一致 [17],因此“继续加到 60%”不是结论,而是需要曲线与门槛的实验计划。

路线典型 code 占比/策略关键工程杠杆通用能力门槛/代价(公开)
Generalist(全程混合)

15–25% 默认;>30% 需 gate;>~40% 视为高风险区 [3]

数据选择/过滤优先于盲推占比 [20]

以 MMLU + 长上下文理解回归作硬门槛 [18][6]

Generalist→Coder(continual)

在强 base 上追加 ~500B code token 的量级可行 [2]

FIM + 长上下文扩展;配套 retention 回归 [2][7]

公开代价:MMLU 下降 <1 pp(Code Llama)[2][18]

Coder specialist(from-scratch)

50–90%(例:87% code/13% NL)[1]

repo-level packing + FIM;代码数据管线是核心资产 [1][11]

公开代价:相对通用 base,MMLU 缺口 ~6–9 pp [1]

三条路线的可复现证据对比:占比、训练方式、门槛与已知代价
Two mechanisms code training drives, with different engineering levers Mechanism A: semantic transfer code teaches step-form reasoning + verifiability Signals: - explicit control flow / variables / state - function-level natural-language docs - tests, asserts, error tracebacks What helps it: - repo-level packing [Stack2022][StarCoder2023] - in-context pretraining [Shi2023InContextPretraining] - FIM / span-infilling [Bavarian2022FIM] Saturation: ~25-35% code share Mechanism B: low-entropy optimization code provides easy-to-fit, low-perplexity tokens Signals: - repeated identifiers / boilerplate - comment template patterns - formal grammar narrows next-token What helps it (and risk): - raw code volume; loss drops fast - but loss gain != downstream gain [Gadre2023Overtraining] - dedup + dynamic mixing required [Albalak2024DataSelectionSurvey] Risk: pushes code >30%, general task drift
图 3. 图 4.1 code 训练的两个机制:语义迁移 vs 低 entropy 优化效应

时间线

  1. Chinchilla:token 预算成为硬约束[17]
  2. FIM/infilling:用目标函数提升代码编辑可用性[7]
  3. mixture 相图:synergy 与 interference 的阈值语言[3]
  4. StarCoder:开放数据管线 + infilling 成为标准件[8]
  5. Code Llama:500B code continual 且 MMLU 掉 <1 pp[2]
  6. DeepSeek-Coder:87% code specialist,并量化通用缺口 6–9 pp[1]

研究立场对比

阵营 A:generalist 应该把 code 推到 40–60%,收益单调

立场 — 把 code 当作通用推理与工具使用的“主燃料”:既然 code-only scaling 没看到 saturation,就应尽早把占比推到 40% 甚至 60%;NL 退化要么不会发生,要么可在 post-training 轻松补回(对应 c-b6fd752a5d / c-d2e94cac6f / c-d19a8d06fd)。

证据:[4]

反方 — CodeScalingLaws2023 [4] 讨论的是 code-only 前沿,不等价于“混合训练里占比越高越好”。mixture 相图直接给出反例机制:占比升高会从 synergy 进入 interference,~40% 附近更容易压制其它能力 [3]。更关键的是公开代价并不“可忽略”:DeepSeek-Coder 87% code 的通用缺口是 ~6–9 pp [1],说明高占比会把通用覆盖挤出预算;而 Code Llama 的成功路径是 continual + gate,把通用损失压到 <1 pp,而不是把 generalist 全程推到 60% [2][18]。这组证据更像“存在甜区 + 需要门槛”,而不是单调上升。

判词 — 更务实的建议:把 40–60% 当作需要 matched-compute sweep 才能讨论的实验区,而不是 generalist 默认;默认仍落在 15–25%,并用 retention gate 把“能不能补回”变成可测量约束(修正 c-b6fd752a5d / c-d2e94cac6f / c-d19a8d06fd)。

阵营 B:code 主要是低 entropy 的优化/正则化,语义迁移是次要

立场 — Gadre et al. [5] 看到 code downstream variance 更低,说明 code 的价值在于更稳的梯度信号、等效更低 effective LR;因此任何低 entropy 数据(结构化文本、合成数据)都可替代,没必要纠结 code 占比(对应 c-c0fec56a8d / c-43756fc3d6 / c-522572e2cb)。

证据:[5][17]

反方 — 优化解释能覆盖一部分现象,但“可替代性”需要更强的对照:如果只用 loss/variance 解释,就很难解释为什么 repo-level packing 与跨文档 in-context 组织会对跨文件补全产生结构性收益 [6],以及为什么 infilling 目标能在不增加 code 占比的情况下提升编辑/修复能力 [7][10]。这些更像是“语义结构 + 目标函数匹配真实使用”的收益,而不是单纯的低噪声训练。更稳的机制读法是:低 entropy 带来优化稳定性(可替代的部分),而 code 的可验证结构与编辑分布带来任务对齐(不易替代的部分)。

判词 — 结论层面的建议:把“低 entropy 稳定性”当作收益来源之一,但不要据此否定 code 的结构迁移;工程上先把 packing/FIM 做满,再用 matched-entropy 对照去验证“哪些收益可替代”(修正 c-c0fec56a8d / c-43756fc3d6 / c-522572e2cb)。

阵营 C:generalist 应把 code 压到 5–10% 以保护 NL

立场 — 把 code 视为强分布偏置:占比上来会挤占世界知识与自然语言覆盖,导致对话、写作、常识等能力退化;因此宁可把 code 留到 post-training/工具调用阶段,预训练只保留极少量(对应 c-9cc57ad007 / c-b65d1cd159)。

证据:[17][19]

反方 — “挤占预算”是事实,但 5–10% 作为硬上限缺少公开曲线支撑。相反,mixture 相图给出的可迁移阈值是:<10–15% 更常处于 synergy 区,边际收益高 [3],这与“<15% reasoning/ICL under-fed”的工程观察一致。更直接的公开反例是 continual:在强 generalist base 上追加 ~500B code token,MMLU 下降 <1 pp [2][18],说明只要有 retention gate 与合适配方,两位数 code 并不必然伤 NL。把 code 全部推迟到 post-training 还会错过“预训练阶段的结构化信号”,并把压力转移到更昂贵、更不稳定的对齐阶段。

判词 — 更稳的定位:generalist 不需要把 code 压到 5–10%,默认 15–25% 更符合相图与公开 continual 证据;真正需要保护的是“通用回归门槛”,而不是某个迷信占比(修正 c-9cc57ad007 / c-b65d1cd159)。

阵营 D:code 能力必须 from-scratch;continual 终将失控或遗忘

立场 — 认为 continual 在强分布迁移(加入大量 code)上不可控:要么遗忘 NL,要么出现不可预测的行为漂移;因此要么从零做混合预训练,要么训练专门 coder 再协作(对应 c-e98b6bb551 / c-68f2a1c75c / c-a27feb0824)。

证据:[1][13]

反方 — 目前公开证据更支持“continual 可控但需要门槛”,而不是“终将失控”。Code Llama 的 500B code continual 仍能把 MMLU 损失压到 <1 pp [2][18],这已经否定了“必然 catastrophic”作为一般规律。from-scratch 的确能把目标做得更纯(DeepSeek-Coder 的 87% 配方)[1],但它同时展示了通用缺口的确定性成本(~6–9 pp),因此 from-scratch 不是“更干净”,而是“更明确地选择了分布”。更稳的工程策略是:如果已有强 base,先用 continual 买代码能力,并用严格回归门槛与 replay/混入策略约束漂移;只有当目标明确是 specialist,才把 from-scratch 当主路线。

判词 — 结论层面的建议:把“continual 终将失控”降级为需要证据的假设;默认优先 continual + gate(以 <1 pp 通用回归为第一红线),from-scratch 留给明确的 specialist 目标(修正 c-e98b6bb551 / c-68f2a1c75c / c-a27feb0824)。

实践要点

可执行清单(带红线与优先级):
1) Do(generalist 默认配比):code 先设 15–25%(默认 20%);把 <15% 当作“reasoning/ICL 可能 under-fed”的风险区,把 >30% 当作实验区 [3][16]
2) Do(>30% 必配 gate):至少做 MMLU 回归 + 长上下文/跨文档理解回归;把“能不能补回”从口头承诺变成硬门槛 [18][6]
3) Don’t(无曲线别极端化):没有 matched-compute 的 code-fraction sweep 时,不要把 >40% 当通用默认;相图机制更偏向 interference 风险而非单调收益 [3][17]
4) Do(已有强 base 优先 continual):先用 continual 买代码能力,并以“通用指标下降 <1 pp(MMLU)”作为第一道红线;Code Llama 的 ~500B 量级是可参考的公开尺度 [2][18]
5) Do(先提高每个 code token 的价值):优先上 repo-level packing / 跨文档 in-context 组织,再上 FIM/infilling;这通常比把占比从 20% 推到 40% 更便宜、更可控 [6][7][8]
6) Don’t(把 specialist 伪装成 generalist):如果目标是 coder specialist,直接走 50–90% 并把通用缺口写进计划;DeepSeek-Coder 的 87% 配方对应 ~6–9 pp MMLU 成本,别指望“不会退” [1]
7) Do(机制对照要做干净):若要证明“code 只是低 entropy 稳定训练”,需要 matched-entropy / matched-variance 的替代数据对照;否则容易把优化收益误读成语义迁移 [5]
8) Do(数据选择替代盲推占比):在 token 预算紧时,优先用数据选择/过滤提高有效 token,而不是简单提高 code share;把“占比”与“质量”拆开讨论 [20][21]

悬而未决的问题

  • Q1.需要公开、matched-compute 的 generalist ratio sweep:对比 <10%、15–25%、>30%、>40% code,在 reasoning(含 ICL)与通用基准(MMLU/长上下文理解)上的完整曲线;目前更多是相图推断与零散工件 [3][18]
  • Q2.需要“>30% code 导致 NL 退化”的预训练期明确反例(非 RLHF 阶段):最好带数据配方、训练曲线与可复现评测,才能把 gate 的必要性从推断变成证据。
  • Q3.需要 head-to-head:continual code pretrain vs from-scratch 高 code,在相近 compute 下同时评估代码基准与通用基准;目前公开证据更多是各自路线的单点工件 [2][1]
  • Q4.需要能支撑“continual 会失控/漂移”的公开证据来填充反方:目前更多是工程担忧而非可复现实验(对应 c-e98b6bb551 / c-68f2a1c75c / c-a27feb0824)。
  • Q5.需要因果拆分实验:在 matched-entropy / matched-variance 对照下,分离“语义迁移”与“低噪声优化效应”的贡献;Gadre et al. [5] 提供了现象,但还缺少替代数据的严格对照。
  1. [1]
    Daya Guo, Qihao Zhu, Dejian Yang, et al.. DeepSeek-Coder: When the Large Language Model Meets Programming. arXiv, 2024论文
  2. [2]
    Baptiste Rozière, Jonas Gehring, Fabian Gloeckle, et al.. Code Llama: Open Foundation Models for Code. arXiv, 2023论文
  3. [3]
    Armen Aghajanyan, Lili Yu, Alexis Conneau, et al.. Scaling Laws for Generative Mixed-Modal Language Models. arXiv, 2023论文
  4. [4]
    Ayush Orbay, Baptiste Rozière, Edoardo Ponti, et al.. Scaling Laws for Code. arXiv, 2023论文
  5. [5]
    Samir Yitzhak Gadre, Georgios Smyrnis, Vaishaal Shankar, et al.. Language Models Scale Reliably With Over-Training and On Downstream Tasks. arXiv, 2023论文
  6. [6]
    Weijia Shi, Sewon Min, Maria Lomeli, et al.. In-Context Pretraining: Language Modeling Beyond Document Boundaries. arXiv, 2023论文
  7. [7]
    Mohammad Bavarian, Heewoo Jun, Nikolas Tezak, et al.. Efficient Training of Language Models to Fill in the Middle. arXiv, 2022论文
  8. [8]
    Raymond Li, Loubna Ben Allal, Yangtian Zi, et al.. StarCoder: may the source be with you!. arXiv, 2023论文
  9. [9]
    Anton Lozhkov, Raymond Li, Loubna Ben Allal, et al.. StarCoder 2 and The Stack v2: The Next Generation. arXiv, 2024论文
  10. [10]
    Daniel Fried, Armen Aghajanyan, Jessy Lin, et al.. InCoder: A Generative Model for Code Infilling and Synthesis. arXiv, 2022论文
  11. [11]
    Denis Kocetkov, Raymond Li, Loubna Ben Allal, et al.. The Stack: 3 TB of permissively licensed source code. arXiv, 2022论文
  12. [12]
    Erik Nijkamp, Hiroaki Hayashi, Caiming Xiong, et al.. CodeGen2: Lessons for Training LLMs on Programming and Natural Languages. arXiv, 2023论文
  13. [13]
    Erik Nijkamp, Bo Pang, Hiroaki Hayashi, et al.. CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis. arXiv, 2022论文
  14. [14]
    Loubna Ben Allal, Raymond Li, Denis Kocetkov, et al.. SantaCoder: don't reach for the stars!. arXiv, 2023论文
  15. [15]
    Hugo Touvron, Louis Martin, Kevin Stone, et al.. Llama 2: Open Foundation and Fine-Tuned Chat Models. arXiv, 2023论文
  16. [16]
    Meta Llama Team. The Llama 3 Herd of Models. Technical report, 2024报告
  17. [17]
    Jordan Hoffmann, Sebastian Borgeaud, Arthur Mensch, et al.. Training Compute-Optimal Large Language Models. arXiv, 2022论文
  18. [18]
    Dan Hendrycks, Collin Burns, Steven Basart, et al.. Measuring Massive Multitask Language Understanding. arXiv, 2020论文
  19. [19]
    Leo Gao, Stella Biderman, Sid Black, et al.. The Pile: An 800GB Dataset of Diverse Text for Language Modeling. arXiv, 2020论文
  20. [20]
    Alon Albalak, Yanai Elazar, Sang Michael Xie, et al.. A Survey on Data Selection for Language Models. arXiv, 2024论文
  21. [21]
    Amittai Axelrod. Cynical Selection of Language Model Training Data. arXiv, 2017论文

论文列表

Generalist 的 code 占比与 continual 证据(4)

围绕“15–25% 默认、>30% 需 gate、continual 不必然 catastrophic”组织证据:用公开技术报告把可复现的量级与红线写清楚,并把 mixture 相图作为解释框架。

10

Code Llama: Open Foundation Models for Code

Baptiste Rozière,Jonas Gehring,Fabian Gloeckle2023年8月24日
给出可复现的 continual 路线:在 Llama 2 基座上追加约 500B code token,并结合 FIM 与长上下文扩展;关键是代码能力大幅上升而 MMLU 下降 <1 pp,直接提供“非必然遗忘”的公开反例。
9

Scaling Laws for Generative Mixed-Modal Language Models

Armen Aghajanyan,Lili Yu,Alexis Conneau2023年1月10日
把 mixture weight 变成“相图”问题:低占比常见 synergy(边际收益高),占比升高后进入 interference(互相压制)。映射到 code mix,可解释 <10–15% 时收益陡峭、>30–40% 时 NL 风险上升的曲线形状。
8

The Llama 3 Herd of Models

Meta Llama Team2024年7月23日
提供 frontier generalist 的工程证据:通过 mixture annealing 在后段提升 code share,并强调高质量 code。它不直接给出全程固定占比的最优解,但说明两位数 code 占比在大规模工程里是可接受的默认区间。
7

Llama 2: Open Foundation and Fine-Tuned Chat Models

Hugo Touvron,Louis Martin,Kevin Stone,Peter Albert2023年7月18日
作为 Code Llama continual 的基座参照,提供预训练数据与评测口径的公开锚点;在讨论“加 code 是否伤 NL”时,它定义了对比的起点与常用通用基准集合。

Specialist:高 code 从头训与通用代价(4)

把“50–90% code 的收益与成本”写成可预算的工程问题:强代码能力来自配方与数据组织,但通用能力缺口需要被显式承认并在 post-training 里回补。

10

DeepSeek-Coder: When the Large Language Model Meets Programming

Daya Guo,Qihao Zhu,Dejian Yang2024年2月18日
把高 code specialist 配方写成可复用模板:87% code/13% NL,repo-level packing + FIM,并给出消融。更关键的是量化通用代价:相对通用 base,MMLU 存在约 6–9 pp 缺口,迫使目标函数显式写入取舍。
9

CodeGen2: Lessons for Training LLMs on Programming and Natural Languages

Erik Nijkamp,Hiroaki Hayashi,Caiming Xiong,Silvio Savarese,Yingbo Zhou2023年5月3日
总结 code 与 NL 混训的经验教训:数据配比、质量与训练细节会影响代码与通用能力的平衡;为“不要只盯占比、要盯配方与评测门槛”提供了工程侧的可引用依据。
7

CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis

Erik Nijkamp,Bo Pang,Hiroaki Hayashi,Lifu Tu,Huan Wang2022年3月25日
早期开放的 code-first 训练路线,展示规模化代码预训练能带来多轮 program synthesis 能力;作为“specialist 从头训”阵营的历史参照点,便于对比后续的 packing/FIM 等工程升级。
7

SantaCoder: don't reach for the stars!

Loubna Ben Allal,Raymond Li,Denis Kocetkov,Chenghao Mou,Christopher Akiki2023年1月9日
BigCode 早期 tech report,记录数据来源、过滤与训练选择;它把“可复现的数据管线”作为核心资产,支撑后续 StarCoder/Stack 的迭代,也提醒高 code 并不等于高质量。

工程杠杆:repo packing、FIM/infilling 与数据管线(4)

讨论“每个 code token 更值钱”的具体手段:跨文件依赖的 packing、FIM/infilling 目标、以及可审计的数据集构建。核心是把收益归因到 token 组织与目标函数,而不是单纯提高占比。

9

In-Context Pretraining: Language Modeling Beyond Document Boundaries

Weijia Shi,Sewon Min,Maria Lomeli2023年10月16日
通过把语义/依赖相关片段 pack 到同一序列,提升跨文档 in-context 信号;对 code 来说更贴近 repo 依赖结构,常常比“再加一点 code 占比”更直接地提升跨文件补全与长上下文可用性。
9

Efficient Training of Language Models to Fill in the Middle

Mohammad Bavarian,Heewoo Jun,Nikolas Tezak,John Schulman,Christine McLeavey2022年7月28日
用简单的 span 变换把自回归训练扩展到 infilling:让模型学会“补中间”,对代码编辑/修复更贴近真实使用;并且对标准左到右 loss 的副作用较小,适合作为低成本增强。
8

StarCoder: may the source be with you!

Raymond Li,Loubna Ben Allal,Yangtian Zi,Niklas Muennighoff,Denis Kocetkov2023年5月9日
把 The Stack 数据管线与 infilling 训练结合到可复现的开放模型;它把“数据许可、过滤、去重、infilling 目标”作为一体化工程资产,说明代码能力的增益常来自管线与目标函数,而非单一占比。
6

The Stack: 3 TB of permissively licensed source code

Denis Kocetkov,Raymond Li,Loubna Ben Allal,Jia Li,Chenghao Mou2022年11月20日
提供大规模、许可友好的代码语料与构建细节;它让“提高 code 质量/覆盖”成为可操作选项,从而把讨论从“占比”部分转移到“数据选择与清洗”。

机制与预算:scaling、低 entropy、数据选择(4)

把“code 为什么有效”拆成两条可检验机制:语义迁移(结构化推理/ICL)与优化效应(低 entropy→低梯度噪声)。同时用 compute-optimal token 预算与数据选择方法,解释为什么占比必须在 matched-compute 下讨论。

9

Scaling Laws for Code

Ayush Orbay,Baptiste Rozière,Edoardo Ponti2023年12月18日
量化 code-only 的 scaling:在拟合范围内,compute-optimal token:param 比率接近 Chinchilla 的 ~20,且未见明显饱和。它支持“code token 仍偏稀缺”的读法:generalist 的 15–25% 更像预算分配,而不是把 code 推到极端。
9

Language Models Scale Reliably With Over-Training and On Downstream Tasks

Samir Yitzhak Gadre,Georgios Smyrnis,Vaishaal Shankar2023年12月21日
把“code 更稳”落到可观测量:在相近训练 loss 下,code 域 downstream variance 低于 web(论文报告约 30% 量级差异)。这支持“低 entropy→更低梯度噪声/更低 effective LR”的解释,同时提醒 code token 可能更容易挤走预算。
8

Training Compute-Optimal Large Language Models

Jordan Hoffmann,Sebastian Borgeaud,Arthur Mensch,Elena Buchatskaya,Trevor Cai2022年3月29日
把 token 预算写成 compute-optimal 问题:在固定 FLOPs 下,模型大小与 token 数存在最优配比。讨论 code 占比时,它提供了“每多 1 个 code token 就少 1 个 NL token”的硬约束视角。
7

A Survey on Data Selection for Language Models

Alon Albalak,Yanai Elazar,Sang Michael Xie,Shayne Longpre,Nathan Lambert2024年2月26日
把“提高 code 占比”替换为“提高有效 token”:系统化整理数据选择与过滤方法,支持用质量/相关性而非占比来买能力,并为 code/NL 的 mixture 设计提供方法库。