术语表

混合精度

通过混合精度训练加速深度学习。使用 FP16 和 FP32 格式减少内存使用量、提高速度并保持精度。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

混合精度是深度学习中的一种训练方法,它利用多种数值精度来加快训练过程,同时保持模型精度。通常,深度学习模型使用 32 位浮点数(FP32)来表示权重、激活和梯度。混合精度在 FP32 的基础上引入了 16 位浮点数(FP16),充分利用两种格式的优势来提高计算效率。

混合精度的优势

混合精度为深度学习模型的训练提供了几个关键优势:

  • 减少内存占用:与完全使用 FP32 相比,使用 FP16 可将模型的内存占用减少一半。这种减少允许训练更大的模型或使用更大的批量,从而提高模型性能。了解有关优化批量大小及其对训练效率影响的更多信息。
  • 提高训练速度:FP16 数字的运算速度通常比 FP32 快,尤其是在具有 16 位计算专用硬件的现代 GPU 上。这种加速可以大大减少训练模型所需的时间。探索GPU如何加速人工智能和 ML 计算。
  • 能源效率:内存带宽的减少和计算速度的加快还能降低功耗,使混合精度训练更加节能,这对于在边缘设备或大规模数据中心的部署尤为重要。了解有关边缘计算及其优势的更多信息。

混合精度如何工作

在混合精度训练中,权重和激活以 FP16 格式存储,以节省内存和加速计算。但是,为了保持精度,权重的主副本保存为 FP32 格式。在每次训练迭代中,前向和后向传递都使用 FP16 格式,但权重更新则使用 FP32 格式。这种方法将 FP16 的速度和内存优势与 FP32 的精度和稳定性相结合。

混合精度的关键概念

理解混合精度需要熟悉几个关键概念:

  • FP32(单精度):大多数深度学习模型中使用的标准 32 位浮点格式。它精度高,但需要更多内存和计算资源。
  • FP16(半精度):16 位浮点格式,可减少内存使用量并提高计算速度。不过,它的动态范围和精度较低,可能导致训练过程中出现梯度消失等问题。
  • 损耗缩放:用于避免 FP16 可能出现的下溢问题。在反向传播之前,损失会被放大一个系数,而在权重更新之前,所产生的梯度会被缩减。这有助于保持小梯度的大小,否则在 FP16 中可能会被舍入为零。

应用和实际案例

混合精度训练在各种深度学习应用中被广泛采用,包括

  • 计算机视觉:训练大型计算机视觉模型,如用于物体检测图像分类图像分割的模型,可从混合精度中获益良多。例如,Ultralytics YOLO ("只看一次")模型可以使用混合精度以更大的批量更快地进行训练,从而实现更快的实验和模型迭代。了解更多 Ultralytics YOLO更多信息。
  • 自然语言处理 (NLP): BERT和其他Transformer架构等模型可以利用混合精度来减少训练时间和内存使用量。这在处理大型文本数据集和复杂模型时尤其有用。了解有关自然语言处理 (NLP)应用的更多信息。
  • 医疗保健:在医学影像领域,混合精度可以加速肿瘤检测和器官分割等任务的模型训练。这有助于更快地开发诊断工具,支持及时的医疗干预。了解人工智能在医疗保健领域的作用。
  • 自动驾驶汽车:为自动驾驶车辆训练模型需要处理大量传感器数据。混合精度有助于管理计算负荷,从而更高效地训练处理物体检测、车道保持和其他关键任务的模型。

混合精度与其他技术

虽然混合精度是一种强大的技术,但必须了解它与其他优化方法的不同之处:

  • 模型量化:这种技术包括将权重和激活的精度降低到 8 位整数 (INT8) 甚至更低。模型量化可以进一步减少内存使用量并提高速度,但与混合精度相比,可能会导致更严重的精度损失。
  • 模型剪枝 模型剪枝是指删除神经网络中不必要的连接或神经元,以减小其规模和计算复杂度。虽然模型剪枝是混合精度的补充,但它的重点是减少模型大小,而不是在训练过程中管理数字精度。

通过将混合精度与其他优化技术相结合,开发人员可以在其深度学习模型中实现更高的效率和性能。例如,将混合精度与 Weights & Biases等工具进行整合,可以进一步增强实验跟踪和模型优化。

结论

混合精度训练是一种既能加快深度学习模型训练,又能节省计算资源的重要技术。通过战略性地同时使用 FP16 和 FP32,开发人员可以在不牺牲模型精度的情况下显著缩短训练时间和内存使用量。这使得它成为从计算机视觉和 NLP 到医疗保健和自动驾驶等广泛应用的重要工具。随着对 16 位计算的硬件支持不断改进,混合精度在深度学习领域可能会变得更加普遍。

阅读全部