在大模型微调过程中,batch size 的设置对训练效率和模型性能有着至关重要的影响。本文将分享在 Transformer 架构微调中 batch size 设置的实用技巧,并提供可复现的实践方法。
1. Batch Size 的核心影响
在 Transformer 微调中,batch size 直接影响梯度估计的质量和训练稳定性。较大的 batch size 能够提供更稳定的梯度估计,但会增加内存占用;较小的 batch size 虽然节省内存,但可能导致训练不稳定。
2. 实践技巧与设置方法
内存优化策略
使用混合精度训练(Mixed Precision)可以显著减少显存占用。在 PyTorch 中,可以使用 torch.cuda.amp 进行优化:
from torch.cuda.amp import GradScaler, autocast
scaler = GradScaler()
for data in dataloader:
optimizer.zero_grad()
with autocast():
outputs = model(data)
loss = criterion(outputs, targets)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
动态 batch size 调整
根据 GPU 内存动态调整 batch size:
import torch
max_batch_size = 32
for batch_size in range(max_batch_size, 0, -1):
try:
# 尝试用当前 batch size 训练
train_one_epoch(batch_size)
print(f"成功使用 batch size: {batch_size}")
break
except RuntimeError as e:
if "out of memory" in str(e):
torch.cuda.empty_cache()
continue
3. 推荐配置方案
- 小模型(<1B参数):建议 batch size = 8-32
- 中等模型(1B-10B参数):建议 batch size = 32-64
- 大模型(>10B参数):建议使用梯度累积,如 batch size = 1,累积 32 步
通过合理设置 batch size,可以在训练稳定性和资源利用率之间找到最佳平衡点。

讨论