Textbooks Are All You Need
Textbooks Are All You Need - 中文验证版
英文原始依据卡片:phi_2023.md
状态:已翻译。
元数据
- 阅读状态: read complete
- 年份: 2023
- 计算范式: 超大规模密集 LLM 训练 (
hyperscale_dense_llm_training) - PDF: 2023-phi_2023.pdf
- 抽取文本: 2023-phi_2023.txt
- PDF URL: https://arxiv.org/pdf/2306.11644.pdf
- OpenAlex:
- 引用计数来源/日期:
- 引用计数:
- 阅读卡创建日期: 2026-06-15
计算设置
论文直接报告了硬件:phi-1 是一个 1.3B 参数 Transformer,在 8 个 NVIDIA A100 GPU 上训练 4 天。在方法部分,作者将设置重述为 8 个 Nvidia-A100 GPU 使用 DeepSpeed,phi-1-base 的预训练在不到 4 天内完成,微调至 phi-1 在同一硬件上额外需要 7 小时。训练栈使用 fp16、AdamW、序列长度 2048,以及用于多头注意力的 FlashAttention。
模型对于 2023 年来说刻意设计得较小。1.3B 架构有 24 层,隐藏维度 2048,MLP 内部维度 8192,32 个注意力 head,维度 64。预训练使用有效 batch size 1024 和计划 36,000 步;发布的 phi-1-base 检查点在 24,000 步时截取,约为 CodeTextbook 的 8 个 epoch,总训练 tokens 略超 50B。图 2.1 给出了具体的计算核算:phi-1-base 在 51B tokens 后使用 770 GPU 小时,而一个 Stack+ 对比训练 76B tokens 使用 1090 GPU 小时。
瓶颈
瓶颈是 token 流中的浪费。2023 年大多数代码 LLM 的缩放工作在更大的语料和模型上花费了多得多的加速器时间。phi 的主张是,代码生成性能通常受限于示例的密度和教学质量,而不仅是参数数量或原始 token 数量。如果一个小的 A100 运行消耗冗余、有噪声、文档缺乏或不平衡的仓库文本,GPU 小时被花在学习从自然语言到代码的弱映射上。
这是以计算设备为中心的,因为论文将能力从模型/数据规模轴转移到数据质量轴。8 个 A100 对 1.3B 模型,配合 FlashAttention 和 fp16,是足够的,但不足以暴力执行万亿 token 的前沿训练。因此该方法必须让每个 token 做更多的工作。
方法适配
phi-1 通过在增加数据选择性的同时减少模型大小和语料大小来适配小 A100 预算。基座语料结合了约 6B 来自 The Stack 和 StackOverflow 的过滤代码语言 tokens 和不到 1B 的合成 GPT-3.5 生成的 Python 教科书 tokens。一个独立的 CodeExercises 微调集包含约 180M 合成习题与解答 tokens。综合来看,预训练数据包含不到 7B tokens,但模型对其进行了约 8 次遍历。
过滤步骤是原始规模的计算替代。作者用 GPT-4 标注约 100K 样本的教育价值,使用预训练 codegen 模型的嵌入训练一个分类器,并选择看起来像教科书质量教学示例的文件。合成教科书针对推理和基本算法技能,而 CodeExercises 将模型对齐到 docstring-to-function 补全。
在架构上,phi-1 在 FlashAttention 之外避免了奇特的效率技术。作者明确表示他们没有使用 Fill-In-the-Middle 或 Multi-Query Attention,两者都可能进一步提高代码模型效率。这使得计算结果更容易解读:大部分优势来自数据构建以及一个标准 decoder-only Transformer,在 8 个 A100 上配合 DeepSpeed 可以舒适运行。
证据
核心证据是规模-性能表。phi-1 有 1.3B 参数,7B token 数据集,在 HumanEval 上达到 50.6% pass@1,在 MBPP 上达到 55.5%。在同一表格中,CodeGen-Mono-16.1B 在 577B tokens 上训练,报告 HumanEval 29.3% 和 MBPP 35.3%;StarCoder 有 15.5B 参数、1T tokens,报告 HumanEval 33.6% 和 MBPP 52.7%。对比并非完美控制,但支持了计算效率论点。
图 2.1 隔离了数据质量。一个 1.3B phi-1-base 检查点在 CodeTextbook 上训练,在 51B tokens 和 770 GPU 小时后达到 HumanEval 29%。同一图中的 The Stack+ 模型训练了 76B tokens 和 1090 GPU 小时。论文还报告,对于 350M 模型,未过滤的 Stack 加 StackOverflow 即使在约 200B tokens 后也饱和在 HumanEval 12.19%,而过滤子集在 36K 步后达到 17.68%,在添加合成教科书后进一步提高到 20.12%。
微调规模小但影响大。CodeExercises 数据集不到 200M tokens,在同一 8 个 A100 上耗时约 7 小时,但最终的 phi-1 跃升至约 HumanEval 51%。在作者的 50 道非常规编码评估中,phi-1 得分 52%,而 phi-1-base 得分 37%。
历史影响
phi 是对超大规模密集 LLM 趋势的数据效率对照。它没有表明小模型普遍取代前沿模型。它表明的是,在狭窄领域内使用精心设计的课程,一次小规模 A100 训练运行可以达到与更大代码模型相关的基准分数。这使合成教科书数据、数据过滤和课程设计成为计算故事的一部分,而不仅是数据集卫生。
从历史上看,phi 帮助普及了"更有用的 tokens"可以在固定加速器预算下击败"更多 tokens"的理念。它也预示了后来的小模型工作,其中训练数据生成、剪枝和蒸馏被视为在受限训练和推理预算中适配能力的第一类杠杆。
局限
结果是领域特定且对基准敏感的。该模型针对 Python 代码生成和简单 docstring 风格任务训练,而非广泛的助手行为。论文因专有原因保留了部分合成数据生成细节,这限制了可复现性。作者还指出 GPT-3.5 生成的合成数据可能包含错误,附录 B 描述了来自小规模 1.3B/7B token 的弱点:对模糊自然语言的鲁棒性较差,通用性不如 ChatGPT 或 StarCoder,以及在复杂应用构建任务上的能力有限。
因此,计算主张应被窄读:phi 展示了在 8 个 A100 上通过策展和合成习题获得的强劲代码基准回报,而非对更大的多语言或通用预训练运行的普遍替代。
链接
- 计算范式:
history/compute_regimes/hyperscale_dense_llm_training/README.md - 来源 PDF 和抽取文本见上方元数据。
- Queue 状态:
read_complete。 - 方法索引:transformer、scaling_laws
- 对照更新:compute bottlenecks