所有 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
2018年5月17日
閱讀更多 百度AI 的文章