DSP48E2 Slice 上優化 INT8 深度學習運算分析

2021-01-13 電子發燒友
DSP48E2 Slice 上優化 INT8 深度學習運算分析

Yao Fu、Ephrem Wu、 發表於 2017-11-16 14:23:01

賽靈思 INT8 優化為深度學習推斷提供了性能最佳、能效最高的計算技術。賽靈思的集成式 DSP 架構與其他 FPGA DSP 架構相比,在INT8 深度學習運算上能實現 1.75 倍的解決方案級性能。

概要

本白皮書旨在探索實現在賽靈思 DSP48E2 Slice 上的 INT8 深度學習運算,以及與其他 FPGA 的對比情況。在相同資源數量情況下,賽靈思的 DSP 架構憑藉 INT8在 INT8 深度學習每秒運算次數 (OPS) 上相比其它 FPGA,能實現 1.75 倍的峰值解決方案級性能。由於深度學習推斷可以在不犧牲準確性的情況下使用較低位精度,因此需要高效的 INT8 實現方案。

賽靈思的 DSP 架構和庫專門針對 INT8 深度學習推斷進行了優化。本白皮書介紹如何使用賽靈思 UltraScale 和 UltraScale+ FPGA 中的DSP48E2,在共享相同內核權重的同時處理兩個並行的 INT8 乘法累加 (MACC) 運算。本白皮書還闡述了要運用賽靈思這一獨特技術,為何輸入的最小位寬為 24 位。本白皮書還以 INT8優化技術為例,展示了該技術與神經網絡基本運算的相關性。

用於深度學習的 INT8

深度神經網絡(DNN)已掀起機器學習領域的變革, 同時運用新的達到人類水平的 AI 功能重新定義眾多現有的應用。

隨著更精確的深度學習模型被開發出來,它們的複雜性也帶來了高計算強度和高內存帶寬方面的難題。能效正在推動著深度學習推斷新模式開發方面的創新,這些模式需要的計算強度和內存帶寬較低,但絕不能以犧牲準確性和吞吐量為代價。降低這一開銷將最終提升能效,降低所需的總功耗。

除了節省計算過程中的功耗,較低位寬的計算還能降低內存帶寬所需的功耗,因為在內存事務數量不變的情況下傳輸的位數減少了。

研究顯示要保持同樣的準確性,深度學習推斷中無需浮點計算[ 參考資料 1][ 參考資料 2][ 參考資料 3],而且圖像分類等許多應用只需要 INT8 或更低定點計算精度來保持可接受的推斷準確性[ 參考資料 2][ 參考資料 3]。表 1 列出了精調網絡以及卷積層和完全相連層的動態定點參數及輸出。括號內的數字代表未精調的準確性。

表 1 :帶定點精度的 CNN 模型

賽靈思 DSP Slice 片上的 INT8 深度學習

賽靈思的 DSP48E2 設計用於在一個時鐘周期內高效地完成一個乘法累加算法, 多達 18x27 位的乘法和多達 48 位的累加,如圖 1 所示。除了採用回送或連結多個 DSP Slice,乘法累加 (MACC) 也能使用賽靈思器件高效完成。

圖 1 :使用 MACC 模式的 DSP Slice

在運行 INT8 計算時,較寬的 27 位寬自然佔有優勢。在傳統應用中,預加法器一般用於高效實現 (A+B) x C計算,但這類計算在深度學習應用中很少見。將 (A+B) x C 的結果拆分為 A x C 和 B x C,然後在獨立的數據流中進行累加,使之適用於典型深度學習計算的要求。

對 INT8 深度學習運算來說,擁有 18x27 位乘法器很佔優勢。乘法器的輸入中至少有一個必須為最小 24位,同時進位累加器必須為 32 位寬,才能在一個 DSP Slice 上同時進行兩個 INT8 MACC 運算。27 位輸入能與 48 位累加器結合,從而將深度學習求解性能提升 1.75 倍(1.75:1 即為 DSP 乘法器與 INT8 深度學習 MACC 的比率)。其他廠商提供的 FPGA 在單個 DSP 模塊中只提供 18x19 乘法器,DSP 乘法器與INT8 MACC 之比僅為 1:1。

可擴展的 INT8 優化

目標是找到一種能夠對輸入 a、b 和 c 進行高效編碼的方法,這樣 a、b 和 c 之間的相乘結果可以容易地分解為 a x c 和 b x c。

在更低精度計算中,例如 INT8 乘法中,高位 10 位或 19 位輸入用 0 或 1 填充,僅攜帶 1 位信息。對最終的 45 位乘積的高位 29 位來說,情況一樣。因此可以使用高位 19 位開展另一計算,不會影響低位 8 位或16 位輸入結果。

