跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言AI算法

大语言模型大 Batch 训练临界 Batch Size 经验测量与优化策略

大语言模型训练中,增大 Batch Size 可提升吞吐量但存在边际效应递减。通过分支训练实验发现临界 Batch Size(CBS) 随训练动态演变且与模型规模无关,现有梯度噪声尺度理论在 Adam 优化器下失效。提出 Batch Size Warmup 策略,动态调整 Batch Size,在不损失性能前提下减少 43% 梯度步数,为大规模模型训练提供高效配置方案。

PgDevote发布于 2026/4/9更新于 2026/5/2217 浏览

论文笔记:Critical Batch Size Revisited

论文题目: Critical Batch Size Revisited: A Simple Empirical Approach to Large-Batch Language Model Training. 作者机构: Allen Institute for AI (William Merrill et al.) 一句话总结: 论文提出了一种通过'分支训练'直接测量临界 Batch Size (CBS) 的经验方法,发现现有的'梯度噪声尺度'方法在 LLM 训练中不可靠,并提出'Batch Size Warmup'策略,在不损失性能的前提下减少了 43% 的梯度步数。

1. 背景和动机

1.1 大模型训练的痛点与 Batch Size 权衡

  • 背景: LLM 训练极其昂贵,提高吞吐量是核心诉求。
  • 手段: 数据并行是主要手段,即增大 Batch Size (BS)。
  • 权衡(Trade-off):
    • BS 过小:训练慢,无法充分利用硬件并行能力。
    • BS 过大:边际效应递减(Diminishing Returns)。虽然每步处理了更多数据,但模型收敛所需的 Token 总量变多了(样本效率下降)。
  • 核心概念: Critical Batch Size (CBS, B*) —— 超过这个阈值,增加 BS 会导致计算效率下降。

1.2 既有方法及其局限性

  • 主流理论: McCandlish et al. (2018) 提出的基于梯度噪声尺度 (Gradient Noise Scale) 的估算方法。
    • 该理论认为:CBS = 梯度的方差与梯度范数之比。
    • GPT-3 等著名工作都参考了这一理论。
  • 本文的质疑: McCandlish 的方法依赖两个强假设:
    1. SGD 假设:假设优化器是 SGD(但 LLM 主要用 Adam)。
    2. 良态假设:假设 Hessian 矩阵是单位矩阵的倍数(实际并不成立)。
  • 结论: 在 Adam 优化器和 LLM 场景下,噪声尺度(Noise Scale)可能不是 CBS 的有效代理。

2. 实验方法

2.1 本文提出的方法:分支训练

  • 核心思想: 不依赖理论假设,直接用实验'测量'CBS。
  • 操作步骤:
    1. 取一个训练中的检查点。
    2. 以当前 BS 为基准,开启多个'分支'训练任务。
    3. 每个分支使用不同的 BS 倍数,并相应调整学习率(Adam 用平方根缩放)。
    4. 训练一个小窗口步数 $\Delta$ (文中取 2B tokens)。
    5. 判定标准:如果大 BS 分支的 Loss 在 $\Delta$ 步后能恢复到与小 BS 分支相近(误差 $\epsilon$ 内),则认为该 BS 是'安全'的。

2.2 关键假设:局部恢复

  • 假设: 如果在 $\Delta$ tokens 的短时间训练后,大 BS 的 Loss 能追平小 BS,那么在之后的训练中它也能保持住。
  • 优势: 相比于 McCandlish 对优化器和 Loss 地形的强假设,这个'局部恢复'假设在工程上更弱、更易验证。
  • 参数细节:
    • 窗口 $\Delta$ = 2B tokens。
    • 容忍度 $\epsilon$ = 0.01。
    • Loss 经过了平滑处理。

2.3 实验设置 (OLMo Models)

  • 模型: OLMo 1B 和 OLMo 7B。
  • 数据: Dolma 数据集。
  • 基准: 与 McCandlish 的梯度噪声尺度计算进行对比。
  • 亮点: 使用完全开源的模型和数据,确保可复现性。

3. 实验发现与分析

图片

发现一:CBS 随训练过程动态演变

  • CBS 在初始化时接近 0。
  • 在训练初期(前 50B tokens)迅速增长。
  • 随后进入平台期(Plateau),稳定在约 4096 (documents) 左右。
  • 结论: CBS 不是一个静态常数,而是一个动态变化的量。这意味着在训练初期应该用小 BS,后期可以用大 BS。

发现二:模型规模不影响 CBS

  • 对比 1B 和 7B 的曲线:
    • 两条曲线的形态和数值惊人地相似。
    • 启示: 我们可以用小模型(1B)测出的 CBS 规律,去指导大模型(7B 甚至更大)的训练配置,节省昂贵的探索成本。

发现三:梯度噪声尺度不可靠

图片

  • 实测的梯度噪声尺度(红色虚线)与本文测量的真实 CBS(蓝色实线)完全对不上。
  • 噪声尺度严重低估了真实的 CBS(差了几个数量级)。
  • 趋势也不匹配(特别是在 7B 模型上)。
  • 打击: 证明了 McCandlish (2018) 的理论在 LLM/Adam 场景下失效。

4. 应用与结果

4.1 提出的策略:Batch Size Warmup

  • 策略逻辑: 既然 CBS 随时间增长,我们应该动态调整 BS。
  • 具体算法:
    1. 从小 BS 开始。
    2. 定期检测 CBS 是否超过了当前 BS 的两倍。
    3. 如果是,则将 BS 翻倍,并根据 $2\sqrt{2}$ 规则调整学习率。
  • 实施: 在 OLMo 1B 训练中,BS 经历了两次翻倍(1024 -> 2048 -> 4096)。

