Token级BatchSize理论简介与计算

📅 发布时间:2026/7/16 13:13:54 👁️ 浏览次数:
Token级BatchSize理论简介与计算
目录1.从样本级Batch Size与Token级Batch Size1.1 样本级Batch Size1.2 Token级Batch Size2.Token级Batch Size计算方法2.1 Global Batch Size计算2.2 Token级Batch Size3.计算示例在大模型训练的工程实践中Batch Size批次大小是影响训练效率、收敛速度和模型性能的关键超参数。传统的Batch Size定义仅关注样本数量而在大模型预训练和SFT阶段由于序列长度的显著增长样本级的Batch Size已无法准确反映训练过程中的计算负载和梯度更新质量。因此Token级Batch Size成为更具指导意义的核心指标。1.从样本级Batch Size与Token级Batch Size1.1 样本级Batch Size在传统深度学习任务中Batch Size通常指单次前向 / 反向传播所使用的样本数量。例如在图像分类任务中Batch Size32意味着每次更新梯度时模型会处理32张图片。这种定义在样本维度固定、序列长度较短的场景下是有效的但在大模型训练中存在明显缺陷忽略序列长度差异大模型如Transformer的输入是变长序列不同任务或同一任务的不同阶段序列长度可能从几百扩展到几千甚至上万。样本级Batch Size无法区分“32个长度为512的样本” 和“32个长度为2048的样本”在计算量和Token数量上的差异。无法反映梯度更新的有效信息梯度更新的质量本质上取决于模型在多少Token上学习到的统计信息。样本级Batch Size相同但Token总数不同时梯度的稳定性和泛化能力会有显著差异。但在多机多卡、梯度累积、数据并行等复杂训练策略下样本级Batch Size的计算变得复杂而 Token级Batch Size可以提供更直观的基准便于跨场景对比和调优。1.2 Token级Batch SizeToken级Batch Size是指模型在一次梯度更新中总共处理的Token数量。它将样本级Batch Size与序列长度结合更精准地反映训练过程中的计算规模和梯度更新的有效信息。例如当 max_seq_len2048样本级Global Batch Size2048时Token级Batch Size 2048×2048 4,194,304约4M这正是大模型预训练中常用的基准规模。2.Token级Batch Size计算方法2.1 Global Batch Size计算要计算Token级Batch Size首先需要明确全局批次大小Global Batch Size即模型在一次梯度更新中处理的样本总数。在多机多卡、梯度累积和并行策略的复杂场景下Global Batch Size的计算公式为其中per_gpu_bs每个GPU上的样本Batch Size受单卡显存限制。gradient_accumulate_step梯度累积步数用于模拟更大的Batch Size而不增加显存占用。dp数据并行度Data Parallelism即参与数据并行的GPU数量。world_sizeGPU总量等于机器总数node_cnt乘以每台机器的GPU数量gpu_per_node。pp、tp、cp分别为流水线并行Pipeline Parallelism、张量并行Tensor Parallelism和上下文并行Context Parallelism的切分数量默认值为1。2.2 Token级Batch Size在得到Global Batch Size后Token级Batch Size的计算只需将其与序列长度相乘公式为token_global_batch_size​其中序列长度max_seq_len决定了每个样本包含的Token数量是Token级规模的核心乘数。单卡 Batch Sizeper_gpu_bs受限于单卡显存是工程实现的基础约束。梯度累积步数gradient_accumulate_step通过多次前向/反向传播累积梯度等效扩大 Batch Size。并行策略pp、tp、cp通过模型并行切分释放显存间接支持更大的Token级Batch Size。3.计算示例场景1大模型预训练假设配置如下机器总数node_cnt32台每台机器GPU数量gpu_per_node8张A10080GB单卡Batch Sizeper_gpu_bs16梯度累积步数gradient_accumulate_step8序列长度max_seq_len2048并行策略tp4pp2cp1则GPU总量world_size32×8256数据并行度dp256 / (2×4×1) 32Global Batch Size16×8×324096Token级Batch Size2048×40968,388,608约8MToken这一规模符合大模型预训练的常见基准4M~8M Token能够保证梯度更新的稳定性和模型收敛质量。场景2指令微调SFT假设配置如下机器总数node_cnt8台每台机器GPU数量gpu_per_node8张A10080GB单卡Batch Sizeper_gpu_bs8梯度累积步数gradient_accumulate_step4序列长度max_seq_len1024并行策略tp2pp2cp1则GPU总量world_size8×864数据并行度dp64/(2×2×1)16Global Batch Size8×4×16512Token级Batch Size1024×512524,288约0.5MToken这一规模远小于预训练阶段符合SFT阶段 “指令数据较少、可适当缩小等效Batch Size”的实践经验。