1. 课程核心目标

本课程旨在通过交互式实验,将理论与实践相结合,帮助学生深入理解 Batch Size 和 Learning Rate Scaling 的动态关系及其对模型训练的影响。

理论深化:直观感受 η∗(B)(最优学习率随批次大小变化的理论曲线)的实际意义,并理解其如何指导我们的参数选择。

策略对比:掌握并评估三种核心放缩策略(No Scaling, Linear Scaling + Warmup, Sqrt Scaling)在真实训练场景中的性能表现和优缺点。

实践技能:学会使用梯度噪声标度(Gradient Noise Scale, GNS)作为核心指标,来估计当前训练设置下的“最大有效批次大小”(Bnoise​)。

分析能力:通过观察和对比不同策略下的训练损失、验证损失和收敛速度曲线,培养分析训练动态、诊断问题的能力。
  1. 核心概念复盘与深化

在开始实验前,我们先快速回顾并深化几个关键概念。

最大有效批次 Bnoise​

    定义:这是一个临界点。当 B<Bnoise​ 时,训练过程主要受“梯度噪声”(由于数据抽样带来的随机性)主导。此时,增大 Batch Size 可以显著降低噪声,加速收敛,效果非常明显。

    噪声主导区 (B<Bnoise​):增加 B 的“性价比”最高。

信号主导阶段 (B>Bnoise​)

    定义:当 B>Bnoise​ 时,梯度中的“真实信号”(数据分布的总体趋势)开始强于噪声。

    特点:此时,进一步增大 Batch Size 对收敛速度的提升微乎其微,其主要作用变为平滑梯度更新,提升训练的稳定性。然而,过大的批次也会增加计算成本和内存消耗。

三大放缩策略对比

策略 (Strategy)

核心思想

优点

缺点

No Scaling

学习率 η 固定,不随 B 变化。

实现最简单,小批次下表现稳定。

大批次下学习率可能过小,导致收敛极其缓慢。

Linear + Warmup

η∝B。例如,B 翻倍,η 也翻倍。

理论上能在大批次下保持最快的收敛速度。

对 warmup 阶段的长度和初始学习率非常敏感,否则易发散。

Sqrt Scaling

η∝B
​。增长比线性更平缓。

相比线性放缩更稳健,不易发散,是一种折中方案。

在极大批次下,收敛速度可能略慢于调优完美的线性策略。
3. 交互实验设计详解

本次实验的核心是一个集成的控制面板和三个动态图表,用于探索不同参数下的训练动态。
3.1 交互控件

滑块 - Batch Size (B):允许你从较小批次(如 16)动态调整到较大批次(如 2048),模拟不同计算资源和实验设置。

下拉菜单 - 策略 (Strategy):让你随时切换上述三种放缩策略,并立即在图表上看到效果对比。

3.2 图表
在这里插入图片描述

图 1: 最优学习率 η∗(B) 曲线

    内容:展示了理论上最优学习率 η∗ 如何随 B 增大而变化的曲线。图上会标记出 Bnoise​ 的位置。

    交互:当你拖动 Batch Size 滑块时,一个标记会沿着曲线移动,清晰地显示当前 B 对应的理论最优 η∗。同时,曲线会用不同颜色区分噪声主导区和信号主导区,让你直观理解当前批次处于哪个阶段。

图 2: 梯度噪声标度 (GNS) 曲线

    内容:展示 GNS 值如何随 B 增大而减小。GNS 越小,代表梯度噪声越低。

    交互:滑块的移动会同步更新图上的标记,让你看到增大批次是如何有效降低梯度噪声的。当 B 超过 Bnoise​ 后,GNS 的下降会变得平缓。

图 3 & 4: 训练/验证损失曲线

    内容:模拟在选定的策略和 Batch Size 下,模型训练过程中的训练损失(Training Loss)和验证损失(Validation Loss)随训练步数(Step)的变化。

    交互:这是实验的核心。

        切换策略:你会看到 Linear 策略在 warmup 后下降最快,No Scale 在大 batch 下几乎停滞,Sqrt 表现居中且稳定。

        调整 Batch Size:你会发现,在噪声主导区增加 B 对各策略的收敛速度都有显著提升。而在信号主导区,这种提升变得不那么明显。
  1. 引导性问题与思考

    将 Batch Size 设置得非常小(如 32),然后切换三种策略,观察它们的收敛速度差异。此时差异大吗?为什么?

    将 Batch Size 设置得非常大(如 2048),再次切换三种策略。No Scaling 策略的曲线有什么特点?这在实际训练中意味着什么?

    找到 Bnoise​ 的大致位置。分别在 B<Bnoise​ 和 B>Bnoise​ 的区域内调整 Batch Size,比较哪一个区域内调整 B 对收敛速度的影响更大?

    观察 Linear Scaling 策略。为什么它需要 “Warmup”?如果没有 Warmup,你认为损失曲线会呈现什么形态?(提示:过大的学习率在训练初期会导致什么问题?)

    在你的实际项目中,如果计算资源允许,你会倾向于将 Batch Size 设置在哪个区域?为什么?你会如何选择配套的学习率放缩策略?

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