数据效率突破:UltraX如何用16B Token击败原始数据20B Token的训练效果
【免费下载链接】UltraX-Preview项目地址: https://ai.gitcode.com/OpenBMB/UltraX-Preview
UltraX 是 OpenBMB 社区推出的大规模预训练数据精炼框架,通过函数调用式的"程序化编辑"对网页语料逐条打磨。本仓库 UltraX-Preview 收录了 5 个经 UltraX 精炼的英文预训练语料(各约 20B Token),实验显示:UltraX 精炼数据在 16B Token 时即超越原始数据 20B Token 的训练效果,用更少 Token 换来更强模型。
为什么"数据效率"是大模型预训练的核心难题?
大模型预训练的成本主要消耗在 Token 量上,但"更多数据 ≠ 更好模型":
- 原始网页语料信息密度低——导航栏、页脚、登录墙、错误页等样板内容占了大量篇幅;
- 粗暴过滤会误伤——按规则整篇丢弃,容易连带删掉有价值的段落;
- LLM 端到端改写——质量不可控、成本高,且可能悄悄改变原文事实。
UltraX 给出了第三条路:训练一个轻量精炼模型,为每条样本预测一组结构化编辑操作(插入、删除、修改),再在原文上确定性执行。既不是整篇丢弃,也不是自由改写,而是"外科手术式"的逐行编辑。
五大编辑操作:让每条样本被精准处理
| 操作 | 作用 |
|---|---|
keep_all() | 文档无需修改 |
remove_all() | 整篇无价值(错误页、登录墙) |
remove_lines(start, end) | 删除指定连续行 |
replace_str(line, old, new) | 在指定行内替换子串 |
add_line(base, sub_idx, content) | 在指定位置插入新行 |
底层由LAM + DCR 流水线支撑:行级对齐映射(LAM)先对齐原文与精炼文本的行,动态上下文替换(DCR)再把字符级编辑转成带唯一上下文锚点的可靠操作;配合滑动窗口推理、歧义过滤、同行操作合并等机制,保证在十亿级样本上稳定执行。更多技术细节见 README_ZH.md。
五大精炼数据集:每个约 20B Token 的预训练语料
| 数据集 | 源语料 | 说明 | 数据位置 |
|---|---|---|---|
| UltraX-FineWeb | FineWeb | 大规模 Common Crawl 网页语料 | data/UltraX-FineWeb/ |
| UltraX-RedPajama-V2 | RedPajama-v2 | 多源网页语料 | data/UltraX-RedPajama-V2/ |
| UltraX-AICC | AICC | HTML 解析的高保真网页语料 | data/UltraX-AICC/ |
| UltraX-Ultra-FineWeb | Ultra-FineWeb | 质量过滤的 FineWeb 语料 | data/UltraX-Ultra-FineWeb/ |
| UltraX-FineWeb-ProX-Doc | FineWeb-ProX-Doc | 文档级精炼语料 | data/UltraX-FineWeb-ProX-Doc/ |
每个数据集由若干 Parquet 分片组成(如 UltraX-FineWeb-en-part-0001-of-0104.parquet),可直接用于大规模训练。
实验证据:16B Token 如何打赢 20B Token?
评估设置非常"硬核":使用1B 参数的 MiniCPM 模型从零预训练,每个语料喂 20B Token,在 10 个知识基准(ARC-C、ARC-E、CSQA、HellaSwag、MMLU、OBQA、PIQA、SIQA、WinoGrande、SciQ)上零样本评估,直接对比 UltraX 精炼数据 vs 原始数据(Raw)vs ProX-C 文档级精炼:
- 🏆 UltraX 在全部 5 个语料上取得最高平均分,50 个"任务×语料"组合中拿下 34 个最佳;
- 📈 相比原始数据平均相对提升约2.00%,相比 ProX-C 约1.53%,多个数据集提升超 2%;
- ⚡ 最有说服力的数据效率结论:在 FineWeb 上,UltraX 训练到 16B Token 时平均分 45.49,已超越原始数据与 ProX-C 训练满 20B Token 的结果(45.08 / 45.05)——相当于用约 80% 的 Token 预算打赢了对手,直接省下约 1/5 的训练算力。
背后的逻辑很直观:精炼后的文本去掉了样板噪声,每个 Token 承载的有效信息更多,模型的"学习速度"自然更快。
数据格式与快速上手
每个 Parquet 文件包含 5 列,结构清晰、便于审计:
| 列名 | 说明 |
|---|---|
uid | 唯一标识符(raw_content的 MD5 哈希) |
raw_content | 精炼前的原始文本 |
cleaned_content | 经 UltraX 精炼后的文本 |
processed_functions | 实际应用的编辑操作 |
source | 源语料名称 |
得益于processed_functions列,你可以逐条核对"模型到底改了什么",这是规则过滤和端到端改写都做不到的可解释性。加载数据集只需几行代码:
from datasets import load_dataset ds = load_dataset("openbmb/UltraX", "UltraX-FineWeb", split="train")总结:UltraX 适合谁?
- 🎯预算有限的预训练团队:数据效率提升意味着更短的算力周期;
- 🧪研究数据精炼的团队:可复现的函数式编辑 + 完整的操作审计列;
- 📦想要开箱即用精炼语料的工程师:5 个 20B Token 级语料即取即用。
使用注意:项目基于 Apache 2.0 协议 发布,但语料源自多个上游数据集,二次使用需自行核对各源语料的许可证。
完整数据集说明请查阅 README.md(英文)与 README_ZH.md(中文)。
【免费下载链接】UltraX-Preview项目地址: https://ai.gitcode.com/OpenBMB/UltraX-Preview
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考