Batch Size
了解批大小如何影响机器学习训练速度和准确率。探索硬件限制,并使用 AutoBatch 优化 Ultralytics YOLO26。
在机器学习领域,尤其是在深度学习中,批量大小指的是在一次模型训练迭代中使用的训练样本数量。由于内存限制,将全部训练数据一次性输入神经网络通常在计算上不可行,因此数据集会被划分为称为批次的较小子集。模型处理一个批次,计算误差,并通过反向传播更新其内部的模型权重,然后再处理下一个批次。这个超参数在决定训练速度和学习过程稳定性方面都发挥着关键作用。
使用批次进行训练的动态变化#
批量大小的选择会从根本上改变优化算法(通常是随机梯度下降的某种变体)在损失曲面上的搜索方式。
- **小批量大小:**使用较小的数量(例如 8 或 16)会产生“嘈杂”的更新。虽然对于整个数据集而言,梯度估计的准确性较低,但这种噪声有时可以帮助模型逃离局部最小值,从而可能带来更好的泛化能力。不过,较小的批次需要在每个 epoch 中进行更多次更新,由于额外开销,这可能会使训练的实际耗时更长。
- **大批量大小:**较大的批次(例如 128 或 256)能够更准确地估计梯度,从而使损失函数更加平滑地收敛。它还可以利用现代硬件进行大规模并行处理,显著加快计算速度。不过,如果批次过大,模型可能会陷入尖锐且次优的最小值,导致过拟合,并降低对新数据的泛化能力。
硬件和内存影响#
实践者通常必须根据硬件限制而非纯粹的理论偏好来选择批量大小。深度学习模型,尤其是 Transformer 架构或先进卷积网络等大型架构,会存储在GPU的 VRAM 中。
使用 NVIDIA CUDA 进行加速时,VRAM 必须容纳模型参数、输入数据批次以及计算梯度所需的中间激活输出。如果批次大小超过可用内存,训练将因 "Out of Memory" (OOM) 错误而崩溃。人们通常会采用混合精度训练等技术来减少内存使用量,从而在相同硬件上使用更大的批次大小。
区分相关概念#
要有效配置训练,必须区分批量大小与训练循环中的其他时间相关术语。
- **批量大小与 epoch:**epoch 表示完整遍历一次整个训练数据集。批量大小决定了在该 epoch 内将数据划分为多少个块。例如,如果你有 1,000 张图像,批量大小为 100,那么完成一个 epoch 需要 10 次迭代。
- **批量大小与迭代:**一次迭代(或一步)是处理一个批次并更新权重的过程。训练中的迭代总数等于每个 epoch 的批次数乘以 epoch 总数。
- **批量大小与批归一化:**虽然名称相似,但批归一化是一种特定的层类型,它根据当前批次的均值和方差对层输入进行归一化。这项技术高度依赖批量大小;如果批量大小过小(例如 2),统计估计会变得不可靠,从而可能降低性能。
实际应用#
在各个行业部署计算机视觉解决方案时,调整批量大小是一项常规且必要的工作。
-
**高保真医学成像:**在医疗保健中的 AI领域,实践者经常处理 MRI 或 CT 扫描等 3D 体积数据。这些文件非常密集且占用大量内存。为了在不导致系统崩溃的情况下执行医学图像分析或复杂的图像分割等任务,工程师通常会将批量大小降到非常小的数值,有时甚至使用大小为 1 的批次。在这种情况下,优先考虑的是处理高分辨率细节,而不是原始训练速度。
-
**工业质量控制:**相反,在制造业中的 AI领域,速度至关重要。检查传送带上产品的自动化系统需要每小时处理数千张图像。在推理期间,工程师可能会将传入的摄像头画面聚合成更大的批次,以最大限度地利用边缘 AI设备,确保实时缺陷检测具有高吞吐量。
在 Python 中配置批量大小#
使用Ultralytics Python 软件包时,设置批量大小非常简单。你可以指定一个固定整数,也可以使用动态的 batch=-1 设置,该设置利用AutoBatch 功能自动计算硬件能够安全处理的最大批量大小。
以下示例演示了如何使用特定的批量设置训练一个YOLO26 模型——这是速度和准确率方面的最新标准。
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)为了管理大规模实验并可视化不同批量大小对训练指标的影响,Ultralytics Platform等工具提供了用于记录和比较运行结果的综合环境。对批量大小进行适当的超参数调优,通常是进一步挖掘模型最佳性能的最后一步。