總的來說,要把未使用的高位用於另一計算必須遵循兩條規則:
1. 高位不應影響低位的計算。
2. 低位計算對高位的任何影響必須可檢測、可能恢復。

為滿足上述規則,高位乘積結果的最低有效位不得進入低位 16 位。因此高位的輸入應至少從第 17 位開始。對一個 8 位的高位輸入,總輸入位寬至少為 16+8=24 位。這樣的最小 24 位輸入寬度只能保證同時用一個乘法器完成兩次相乘,但仍足以實現 1.75 倍的 MACC 的總吞吐量。

接下來的步驟是在一個 DSP48E2 Slice 中並行計算 ac 和 bc 。DSP48E2 Slice 被用作一個帶有一個 27 位預加法器(輸入和輸出均為 27 位寬)和一個 27 x 18 乘法器的算術單元。見圖 2。

1. 通過預加法器在 DSP48E2 乘法器的 27 位埠 p 打包 8 位輸入 a 和 b ,這樣 2 位向量能儘量分隔開。輸入 a 左移位僅 18 位,這樣從第一項得到的 27 位結果中的兩個符號位 a 以避免在 b <0 和 a =–128 時預加法器中發生溢值。a 的移位量為 18,恰好與 DSP48E2 乘法器埠 B 的寬度一樣。

圖2 :8 位優化

2. DSP48E2 27x18 乘法器用於計算打包的 27 位埠 p 和以二進位補碼格式表達在 18 位 c 中的 8 位係數的積。現在該 45 位乘積是二進位補碼格式的兩個 44 位項的和:左移位 18 位的 ac 和 bc 。

後加法器可用於累加上述包含單獨的高位乘積項和低位乘積項的 45 位乘積。在累加單個 45 位積時,對高位項和低位項進行了校正累加。最終的累加結果如果沒有溢值,可以用簡單運算分開。

這種方法的局限在於每個 DSP Slice 能累加的乘積項的數量。由於高位項和低位項間始終保持兩位(圖 3),可以保證在低位不溢值的情況下累加多達 7 個項。在 7 個乘積項之後,需要使用額外的 DSP Slice 來克服這一局限。因此這裡 8 個 DSP Slice 執行 7 x 2 INT8 乘法- 加法運算,與擁有相同數量乘法器的競爭型器件相比 INT8 深度學習運算的效率提升 1.75 倍。

根據實際用例的要求,這種方法有多種變化形式。帶有校正線性單元 (ReLU) 的卷積神經網絡 (CNN) 產生非負激活,同時無符號 INT8 格式將精度增加一位以上且峰值吞吐量提升 1.78 倍。

圖 3 :用單個 DSP48E2 Slice 打包兩個 INT8 乘運算

CNN 的計算要求

現代神經網絡大部分是從這個原始概念模型 [ 參考資料 4] 衍生而來。見圖 4。

圖 4 :概念和深度神經網絡

雖然從標準感知器結構開始已有相當程度的演進,現代深度學習(也稱為深度神經網絡 (DNN))的基本運算仍然是類感知器的運算,只是有更廣大的總體和更深入的堆疊感知器結構。圖 4 所示的是一個感知器的基本運算。在每個典型的深度學習推斷中它穿過多個層,最終重複數百萬至數十億次。如圖 5 所示,在一層神經網絡中計算 m 個感知器/ 神經元輸出中的每一個的主要計算運算為:

圖 5 :深度學習中的感知器

圖 6 :使用共享輸入並行得到兩個乘積項和

使用 INT8 優化方法將值向左移位 18 位,每個 DSP Slice 就得出最終輸出值的部分且獨立的一部分。用於每個 DSP Slice 的累加器有 48 位寬並連結到下一個 Slice。為避免移位飽和影響到計算,連結的模塊數量被限制為 7 個,即對總共 n 個輸入樣本使用 2n 個 MACC 和 n 個 DSP Slice。

典型的 DNN 每層有數百到數千個輸入樣本。但是在完成 7 個項的累加後,48 位累加器的低位項可能飽和,因此每 7 個項之和就需要一個額外的 DSP48E2 Slice。這相當於每 7 個 DSP Slice 和 14 個 MACC,另加一個 DSP Slice 用於防止過飽和,從而帶來 7/4 或 1.75 倍的吞吐量提升。

在卷積神經網絡(CNN)中,卷積層一般主要使用同一組權重,從而形成 a x w 和 b x w 類型的並行MACC 運算。因此除輸入共享外,還可以使用權重共享(見圖 7)。

