来源:搜狐科技
所有 PaddlePaddle 的应用者们:
我们很高兴地宣布,
PaddlePaddle Fluid 可以支持在卷积神经网络上进行 float 16模式的低精度预测了!
同时在 NVIDIA 最新的支持 Tensor core 的 GPU 提供的 float 16加速运算支持下,float 16模式的预测在不损失准确率的情况下,实现了很大的加速效果(跟float 32比较)!
为什么可以非常开心的庆祝起来?
这就需要从 float 讲起。通常的深度学习预测(inference)的参数,输入输出和运算都是用的4个字节的 float(也叫 float 32)浮点数表示。 Float 指的是浮点数,由 IEEE 指定规则,这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定位2。float 包括1个符号位、8个指数位和23个尾数位。
如果改成用2个字节的 float 16浮点数来表示,可以节约内存占用、耗电量和运算时间。PaddlePaddleFluid 完成了在卷积神经网络(CNN)上进行 float16inference 的支持。跟 float 32模式的预测比较,在准确率一致的前提下,float 16模式的预测在 GPU 上更快,更省电,更节省内存占用。
这就好比在吃食物时,同样热量的棉花糖和软糖,显然后者的食用速度是快于前者的,这样也可以尽快消化。
加速效果到底是怎样的呢?
PaddlePaddle 在支持 float 16加速运算(NVIDIA 的 Tensor Core 技术) 的 NVIDIA 最新 GPU(V100)上测试了 Fluid float 16 预测(inference)的效果,可以总结为两点:
(1)float16inference 的准确率: 和 float32inference 的准确率非常一致。
(2)float16inference 的加速效果(跟 float 32模式下平均一个 batch 的预测时间做比较):在 Vgg 16上随着 batch size 的不同有2~4倍的加速效果,在 Resnet 50上有1.15~2倍的加速效果。
这也就是说,今后再使用 PaddlePaddle Fluid 时,参数处理速度被大大提升,能够留出更多时间可以用于后续的模型搭建和训练环节,这就像高铁提速能够让大家更快到达目的地,此次改变能让开发者们快捷操作,把更多的 Idea 更好更快速的实现!
当然,这一突破的背后,除了感谢夜以继日付出努力的开发工程师们,更是要感谢 PaddlePaddle 使用者们。PaddlePaddle Fluid 仍在不断成长,希望今后能够带给大家更多惊喜,也欢迎各位开发者们及时提出问题与建议!感谢每位使用 PaddlePaddle 的开发者们的信任!
你们的 PaddlePaddle