降低数值精度以提高深度学习性能
降低數值精度以提高深度學習性能
Lowering Numerical Precision to Increase Deep Learning Performance
深度學習訓練和推理將成為未來幾十年的計算重量級。例如,訓練圖像分類器可能需要1018個單精度操作。這一需求使得深度學習計算的加速成為英特爾和整個人工智能界的一個重要研究領域。
我們特別興奮的一種方法是使用較低精度的數學運算進行深度學習推理和訓練。在英特爾最新發布的白皮書中,我們回顧了最近關于低精度深度學習的研究,了解英特爾如何在英特爾至強可伸縮處理器上促進低精度深度學習,并預覽即將開展的工作,以進一步加快當前和未來微體系結構的這些操作。
低精度操作的好處
如今,大多數商業深度學習應用程序在其訓練和推理工作負載中使用32位浮點精度。然而,許多研究[2]已經證明,訓練和推理都可以在較低的數值精度下進行,而結果的準確性幾乎沒有損失。
低精度操作有兩個主要好處。首先,許多深度學習操作都受內存帶寬的限制。在這些情況下,精度的降低可能允許更好地使用緩存并減少內存瓶頸。這樣可以更快地移動數據并最大化計算資源。第二,硅乘法器的精度和面積要求更低。這可以使硬件每秒執行更多的操作,從而進一步加速工作負載。由于這些優點,在不久的將來,使用較低精度操作將成為標準操作,特別是對于卷積神經網絡。
英特爾至強可伸縮平臺上的低精度操作
我們的白皮書詳細介紹了Intel Xeon可伸縮平臺的512位寬的融合乘法加法(FMA)核心指令(Intel?Advance Vector Extension 512(Intel?AVX-512)指令集的一部分,如何通過實現低精度乘法與高精度累加來加速深度學習。將兩個8位值相乘并將結果累加到32位需要三條指令,并且要求8位向量中的一個為無符號int8(u8)格式,另一個為帶符號int8(s8)格式,累加為有符號int32(s32)格式。這使得以增加3倍指令為代價的輸入增加了4倍,或者在內存需求為1/4的情況下,計算量增加了33.33%。此外,用于較低精度操作的減少的內存和更高的頻率可以進一步加快執行速度。有關詳細信息,請參見圖1。
圖1:Intel?Xeon?可伸縮處理器使用3條指令實現8位乘法和32位累加:VPMADDUBSW u8×s8→s16 multiples,vpmaddwdwd broadcast1 s16→s32,以及VPADDD s32→s32將結果相加到累加器。這使得在fp32上的輸入增加了4倍,指令增加了3倍,計算量增加了33.33%,內存需求增加了1/4。內存減少,頻率更高,精度更低,速度更快。以色列赫什的形象功勞。 低精度操作的未來改進
一組名為AVX512_VNNI(向量神經網絡指令)的英特爾AVX-512指令集將進一步提高未來微體系結構的深度學習性能。AVX512_VNNI包括用于8位乘法(32位累加u8×s8→s32)的FMA指令(如圖2所示)和用于16位乘法(32位累加s16×s16→s32)的FMA指令,如圖3所示。理論峰值計算增益分別是fp32 OPS的4倍int8運算和2倍int16運算。實際上,由于內存帶寬瓶頸,增益可能較低。編譯器對這些AVX512_VNNI指令的支持目前正在進行中。
圖2:AVX512_VNNI使用1條指令啟用8位乘法和32位累加。圖1中的VPMADDUBSW、VPMADDWD、VPADDD指令為熔合VPDPBUSD指令u8×s8→s32。這使得fp32上的輸入量增加了4倍,計算量(理論峰值)增加了4倍,內存需求量減少了1/4。以色列赫什的形象功勞。
圖3:AVX512_VNNI VPDPWSSD指令s16×s16→s32啟用16位乘法和32位累加。這使得fp32上的輸入增加了2倍,計算量(理論峰值)增加了2倍,內存需求減少了1/2。以色列赫什的形象功勞。
用于深層神經網絡(英特爾MKL-DNN)和低精度原語的英特爾數學內核庫
“英特爾®;數學內核深層神經網絡庫”(英特爾®;MKL-DNN)包含各種模型中常用的深度學習函數或原語,以及操作張量或高維數組布局所需的函數。為了更好地支持低精度原語,“英特爾MKL-DNN”中添加了新函數,用于在卷積層、ReLU層、融合卷積加ReLU層和池層中實現8位精度的推理工作負載。用于遞歸神經網絡(RNN)的函數、其他融合運算、用于推理的8位Winograd卷積以及增加對用于訓練的16位函數的支持被指定為未來的工作。有關量化模型權重和激活的說明以及“英特爾MKL-DNN”中較低數值函數的說明,請參閱我們的白皮書。
低精度操作的框架支持
Intel在Intel?發行版Caffe中啟用了8位推理。英特爾的DL推理引擎、ApacheMXNet和TensorFlow8位推理優化。所有這些8位優化目前僅限于CNN模型。
關于低精度操作的更多信息
Intel在多功能、知名、基于標準的Intel?體系結構上實現了卓越的深度學習性能,這一體系結構已被許多其他流行的工作負載所依賴。低精度操作為加速深度學習工作提供了一個令人興奮的機會。
總結
以上是生活随笔為你收集整理的降低数值精度以提高深度学习性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IaaS、PaaS 和 SaaS:云服务
- 下一篇: ffmpeg architecture(