预训练数据不该被扔掉,应该被改写
ICLR 2026 论文 SwallowCode/SwallowMath 用 transform-and-retain 方法证明:LLM 改写低质量数据,比过滤掉它们效果更好。
数据质量的主流思路一直是:过滤。识别低质量内容,扔掉它,保留高质量的部分。
ICLR 2026 有一篇论文,换了一个角度问:如果低质量数据不是扔掉,而是用 LLM 改写成高质量,会怎样?
结果相当好。在固定 500 亿 token 训练预算内,改写版数据集让 Llama-3.1-8B 的代码生成能力(HumanEval pass@1)提升了 17.0 分,数学推理(GSM8K)提升了 12.4 分。
SwallowCode:四阶段改写流水线
论文发布了两个数据集:SwallowCode(约 161 亿 token)和 SwallowMath(约 23 亿 token),均以 Llama 3.3 Community License 开源。
SwallowCode 的原材料是 The-Stack-v2 里的 Python 代码片段,经过四个阶段处理:
- 语法验证:过滤掉无法通过 AST 解析的片段
- pylint 风格过滤:基于静态分析分数筛选
- LLM 风格改写:强制统一代码风格、添加注释
- LLM 语义改写:将片段转化为「自包含、算法高效」的示例——这步最关键,也是增益最大的
对 SwallowMath,则是对 Finemath-4+ 数据做三件事:去除样板文字、还原上下文、把解题步骤重新格式化为简洁的逐步说明。
消融实验的结论很直接:每个阶段都有贡献,其中改写(rewriting)带来的增益最大。
为什么「改写」比「过滤」更好
论文里有一个核心洞察,叫 transform-and-retain(变换保留)——与传统方法的对比是:
| 方法 | 逻辑 | 问题 |
|---|---|---|
| 过滤 | 低质量 → 扔掉 | 浪费数据,稀缺领域损失大 |
| 有限变换 | 低质量 → 简单修正 | 改动有限,提升有限 |
| transform-and-retain | 低质量 → LLM 完整改写 | 最大化数据利用率 |
关键逻辑:原始数据包含正确的语义内容,只是表达方式差。代码逻辑是对的,只是没注释、没有清晰的算法结构;数学题解是对的,只是夹着大量 LaTeX 样板和无关文字。LLM 改写保留内容、改变形式。
这解释了为什么效果好于单纯过滤:过滤丢掉了内容,改写保留了内容。
这个方向的更大意义
SwallowCode 发布在 ICLR 2026,背后有一个更大的信号:知乎的相关报道里还提到了另一篇 ICLR 2026 论文「How Can We Synthesize High-Quality Pretraining Data? A Systematic Study of Prompt Design, Generator Model, and Source Data」——同一个会议上,有多篇论文在研究「如何系统性地生成或改造高质量预训练数据」。
这不是偶然。随着高质量人工数据接近耗尽,训练数据工程正在转向:用已有 LLM 处理和提升存量数据,而不只是寻找更多原始数据。
合成数据、数据改写、数据蒸馏,这几条路在 2026 年同时被加速探索。
SwallowCode 的贡献是把其中一条路做得足够具体、足够可复现——完整流水线开源,消融实验完整,迁移到其他语言和领域的方法论写得清楚。
低质量数据不等于无用数据。用模型改写它,通常比扔掉它更聪明。