What is 批量大小?

    模型训练过程中在一次前向-反向传播中同时处理的训练样本数量,影响内存使用、训练速度和收敛行为。

    Definition

    批量大小是一个基本的训练超参数,决定了训练循环的单次迭代中从训练数据集同时处理多少样本。模型处理完一个批次后,计算该批次中所有样本的平均损失,并用它来计算更新模型权重的梯度。较大的批量大小提供更稳定的梯度估计(因为平均值是在更多样本上计算的),但需要成比例增加的GPU内存。

    在LLM微调中,批量大小特别受GPU内存限制。对于7B模型,单个训练样本可能消耗数GB的VRAM用于激活值、梯度和优化器状态。因此,微调的实际批量大小通常很小——每GPU通常为1到8个样本。为了在不超出内存限制的情况下获得更大有效批量大小的稳定性优势,从业者使用梯度累积:顺序处理多个小批次并累积它们的梯度,然后执行一次权重更新。有效批量大小32可以通过对4个批次(每批8个样本)进行梯度累积来实现。

    批量大小和学习率之间的关系已经被充分建立:更大的有效批量大小通常需要更高的学习率来维持训练动态,遵循线性缩放规则。这意味着在调整批量大小时,学习率通常需要成比例调整以维持稳定收敛。这两个超参数之间的相互作用是微调配置中的关键考虑因素之一。

    Why It Matters

    批量大小直接影响训练的三个关键方面:内存消耗(更大的批次需要更多VRAM)、训练速度(更大的批次更有效地利用GPU并行性)和收敛行为(更大的批次提供更平滑的梯度估计,但可能收敛到泛化能力较差的尖锐极小值)。对于GPU资源有限的团队来说——这包括大多数微调从业者——理解批量大小的权衡对于在硬件约束内最大化结果质量至关重要。批量大小设置不当可能导致内存溢出错误、浪费训练时间或次优的模型质量。

    How It Works

    在每个训练步骤中,数据加载器从训练数据集中选择batch_size个样本。这些样本被分词、填充到相同长度并堆叠成张量。模型同时对整个批次执行前向传播(利用GPU并行性),一次计算所有样本的预测。损失函数计算每个样本的误差并取平均值。反向传播计算这个平均损失相对于所有可训练参数的梯度。当使用梯度累积时,这些梯度在N个步骤中被添加到运行缓冲区中,然后优化器才应用累积的梯度来更新权重。有效批量大小为batch_size × gradient_accumulation_steps。

    Example Use Case

    一个团队在NVIDIA A100 40GB GPU上微调13B模型,发现批量大小为4时会导致内存溢出错误。他们将每设备批量大小减少到1,并将梯度累积步数设置为8,在VRAM限制内实现了有效批量大小为8。他们将学习率从2e-5调整到1e-5,以适应比原始计划更小的有效批量大小。训练成功完成,模型在3个epoch后达到了目标验证准确率。

    Key Takeaways

    • 批量大小决定了每个训练步骤处理多少样本。
    • 更大的批次提供更稳定的梯度但需要更多GPU内存。
    • 梯度累积在内存约束下模拟更大的批次。
    • 批量大小和学习率应该一起调整(线性缩放规则)。
    • 实际微调的批量大小通常为每GPU 1-8,通过梯度累积实现更大的有效批量大小。

    How Ertas Helps

    Ertas Studio根据选定的模型规模和Ertas Cloud中可用的GPU资源自动配置批量大小和梯度累积。需要手动控制的用户可以在高级超参数面板中调整这两个参数。平台在训练开始前通过估算VRAM需求来防止内存溢出错误,并建议合适的批量大小配置,使没有深厚硬件知识的用户也能可靠地训练模型。

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.