圖 7 :權重共享和輸入共享比較

創建 INT8 連結 MACC 的其他方法
INT8 MACC 還能用 FPGA 架構內與 DSP Slice 頻率近似的 LUT 來構建。根據 FPGA 的使用情況,這可以顯著提升深度學習性能,在某些情況下性能可提升三倍之多。許多情況下相對於其他非 FPGA 架構而言,在計算可用深度學習運算時這些可用的計算資源並未考慮在內。

賽靈思 FPGA 中的編程架構是獨有的,因為它能並行且高效地處理多樣化工作負載。例如賽靈思 FPGA能並行執行 CNN 圖像分類、網絡加密和數據壓縮。我們的深度學習性能競爭分析並未將 MACC LUT 考慮在內,因為一般 LUT 用於執行 MACC 功能比用於執行其他並行功能時更有價值。

競爭分析

在本競爭分析中,將英特爾(前 Altera)的 Arria 10 和即將推出的 Stratix 10 器件與賽靈思的 Kintex UltraScale 和 Virtex UltraScale+ 進行了對比。對這種高計算強度的比較,選擇的器件均為每個產品系列中 DSP 密度最高的器件:Arria 10 (AT115)、Stratix 10 (SX280)、Kintex UltraScale (KU115)、Virtex UltraScale+ (VU9P) 和 Virtex UltraScale+ (VU13P) 器件。比較的重點是能用於包括深度學習在內的眾多應用的通用 MACC 性能。

英特爾的 MACC 性能基於運用預加法器的算子。但是這種實現方案產生的是乘積項和非唯一單獨乘積項之和,因此英特爾的預加法器不適用於深度學習運算。

英特爾器件的功耗使用英特爾的 EPE 功耗估算工具估算,並假設在以下最壞情況下:
1. 在最大頻率 (FMAX) 下 DSP 利用率為 90%
2. 時鐘速率為 DSP FMAX 時邏輯利用率為 50%
3. 時鐘速率為 DSP FMAX 的一半時,block RAM 利用率為 90%
4. 4 個 DDR4 和 1 個 PCIe Gen3 x 8
5. DSP 觸發率為 12.5%
6. 80°TJ

圖 8 所示為深度學習運算的能效比較。憑藉 INT8 優化,賽靈思 UltraScale 和 UltraScale+ 器件在 INT8精度上相比 INT16 運算(KU115 INT16/KU115 INT8)能效提升 1.75 倍。與英特爾的 Arria 10 和 Stratix 10器件相比,賽靈思器件在深度學習推斷運算上能效高出 2-6 倍。

圖 8 :INT8 深度學習能效對比:賽靈思對比英特爾

結論
本白皮書探討了如何在賽靈思 DSP48E2 Slice 上優化 INT8 深度學習運算,從而實現 1.75 倍的性能提升。賽靈思 DSP48E2 Slice 可用於在共享相同內核權重的同時實現並行 INT8 MACC。為高效地實現 INT, 需要採用 24 位輸入寬度,這項優勢只有賽靈思 UltraScale 和 UltraScale+ FPGA DSP Slice 能夠提供支持。賽靈思非常適合用於深度學習應用中的 INT8 工作負載(例如圖像分類)。賽靈思不斷創新新的基於軟/硬體的方法,以加快深度學習應用的發展。

如需了解有關數據中心深度學習的更多信息,敬請訪問: https://china.xilinx.com/accelerationstack

