了解半精度 (FP16) 如何通过更快的计算、更少的内存使用和高效的模型部署来加速 AI。
半精度是一种二进制浮点计算机数字格式,在计算机内存中占 16 位,通常称为 FP16。 通常称为 FP16。在快速发展的 在快速发展的深度学习领域,这种格式是标准 32 位单精度(FP16 在快速发展的深度学习领域,这种格式是传统用于数值计算的标准 32 位单精度(FP32)格式的有力替代。通过 通过减少表示每个数字所需的位数,半精度大大降低了内存 带宽压力和存储要求。 模型权重和激活的存储要求。这种效率使 研究人员和工程师可以训练更大的 神经网络或在资源有限的硬件上部署模型 在资源有限的硬件上部署模型 预测的准确性。
IEEE 754 标准定义了浮点数的结构。 其中 FP16 为符号分配 1 位,为指数分配 5 位,为分数(尾数)分配 10 位。 这种紧凑的表示方法与 FP32 形成鲜明对比,后者的指数使用 8 位,分数使用 23 位。在 在计算机视觉和其他人工智能任务中使用 FP16 在计算机视觉和其他人工智能任务中使用 FP16 的主要优势在于 加速数学运算。现代硬件加速器,如 NVIDIA )Tensor 内核等现代硬件加速器经过专门设计 以半精度执行矩阵乘法运算,速度远高于单精度运算。
然而,比特数的减少意味着动态范围变小,精度降低。这有可能导致 数值不稳定,例如 梯度消失 梯度消失,即数字变得太小,计算机无法将其与零区分开来。为了缓解这种情况,开发人员通常采用 混合精度策略 在 FP16 和 FP32 之间动态切换,以保持稳定性,同时充分利用半精度的速度。
半精度在现代人工智能工作流程中无处不在,尤其是在要求高吞吐量或低延迟的场景中。 延迟。
框架,如 PyTorch 和图书馆,如
ultralytics 使半精度的利用变得简单明了。下面的示例演示了如何
将YOLO11 模型导出到 TensorRT 使用 FP16 格式,这是
这是在NVIDIA ®)图形处理器上优化推理速度的常见做法。
from ultralytics import YOLO
# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT engine with half-precision enabled
# The 'half=True' argument ensures weights are converted to FP16
model.export(format="engine", half=True)
要了解半精度,就必须将其与术语表中的相关优化技术区分开来:
通过掌握这些格式,开发人员可以确保他们的 模型部署策略针对其项目的 特定的硬件和性能要求。