4.2 核心结果对比 (Table 1)

图片

  • 三组对比实验:
    1. Small-Batch Control (一直用小 BS,1024): 理论上 Loss 最好,但慢。
    2. Large-Batch Control (一直用大 BS,4096): 跑得快,但初期 BS > CBS,导致 Loss 差。
    3. BS Warmup (Ours): 动态调整。
  • 结果炸裂:
    • Loss: Warmup 方法的最终 Loss 甚至略优于 Small-Batch (2.5433 vs 2.5486)。
    • 效率: 相比 Small-Batch,节省了 43% 的梯度步数。

对比 Large-Batch:Large-Batch 虽然也快,但最终 Loss 明显变差,且无法恢复。

图片

4.3 下游任务性能 (Downstream Tasks)

图片

  • 不仅仅看 Training Loss,还看了下游任务(C4, The Pile, BPB 等)。
  • BS Warmup 在各项指标上均与 Small-Batch 持平或略优。
  • 结论: 这种加速方法是'免费的午餐',没有副作用。

5. 总结与个人思考

5.1 论文总结

  1. 方法论: 提出了基于分支训练的 CBS 测量法,不依赖强理论假设。
  2. 科学发现: CBS 随训练过程增长并趋于平稳;CBS 与模型大小无关。
  3. 工程价值: 证明了 Gradient Noise Scale 在 LLM 上的失效;提出了 BS Warmup,实现了 40%+ 的训练加速。

5.2 局限性分析

  • 成本问题: 虽然比从头跑多次要省钱,但'分支训练'本身依然需要额外的计算资源(每次 Checkpoint 都要分叉跑 2B tokens)。
  • 参数敏感性: $\Delta$ (窗口大小) 和 epsilon(容忍度)的选择比较经验主义。如果 $\Delta$ 选小了,可能误判 CBS。
  • 通用性验证: 目前只验证了 OLMo 架构和 Dolma 数据集,是否适用于 MoE 或其他架构还需验证。

5.3 工程实践启示

  • 如果我们要训练新模型:不要迷信 OpenAI 提到的 Gradient Noise Scale。
  • 调参策略:不要从头到尾用固定的 Batch Size。可以尝试手动实现简单的 Warmup(比如在前 10% step 用小 BS,后面翻倍),这可能在资源受限的情况下提升效果。
  • Proxy 的使用:可以用小模型(如 1B)先跑一遍确定 CBS 曲线,直接套用到大模型训练中。

6. Q&A

(1) 'Noise Scale 是错的'? 我们以前可能一直以为梯度的方差能告诉我们 Batch Size 设多少,但这篇论文说在用 Adam 的时候这完全是误导。

(2) 关于 Methodology:'这样测量是不是很贵?' 确实有开销,但相比于盲目用小 BS 浪费的时间,或者用大 BS 导致模型训练坏了重跑,这个开销是划算的。而且作者发现 1B 的规律可以用在 7B 上,这大大降低了测量成本。

(3) 关于公式:Paper 中提到了 k√k scaling rule for Adam。为什么不是线性缩放(Linear Scaling) 因为 Adam 的 update rule 里分母有二阶矩估计,导致梯度的 scaling 变成了平方根关系(引用 Malladi et al., 2022)。

(4) Appendix D,作者试图推导 T√T 的 scaling law,但最后认为经验测量比强行推导理论更靠谱。这显示了作者严谨的态度。

目录

  1. 论文笔记:Critical Batch Size Revisited
  2. 1. 背景和动机
  3. 1.1 大模型训练的痛点与 Batch Size 权衡
  4. 1.2 既有方法及其局限性
  5. 2. 实验方法
  6. 2.1 本文提出的方法:分支训练
  7. 2.2 关键假设:局部恢复
  8. 2.3 实验设置 (OLMo Models)
  9. 3. 实验发现与分析
  10. 4. 应用与结果
  11. 4.1 提出的策略:Batch Size Warmup
  12. 4.2 核心结果对比 (Table 1)
  13. 4.3 下游任务性能 (Downstream Tasks)
  14. 5. 总结与个人思考
  15. 5.1 论文总结
  16. 5.2 局限性分析
  17. 5.3 工程实践启示
  18. 6. Q&A
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Scapy 详细安装教程、功能介绍与快速上手
  • LoRA 训练助手:快速生成 Stable Diffusion 专业训练标签
  • Lostlife2.0 角色对话系统升级:LLama-Factory 微调实战
  • Python 轻量级环境管理工具 UV 入门与 Windows 安装实战
  • SpringBoot 集成 RabbitMQ 入门教程:Hello World 实战
  • GESP 2025 年 12 月 C++ 一级认证真题与解析:判断题 1-10
  • Flutter whatsapp_bot_flutter 鸿蒙适配实战指南
  • LLaMA-Factory 微调多模态大模型 Qwen3-VL
  • Gaussian Grouping:在三维场景中分割与编辑任意对象
  • Qwen3-VL 结合 LLaMA-Factory 进行 Grounding 任务 LoRA 微调
  • C++11 核心新特性详解:初始化、引用与移动语义
  • 金仓数据库与 InfluxDB 时序性能对比及 SQL 兼容性分析
  • Git LFS 安装教程:Linux、macOS 与 Windows 全平台指南
  • Mac 抹除重装卡在激活锁的两种解锁方案
  • 2026年,我整理了中国 200 多家机器人(具身智能)公司名单
  • AI 提示词工程:原理、策略与精通之道
  • 银河麒麟服务器版 Nginx Web 服务部署实战
  • 工作中常用的几种设计模式实战
  • 双指针算法进阶:从三角形计数到四数之和
  • 基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online