当前位置: 首页 > news >正文

Token级BatchSize理论简介与计算

目录

1.从样本级Batch Size与Token级Batch Size

1.1 样本级Batch Size

1.2 Token级Batch Size

2.Token级Batch Size计算方法

2.1 Global Batch Size计算

2.2 Token级Batch Size

3.计算示例


在大模型训练的工程实践中,Batch Size(批次大小)是影响训练效率、收敛速度和模型性能的关键超参数。传统的Batch Size定义仅关注样本数量,而在大模型预训练和SFT阶段,由于序列长度的显著增长,样本级的Batch Size已无法准确反映训练过程中的计算负载和梯度更新质量。因此,Token级Batch Size成为更具指导意义的核心指标。

1.从样本级Batch Size与Token级Batch Size

1.1 样本级Batch Size

在传统深度学习任务中,Batch Size通常指单次前向 / 反向传播所使用的样本数量。例如,在图像分类任务中,Batch Size=32意味着每次更新梯度时,模型会处理32张图片。这种定义在样本维度固定、序列长度较短的场景下是有效的,但在大模型训练中存在明显缺陷:

忽略序列长度差异:大模型(如Transformer)的输入是变长序列,不同任务或同一任务的不同阶段,序列长度可能从几百扩展到几千甚至上万。样本级Batch Size无法区分“32个长度为512的样本” 和“32个长度为2048的样本”在计算量和Token数量上的差异。

无法反映梯度更新的有效信息:梯度更新的质量本质上取决于模型在多少Token上学习到的统计信息。样本级Batch Size相同但Token总数不同时,梯度的稳定性和泛化能力会有显著差异。

但在多机多卡、梯度累积、数据并行等复杂训练策略下,样本级Batch Size的计算变得复杂,而 Token级Batch Size可以提供更直观的基准,便于跨场景对比和调优。

1.2 Token级Batch Size

Token级Batch Size是指模型在一次梯度更新中,总共处理的Token数量。它将样本级Batch Size与序列长度结合,更精准地反映训练过程中的计算规模和梯度更新的有效信息。例如,当 max_seq_len=2048,样本级Global Batch Size=2048时,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_size:GPU总量,等于机器总数(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 Size(per_gpu_bs):受限于单卡显存,是工程实现的基础约束。

梯度累积步数(gradient_accumulate_step):通过多次前向/反向传播累积梯度,等效扩大 Batch Size。

并行策略(pp、tp、cp):通过模型并行切分,释放显存,间接支持更大的Token级Batch Size。

3.计算示例

场景1:大模型预训练

假设配置如下:

机器总数(node_cnt):32台

每台机器GPU数量(gpu_per_node):8张A100(80GB)

单卡Batch Size(per_gpu_bs):16

梯度累积步数(gradient_accumulate_step):8

序列长度(max_seq_len):2048

并行策略:tp=4,pp=2,cp=1

则:

GPU总量(world_size)=32×8=256

数据并行度(dp)=256 / (2×4×1) =32

Global Batch Size=16×8×32=4096

Token级Batch Size=2048×4096=8,388,608(约8MToken)

这一规模符合大模型预训练的常见基准(4M~8M Token),能够保证梯度更新的稳定性和模型收敛质量。

场景2:指令微调(SFT)

假设配置如下:

机器总数(node_cnt):8台

每台机器GPU数量(gpu_per_node):8张A100(80GB)

单卡Batch Size(per_gpu_bs):8

梯度累积步数(gradient_accumulate_step):4

序列长度(max_seq_len):1024

并行策略:tp=2,pp=2,cp=1

则:

GPU总量(world_size)=8×8=64

数据并行度(dp)=64/(2×2×1)=16

Global Batch Size=8×4×16=512

Token级Batch Size=1024×512=524,288(约0.5MToken)

这一规模远小于预训练阶段,符合SFT阶段 “指令数据较少、可适当缩小等效Batch Size”的实践经验。

http://www.jsqmd.com/news/451575/

相关文章:

  • 丹青识画系统Python入门教程:10分钟实现图像智能分类
  • nomic-embed-text-v2-moe入门必看:Matryoshka嵌入如何实现768→128动态压缩
  • 3步实现象棋AI辅助:VinXiangQi如何让计算机视觉成为你的对弈教练
  • Python网关内存泄漏导致产线停机?用eBPF追踪3分钟定位PyModbus循环引用根源(附Grafana实时内存热力图模板)
  • 5分钟学会:用Qwen3-ForcedAligner将MP3录音变成带时间轴的字幕文件
  • yz-bijini-cosplay中小企业落地案例:低成本搭建自有Cosplay内容生成平台
  • DAMO-YOLO TinyNAS部署教程:EagleEye适配NVIDIA JetPack 6.0环境
  • 解锁MZmine 3:从基础到实践的创新指南
  • GME多模态向量模型运维指南:在Linux服务器上的持续部署与监控
  • FRCRN实时流式处理模式配置教程
  • StructBERT零样本分类-中文-base企业级部署:灰度发布+AB测试+效果追踪
  • 重构B站浏览体验:BewlyBewly模块化组件架构的革新实践
  • Dillinger:重新定义Markdown创作的效率引擎
  • MZmine 3 质谱数据处理平台:功能解析与实践指南
  • 墨语灵犀开发者部署教程:Kubernetes集群中墨语灵犀服务编排实践
  • Wan2.2-T2V-A5B入门实战:三步完成文字到视频的魔法转换
  • Dillinger:重新定义Markdown编辑体验的开源解决方案
  • MogFace-large部署教程:Nginx反向代理+HTTPS配置保障Web服务生产可用
  • HY-MT1.5-1.8B翻译模型5分钟快速部署:手机端1GB内存就能跑
  • SenseVoice-small效果展示:120秒会议录音→结构化纪要+情感标签
  • 揭秘BewlyBewly事件驱动架构:构建高效B站主页体验的核心引擎
  • StructBERT文本相似度模型效果验证:LCQMC测试集92.3%准确率展示
  • 如何训练你的“潜变量“?Google DeepMind 提出 Unified Latents,用扩散模型同时编码、正则化和生成
  • Qwen-Image-2512-Pixel-Art-LoRA快速上手指南:3步完成太空宇航员像素图生成
  • 在VMware虚拟机中体验Lingbot-Depth-Pretrain-VitL-14:Windows下的完整Linux开发环境
  • Local SDXL-Turbo效果展示:赛博朋克风摩托车在雨夜霓虹街道的动态氛围
  • 小白也能搞定:造相-Z-Image在RTX 4090上的极简UI使用与参数调优心得
  • 保姆级教程:用PyTorch-CUDA-v2.9镜像3步开启AI开发
  • MySQL数据库智能运维助手:基于SmallThinker-3B-Preview的SQL优化与故障诊断
  • 如何通过计算机视觉技术实现中国象棋智能分析与辅助决策