參考資料
1. 1.Dettmers, 8-Bit Approximations for Parallelism in Deep Learning, ICLR 2016
https://arxiv.org/pdf/1511.04561.pdf
2. Gysel et al, Hardware-oriented Approximation of Convolutional Neural Networks, ICLR 2016
https://arxiv.org/pdf/1604.03168v3.pdf
3. Han et al, Deep Compression:Compressing Deep Neural Networks With Pruning, Trained Quantization And Huffman Coding, ICLR 2016
https://arxiv.org/pdf/1510.00149v5.pdf
4. Rosenblatt, F., The Perceptron:A Probabilistic Model for Information Storage and Organization in the Brain, Psychological Review, Vol. 65, No. 6, 1958

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 2019-2025年dsp晶片市場深度調查分析及發展前景研究報告
    《2019-2025年dsp晶片市場深度調查分析及發展前景研究報告》是目前dsp晶片領域最專業和最全面系統的深度市場研究報告。  《2019-2025年dsp晶片市場深度調查分析及發展前景研究報告》首先介紹了dsp晶片的背景知識,包括dsp晶片的相關概念、分類、應用、產業鏈結構、產業概述,國際市場動態分析,國內市場動態分析,宏觀經濟環境分析及經濟形勢對dsp晶片行業的影響,dsp晶片行業國家政策及規劃分析,dsp晶片產品技術參數,生產工藝技術,產品成本結構等;接著統計了中國主要企業
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    語音信號的特徵是隨時間變化的,只有一段時間內,信號才表現穩定一致的特徵,一般來說短時段可取5~50 ms,因此語音信號的處理要建立在其"短時性"上[2],系統將語音信號幀長設為20 ms,幀移設為10 ms,則每幀數據為160×16 b。
  • 從系統和代碼實現角度解析TensorFlow的內部實現原理|深度
    雷鋒網按:本文作者姚健,畢業於中科院計算所網絡數據實驗室,曾就職於360天眼實驗室,主要從事深度學習和增強學習相關研究工作。目前就職於騰訊MIG事業部,從事神經機器翻譯工作。TF提供了豐富的深度學習相關的API,支持Python和C/C++接口。TF提供了可視化分析工具Tensorboard,方便分析和調整模型。TF支持Linux平臺,Windows平臺,Mac平臺,甚至手機行動裝置等各種平臺。
  • 深度學習基礎:張量運算
    字幕組雙語原文:深度學習基礎:張量運算英語原文:Tensor Operations — Basic Building Blocks of Deep Learning翻譯:雷鋒字幕組(大表哥、Shangru)2012-至今:深度學習爆炸時代在2012年的Imagenet運動之後,深度學習取得了突飛猛進的發展。
  • 聽說你了解深度學習最常用的學習算法:Adam優化算法?
    By蔣思源2017年7月12日  深度學習常常需要大量的時間和機算資源進行訓練,這也是困擾深度學習算法開發的重大原因。雖然我們可以採用分布式並行訓練加速模型的學習,但所需的計算資源並沒有絲毫減少。而唯有需要資源更少、令模型收斂更快的最優化算法,才能從根本上加速機器的學習速度和效果,Adam算法正為此而生!
  • 第六講 DSP在雷達信號處理中的應用
    dsp內部的硬體乘法器、地址產生器(反轉尋址)和多處理內核,保證dsp在相同條件下,完成fft算法的速度比通用微處理器要快2到3個數量級。因此,在雷達信號處理器中,大量採用dsp完成fft/ifft,以實現信號的時-頻域轉換、回波頻譜分析、頻域數字脈衝壓縮等。 fir濾波器是雷達信號處理中常用設計之一。
  • 工程之道,深度學習的工業級模型量化實戰
    來源:新浪證券背景近年來隨著邊緣計算和物聯網的興起與發展,許多移動終端(比如手機)成為了深度學習應用的承載平臺,甚至出現了各式各樣專用的神經網絡計算晶片。由於這些設備往往對計算資源和能耗有較大限制,因此在高性能伺服器上訓練得到的神經網絡模型需要進行裁剪以縮小內存佔用、提升計算速度後,才能較好地在這些平臺上運行。
  • 深度學習中的NumPy基礎
    與機器學習和深度學習應用工作涉及複雜的數字操作與大量的數據集。與純 Python 實現相比,NumPy 使得實現這些操作相對簡單和有效。從核心上說,NumPy 實現了Python(n 維數組)數據結構,類似於常規的 Python 列表。大多數程式語言只有數組的概念。Python 實現了列表,它作為數組工作,但是有區別。
  • 陳天奇等人提出TVM:深度學習自動優化代碼生成器
    TVM 是由華盛頓大學在讀博士陳天奇等人提出的深度學習自動代碼生成方法,去年 8 月機器之心曾對其進行過簡要介紹。該技術能自動為大多數計算硬體生成可部署優化代碼,其性能可與當前最優的供應商提供的優化計算庫相比,且可以適應新型專用加速器後端。
  • golang學習快速筆記(1)類型_騰訊新聞
    } 不 持 1UL、2LL 這樣的類型後綴。 在常量組中,如不提供類型和初始化值,那麼視作與上 常量相同。 const ( a byte = 100 // int to byte b int= 1e20 // float64 to int, overflows )
  • MIT Taco項目:自動生成張量計算的優化代碼,深度學習加速效果提高...
    使用稀疏數據進行分析的算法最終做了大量的加法和乘法,而這大部分計算是無效的。通常,程式設計師通過編寫自定義代碼來優化和避免零條目,但這種代碼通常編寫起來複雜,而且通常適用範圍狹窄。雷鋒網發現,在ACM的系統、程序、語言和應用會議(SPLASH)上,麻省理工學院、法國替代能源和原子能委員會的研究人員和Adobe研究院的研究者們最近提出了一個針對稀疏數據自動生成優化代碼的系統。
  • 無人機/機器人開發實戰,如何優化深度學習?
    計算模塊從I/O擴展開發平臺獨立,TX1的核心板只有卡片大小(50 mm x 87 mm),所以可以很方便做前期的驗證平臺,甚至直接上產品而不需要再做設計。2. 性能方面接近1024G flops的F16計算能力,只有10w左右的功耗,完全支持CUDA和cuDNN的接口,可以很方面地把PC上訓練的深度神經網絡直接porting到Tegra X1的嵌入式平臺上。3.
  • 使用STM32 的DSP庫進行FFT變換
    (){ u16 i=0; float fx; for(i=0;i { fx = 4000 * sin(PI2*i*50.0/Fs) + 4000 * sin(PI2*i*2500.0/Fs) + 4000*sin(PI2*i*2550.0/Fs); lBUFIN[i] = ((s16)fx)<<16; }}/
  • 伯克利RISE實驗室大牛也在關注的深度學習庫評測
    為了提高開發深度學習方法的效率,有很多開源的深度學習工具包,包括伯克利大學的Caffe,微軟的CNTK,谷歌的TensorFlow,還有Torch,MXNet,Theano,百度的 PaddlePaddle等。這些工具都支持多核CPU和超多核GPU。深度學習的主要任務之一,是學習網絡的每一層的權重,這可以通過向量或矩陣運算來實現。
  • 「python學習手冊-筆記」003.數值類型
    好了,從本章開始,我們就要正式進入python的學習.所涉及的內容深度會有所提升,但是還到不了學習完1+1=2之後就開始微積分推導的陡峭程度. 相關的補充內容我會以知識點補充或者外鏈的方式添加進來.('10',base=2)Out[18]: 2# 將16進位ff轉換為十進位In [19]: int('ff',base=16)Out[19]: 255python的運算符上表中基本把python中的運算符表達式全部列舉出來了.
  • 第27節:整除求商的運算
    -(帶小數點)10除以4,商等於2,餘數是2。-(這就叫做整除)什麼時候帶小數點,什麼時候是整除?取決於參與運算的變量類型。標準的C語言中,其實遠遠不止我前面所說的unsigned char ,unsigned int ,unsigned long這三種類型,還有一種叫浮點數的float類型,當參與運算的變量涉及float類型時,就可能存在小數點。
  • 教程| 基礎入門:深度學習矩陣運算的概念和代碼實現
    本文從向量的概念與運算擴展到矩陣運算的概念與代碼實現,對機器學習或者是深度學習的入門者提供最基礎,也是最實用的教程指導,為以後的機器學習模型開發打下基礎。在我們學習機器學習時,常常遇到需要使用矩陣提高計算效率的時候。如在使用批量梯度下降迭代求最優解時,正規方程會採用更簡潔的矩陣形式提供權重的解析解法。
  • 要理解深度學習,必須突破常規視角去理解優化
    深度學習算法有一些重要的特性並不總是反映在目標值中。所以,要加深對深度學習的理解,還得超越常規視角。但我認為,如果你的目標是對深度學習進行數學理解的話,那麼從常規視角去理解優化明顯是不夠的。優化的常規視角:儘快找到目標最小可能值的解決方案。先驗上來說,並不確定是否所有的學習都要優化一個目標。大腦中的學習是否也如此是神經科學中一個長期存在的開放性問題。大腦的組成部分似乎已經通過各種進化事件被重新利用/拼湊在一起,整個組合可能或不可以歸結為目標的優化。
  • 499,位運算解只出現一次的數字 III
    示例 :輸入: [1,2,1,3,2,5]輸出: [3,5]前面剛講過一個和這題類似的題494,位運算解只出現一次的數字,只不過第494題只有一個數字出現一次,但這題是有兩個數字只出現一次。>有了上面的3個公式,這題就很容易解了,假如數組的元素是[a,e,f,h,b,f,h,e]我們看到這個數組中只有a和b出現了一次,其他的元素都出現了2次。
  • 3D列印出來的深度神經網絡,光速求解AI數學運算
    如今,機器學習無處不在,但多數機器學習系統是隱形的:它們在「黑箱」裡優化音頻或識別圖像中的人臉。但最近 UCLA 的研究人員研發出了一個 3D 列印 AI 分析系統。這一系統不僅看得見,還摸得著。與以往通過調節數字進行分析的系統不同,該系統通過光線的衍射來分析人工智慧。這一新奇、獨特的研究成果表明:這些「人工智慧」系統可以看起來非常簡單。