Cosmopedia:大规模合成数据用于LLM预训练
Hugging Face 已发布 Cosmopedia,这是一套大规模合成数据集,旨在复现微软 Phi 模型的训练方法。该数据集包含超过 3000 万个文件和 2500 亿个 token,是目前可用于从头预训练大型语言模型(LLM)的最大公开合成数据集。
为预训练扩展合成数据
虽然合成数据通常用于指令微调,但 Cosmopedia 关注的是将样本规模从几千扩展到数百万高质量样本用于预训练的挑战。该工作受到 Phi 系列表现的启发,Phi 系列展示了主要在合成“教材式”数据上训练的模型可以超越在通用网络数据集上训练的更大模型。
数据集生成方法论
Cosmopedia 使用 Mixtral-8x7B-Instruct-v0.1 生成。核心挑战是保持多样性并在 3000 万个提示中最小化重复内容。Hugging Face 采用了三种主要策略来策划提示:
1. 精选来源
使用斯坦福课程、可汗学院、OpenStax 和 WikiHow 等教育资源来提取大纲和主题。为了最大化这些有限资源的价值,团队利用了受众和风格的多样性。一个主题被重新用于不同的目标受众(幼儿、中学生、大学生和研究人员)以及不同的形式(教材、博客文章和 WikiHow 文章)。
2. 网络数据
网络数据贡献了超过 80% 的提示。团队将来自 RefinedWeb 等数据集的数百万网络样本聚类为 145 个簇。随后使用 Mixtral 确定每个簇的共同主题。低教育价值的内容,如名人八卦和成人材料,被过滤掉,保留了 112 个主题。随后通过指示模型基于这些主题中的网络样本生成教材来构建提示。
3. 指令数据集与故事
为了解决初始模型缺乏常识和基础小学知识的问题,团队使用 UltraChat 和 OpenHermes2.5 作为种子数据,生成包含日常知识的故事。
技术栈与实现
生成 2500 亿个 token 需要在 H100 GPU 上耗时超过 10,000 GPU 小时。技术实现包括:
- 文本聚类: 使用
text-clustering仓库来组织网络数据。 - 大规模生成: 使用
llm-swarm库在本地通过 TGI(文本生成推理)和 vLLM 部署 Mixtral-8x7B。 - 去污染: 为防止基准泄漏,实施了使用 10-gram 重叠和
difflib.SequenceMatcher的流水线。如果样本与基准样本的匹配比例超过 0.5,则丢弃该样本。 - 训练与评估: 使用
nanotron库通过 Llama2 架构训练了一个 1B 参数模型(cosmo-1b),并使用lighteval进行评估。
Cosmo-1B 的性能
对 cosmo-1b 模型的评估显示,它在 ARC-easy、ARC-challenge、OpenBookQA 和 MMLU 上的表现优于 TinyLlama 1.1B。它在 ARC-challenge 和 OpenBookQA 上与 Qwen-1.5-1B 相当,但相较于 Phi-1.5 仍存在性能差距。
未来方向
Hugging Face 将历史事实和数学推理中的幻觉视为主要改进方向。提出的解决方案包括使用检索增强生成(RAG)在生成过程中引入来自 Wikipedia 等来源的外部信息,以及实现幻觉测量方法以识别问题领域。