新知榜官方账号
2023-09-25 00:34:50
自动混合精度是一种自动将半精度和单精度混合使用,从而加速模型训练的技术。其中单精度(FloatPrecision32,FP32)是计算机常用的一种数据类型。半精度(FloatPrecision16,FP16)是一种相对较新的浮点类型,在计算机中使用2字节(16位)存储,更适于在精度要求不高的场景中使用。在深度学习领域,使用Float16代替Float32来存储数据,可以训练更大更复杂的模型,使用更大的batchsize。同时,混合精度计算的需求应运而生,可以将训练过程中一些对精度损失不敏感且能使用TensorCore进行加速的运算使用半精度处理,最大限度的提升访存和计算效率。
飞桨AMP技术仅仅通过一行代码即可帮助用户将单精度训练的模型修改为自动混合精度训练。同时通过黑白名单和动态LossScaling来保证训练的稳定性,避免出现INF或者NAN问题。飞桨AMP可以充分发挥新一代NVIDIAGPU中TensorCore的计算性能优势,ResNet50、Transformer等模型的训练速度与单精度训练相比可以提升到1.5~2.9倍。AMP技术在提升访存和计算效率的同时,伴随的副作用是由于半精度数据类型的精度范围与转换前的单精度相比过窄,容易产生INF和NAN问题。为避免此类问题,AMP技术实现了自动调整LossScaling功能,即在AMP训练过程中,为避免精度下溢,每训练一定数量批次的数据,就将Loss放大指定倍数。如果Loss在放大过程中发生上溢,则可以再缩小一定倍数,确保整个训练过程中,梯度可以正常收敛。
用户仅需要使用飞桨提供的AMP函数fluid.contrib.mixed_precision.decorate将原来的优化器SGDOptimizer进行封装,然后使用封装后的优化器更新参数梯度即可。同时,AMP技术实现了自动调整LossScaling功能,无需手动指定。在使用AMP训练过程中,系统会自动读取黑白名单,从而感知哪些算子需要被转换为半精度计算,不需要手动指定。对于某些特殊场景,如果开发者希望使用自定义的黑白名单,则可以使用AutoMixedPrecisionLists类设置。
飞桨AMP技术在ResNet50、Transformer等模型上训练速度相对于FP32训练来说有非常大的优势,单卡加速比可达2.9倍,八卡加速比可达2.8倍。AMP技术在深度学习训练中可以大幅度提升训练速度和访存效率。
在新发布的飞桨核心框架1.7版本上,AMP技术深度优化了多卡GPU训练。通过将梯度传输这个过程提到Cast操作之前,每个GPU卡在得到对应的半精度梯度后再执行Cast操作,将其转变为单精度类型,可以降低GPU多卡之间的梯度传输带宽,对减少带宽占用方面非常有效。
相关工具
相关文章
相关快讯
推荐
300美元的AI男友来了!马斯克的情感生意从女友做到男友
2025-08-01 17:56
Agent智能体:2025年企业新员工,月薪仅需一度电?
2025-07-30 17:49
国产GLM-4.5把AI价格打到地板价,实测强到离谱!
2025-07-30 09:08
用AI批量生成治愈系漫画,月入2000+
2025-07-29 09:59
千亿市场规模背后,AI短剧商业化迎来爆发期?
2025-07-17 09:19
15个作品涨粉26万!AI历史账号又出王炸案例!
2025-07-09 09:37
亲测真香!这6个AI工具让工作效率翻倍,同事追着问链接
2025-06-17 16:21
FLUX.1 Kontext 一出,AI生图领域 “地震” 了!
2025-06-06 15:38
用Deepseek写AI绘图提示词,像呼吸一样简单!
2025-02-19 16:12
你以为AI绘画是黑科技?其实早成了“路边摊生意”!
2025-02-19 10:15