深圳Yolo 视觉
深圳
立即加入
词汇表

混合精度

通过混合精度训练提高深度学习效率!在不牺牲准确性的前提下,实现更快的速度、更少的内存使用和节能。

混合精度是一种功能强大的优化技术。 深度学习策略性地 混合精度是一种强大的深度学习优化技术,它战略性地结合了不同的数值格式,特别是 16 位(半精度)和 32 位(单精度)浮点型 类型,以加速 模型训练并减少 内存使用量。通过以较低精度执行计算密集型操作,同时保留一个 模型权重的主副本、 这种方法可在现代硬件上显著提高速度,同时不影响 精度或最终网络的稳定性 网络的准确性或稳定性。它能有效地让研究人员和工程师训练更大的 神经网络或增加 批次规模在相同的硬件 限制。

混合精度的工作原理

混合精度的核心机制依赖于现代加速器的结构,例如那些配备了 NVIDIA Tensor 核心等现代加速器的架构,它们能以 半精度(FP16)的矩阵乘法速度 比标准单精度(FP32)更快。这一过程一般包括三个关键步骤:

  1. 铸造:业务,如 卷积和矩阵 和矩阵乘法等运算会被转换为 FP16。这减少了所需的内存带宽,加快了计算速度。
  2. 主权重维护:模型参数的主副本保存在 FP32 中。在 反向传播过程中梯度在 FP16 中计算,但会应用到 FP32 主权重中。这就保留了小梯度 由于 FP16 的范围有限,可能会丢失的小梯度更新,从而避免出现以下问题 梯度消失.
  3. 损耗缩放:为进一步确保数值稳定性,损耗的 损失函数通常会乘以 乘以一个缩放因子。这样可以将梯度值转移到 FP16 可以更有效地表示的范围内,避免在权重更新之前出现下溢误差。 下溢错误。

实际应用

混合精度已成为人工智能各个领域的标准做法,因为它能最大限度地提高硬件效率。 最大限度地提高硬件效率。

  • 培训最先进的视觉模型:开发高性能 计算机视觉 架构,例如 Ultralytics YOLO11等海量数据集上进行训练。 COCO.混合精度使得这些训练运行的完成速度大大加快,从而允许更多的 超参数调整和 更快的部署周期。
  • 大型语言模型(LLM):创建 基础模型大型语言模型 需要处理 TB 级的文本数据。混合精度在这里至关重要,因为它可以将激活所需的内存减半。 激活所需的内存减半,从而使拥有数十亿参数的模型能够适应于 GPU.

利用Ultralytics实现混合精度

"(《世界人权宣言》) ultralytics 库简化了自动混合精度 (AMP) 的使用。默认情况下,训练 例程会检查兼容硬件并启用 AMP,以确保最佳性能。

from ultralytics import YOLO

# Load the YOLO11 model for training
model = YOLO("yolo11n.pt")

# Train using Automatic Mixed Precision (AMP)
# 'amp=True' is the default setting, ensuring faster training on supported GPUs
results = model.train(data="coco8.yaml", epochs=5, imgsz=640, amp=True)

混合精度与相关术语

将混合精度与其他优化和数据表示概念区分开来很有帮助:

  • Vs.半精度纯半精度 (FP16) 以 16 位格式存储和计算所有内容。虽然这可以最大限度地提高速度,但在训练过程中往往会导致 数值不稳定和训练时收敛性差。混合精度通过保留 FP32 主拷贝以实现稳定的权重更新,从而缓解了这一问题。
  • Vs.模型量化 量化会进一步降低精度,通常会将权重转换为整数(INT8),以优化 推理延迟和模型 大小,以便在 边缘人工智能设备上部署的推理延迟和模型大小。 混合精度主要是在训练时使用浮点数进行优化,而量化 而量化通常是在训练后进行推理。
  • Bfloat16脑浮点运算 (Bfloat16)是Google开发的另一种 16 位格式。与标准 IEEE 754FP16 不同,Bfloat16 保持了与 FP32 相同的 指数范围与 FP32 相同,使其在没有激进损耗缩放的情况下对下溢具有更强的鲁棒性。它通常用于 上的混合精度训练中。 TPU和较新 GPU 的混合精度训练中。

支持的框架包括 等框架PyTorch 支持下等框架的支持下,混合精度仍然是实现高性能深度学习平民化的最有效方法之一、 使开发人员能够在可访问的硬件上训练复杂的模型。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入