混合精度训练可通过框架内置工具实现自动化,核心步骤如下:
torch.cuda.amp
模块的autocast
和GradScaler
,或直接调用apex
库(需安装)。tf.config.optimizer.set_experimental_options({"auto_mixed_precision": True})
开启,框架自动优化计算图。fluid.contrib.mixed_precision.decorate
装饰优化器,支持黑白名单控制精度。autocast
(PyTorch)/框架内置策略自动将卷积、矩阵乘法等操作转换为float16
,保留Softmax
等层为float32
。float16
梯度下溢,反向传播后自动还原梯度。# PyTorch示例
scaler = torch.cuda.amp.GradScaler()
with torch.cuda.amp.autocast():
output = model(input)
loss = loss_fn(output, target)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
# TensorFlow示例
tf.config.optimizer.set_experimental_options({"auto_mixed_precision": True})
注:实际应用中需注意验证模型精度,部分场景(如小目标检测、低精度硬件)可能需要手动调整黑白名单或缩放策略。
引用来源: