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

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

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

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

论文笔记: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

    更多推荐文章

    查看全部
    • Rust 异步编程实战:构建高性能 WebSocket 服务
    • AIGC 音乐制作全流程:从旋律生成到人声合成
    • Windows 上如何用 Conda 管理多个 Python 版本?
    • Linux Shell 脚本基础语法与自动化运维实战
    • 宇树 G1 机器人强化学习训练实战教程
    • 构建 AI 逆向 MCP:使用 MCP 辅助 JS 逆向分析
    • Windows 本地部署 Ollama 与 OpenClaw 构建 AI 工作流
    • 全栈分页方案:MyBatisPlus 后端与 Thymeleaf 前端深度整合指南
    • 爬虫入门常见错误:5 个新手易踩的坑与解决方案
    • HarmonyOS 文件预览服务避坑指南:从入门到实战
    • 前缀和技巧详解:和为 K、被 K 整除、连续数组及矩阵区域和
    • Python 调用 Sambert API:语音合成函数封装最佳实践
    • Python 调用高德地图 MCP 服务查询天气示例
    • OpenClaw 开源 AI 助手部署与配置完全指南
    • OpenClaw 多机器人多 Agent 模式解析
    • Proxmox VE 无公网 IP 远程运维方案
    • 面向复杂路口的 Apollo 决策算法语义理解模块设计与仿真
    • Linux 进程概念:环境变量与进程地址空间
    • 医疗 AI 系统灰度上线策略与技术框架实践
    • Adoptium Temurin JDK 下载与安装指南

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如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