近年來,異構運算(Heterogeneous Computing)逐漸興起,進而拓展了後摩爾定律時代在加速運算密集型工作負載方面的創新。當前資料中心產業中,普遍採用異構運算進行加速的工作負載種類繁多,包括人工智慧、即時視訊轉碼和基因組分析,而這些僅僅是其中的一部分。FPGA元件則為現代資料中心工作負載提供了靈活應變能力和運算加速能力。
然而,在很長的一段時間內,DDR記憶體架構的演進並不足以跟上運算加速領域的創新步伐。在過去十年中,雖然平行記憶體介面的頻寬性能得到改善,但進展依然緩慢;現在的FPGA支援的最大DDR4資料速率仍然只有2008年DDR3的兩倍左右。相比之下,自2008年以來,FPGA的運算能力卻提高了近八倍,而且隨著配備AI運算單元的元件推出,預計未來兩年內還會有更大的成長空間(圖1)。因此,在資料中心領域,記憶體頻寬與容量將成為眾多運算和記憶體頻寬密集型工作負載發展的主要限制因素。
HBM2提升AI運算效能
HBM(High Bandwidth Memory)是一種高速的系統級封裝(SiP)記憶體技術,它使用垂直互聯的DRAM晶片堆疊和一個寬(1024位元)介面,與採用傳統打線接合封裝的記憶體產品相比,可實現更大的儲存容量和更高的資料頻寬。聯合電子裝置工程委員會(Joint Electron Device Engineering Council, JEDEC)在2013年開始啟用初代HBM標準,2016年1月,第二代HBM2版本成為業界標準(圖2)。
HBM2標準支援4個或8個8Gb DRAM裸晶逐個堆疊在一起,由一個2.5D矽中介層(Interposer)提供支援,該中介層可將記憶體堆疊與底層電路板連接起來。堆疊一些裸晶(通常是記憶體)而不是其他裸晶(通常是處理器)的多晶片封裝被稱為2.5D元件。
可以將多個堆疊整合在同一個封裝中。與傳統的多晶片DRAM產品相比,透過在一個電路板上堆疊多個裸晶並將其堆疊得更緊密,可以大大減少HBM記憶體封裝的占板面積。由於縮短了訊號在設備之間的傳輸距離,HBM技術還可以提高系統性能。此外,較短的傳輸距離可以減少傳輸定量資料所需的能量(圖3)。
HBM具備先進的矽穿孔(Through Silicon Via, TSV)技術、微尺度互聯和突破極限的I/O數量,可以增加記憶體頻寬,與競爭對手相比,在用於繪圖卡的圖形雙數據速率(GDDR)記憶體方面,HBM無疑能提供更高性能。在元件級別,單個三星HBM堆疊可以提供高達307GB/s的資料頻寬,實現比GDDR5晶片快近10倍的資料傳輸速度。而在系統級別,與使用於GDDR的解決方案相比,HBM則能提供近3倍的輸送量,並且能將功耗降低80%,同時還可以節省寶貴的電路空間(圖4)。
支援HBM的Virtex UltraScale+ FPGA提高了記憶體頻寬,例如,兩個三星HBM2記憶體堆疊可提供高達460GB/s的速度。將一個或兩個HBM2堆疊與各種尺寸的FPGA邏輯和DSP進行配對,為使用者應用選擇較佳的運算能力與記憶體頻寬/容量組合。如賽靈思(Xilinx) Alveo U280網路加速卡基於16nm UltraScale+架構,採用8GB三星HBM2,可為資料庫搜索與分析、機器學習推論及其他記憶體限制應用提供較高等級的加速功能。本文以深度神經網路與資料庫加速方面的研究為例,展示了支援HBM的元件優勢。
加速語言翻譯準確性
各種雲端應用正在提供自動即時語言翻譯服務,這種服務可以使用基於神經網路的機器學習方法在兩種語言之間翻譯語句。編碼器-解碼器架構推動了當今的商業自動化翻譯服務。在使用機器執行翻譯任務時,兩種語言的單詞經由一個稱為單詞嵌入的過程,以高維向量的形式呈現;因此,單詞之間的關係可以通過向量進行量化建模和反映。遞迴神經網路(Recurrent Neural Networks, RNN)、卷積神經網路(Convolution Neural Network, CNN)和基於注意力的模型等結構通常用於執行編碼和解碼功能。
近期研究表明,在語言翻譯中,只有採用基於注意力的網路才能達到業界一流的準確性。研究論文中所描述的注意力機制,即縮放點積注意力,是由兩個矩陣乘法和其他函數(Scale、Mask和Softmax)構成的。多頭注意力結構通常由多個並行的縮放點積注意力與不同的輸入投影構成。該結構與前饋網路共同用於構建整個語言翻譯模型的解碼器和編碼器(圖5)。
如圖5所示,基於注意力的語言翻譯模型的主要運算強度來自於對縮放點積注意力和前饋網路的點積計算。這些點積通常被組合到矩陣乘法計算,以實現更高效的運算。然而,與傳統在整個空間中大量重複使用權重參數以減少資料移動痕跡的卷積神經網路不同,這種基於注意力的模型幾乎不重複使用輸入空間參數,導致對矩陣乘法計算的記憶體頻寬要求要高得多。
透過建立一個轉換器分析模型,其是用於語言翻譯的注意力神經網路,並且已經完成了構建與映射以便在UltraScale+元件上實現。FPGA實現方案的架構採用DSP脈動陣列來執行矩陣乘法。中間的啟動資料儲存在晶片的URAM中,可以消除啟動造成處理器和晶片外記憶體之間的資料移動。HBM或DDR用於儲存所有嵌入字典的單詞嵌入與權重參數。
針對具有不同句子長度(L)和句子數量的英德翻譯任務,也稱為批次處理大小(B),對其進行分析就可以瞭解附加DDR的元件和支援HBM的元件的時間延遲(Time Latency)和輸送量權衡。該研究假設使用具有256個16位元輸入和32個16位元輸出的脈動陣列,並將其運行在710MHZ的UltraScale+原件上,用DDR和HBM實現。詳細的輸送量與時間延遲關係圖如圖6所示。
四通道實現的最低時間延遲約為15.7ms,句子長度為8,輸送量為508符號/秒。一個DDR通道用於存取單詞嵌入資料,其餘三個DDR通道用於載入權重。對於支援HBM的元件,一個長度為8的句子的最小時間延遲為2.2ms,比DDR介面低7倍以上。雖然DDR介面在兩個句子長度上都不能實現7ms以下的時間延遲,但是支援HBM的元件在輸送量為10419個符號/秒且句子長度為8的情況下可實現6.1ms的時間延遲,在輸送量為4682個符號/秒且句子長度為16的情況下可實現6.8ms的時間延遲。
借助通用矩陣運算庫加速AI
與前面討論的機器翻譯案例一樣,幾乎所有現代深層神經網路(深度學習)的主要運算都是以矩陣乘法的形式來完成。除了機器翻譯以外,在資料中心廣泛部署的其他典型深度學習應用有圖像/視訊分析、用於網路搜尋的搜尋排名系統、用於廣告投放的推薦系統、內容/來源推薦、語音辨識以及自然語言處理。
為了支援更多的深度學習應用,賽靈思開發了通用矩陣運算(GEMX)庫,用於加元件上的矩陣運算,該元件由SDAccel開發環境提供支援。包括三個組件:引擎庫、主機代碼編譯器和應用或系統建構環境。引擎庫由一組具有BLAS函數介面的C++範本組成,可以在FPGA上實現矩陣運算。主機代碼編譯器將主機代碼矩陣函式呼叫編譯成一系列指令,用於觸發FPGA上的矩陣運算。構建環境採用GNU Make以實現FPGA和主機代碼圖像生成過程自動化。此外,它還支援使用者對系統進行配置,例如FPGA平台、FPGA圖像中實現的引擎數量等。
雖然GEMX引擎的兩個輸入矩陣都來自DDR記憶體,但GEMX的輸送量取決於DDR介面的頻寬。本文的分析比較了使用DDR4連接UltraScale+元件的GEMX與使用支援HBM的UltraScale+元件的GEMX的性能。該分析模型充分利用了記憶體頻寬,並假設使用32×32×128的矩陣作為GEMX的輸入(圖7)。結果表明與使用四個DDR通道相比,支援HBM的元件可以將GEMX的性能提升約3.6倍。
(本文由賽靈思提供)