圖 1:典型的 GNN 架構(gòu)(來源:https://arxiv.org/abs/1901.00596)
一種基于 FPGA 的圖神經(jīng)網(wǎng)絡(luò)加速器解決方案
發(fā)布時間:2021-08-09 責(zé)任編輯:lina
【導(dǎo)讀】一些可穿戴設(shè)備制造商不認(rèn)為能量收集(任何形式)是有意義的設(shè)計。為了追求自供電的可穿戴設(shè)備,電子開發(fā)人員正在尋求改變?nèi)缃襁@種狀況。
得益于大數(shù)據(jù)的興起和計算能力的快速提升,機(jī)器學(xué)習(xí)技術(shù)近年來經(jīng)歷了革命性的發(fā)展。諸如圖像分類、語音識別和自然語言處理等機(jī)器學(xué)習(xí)任務(wù),都是對具有一定大小、維度和有序排列的歐幾里得數(shù)據(jù)進(jìn)行處理。然而,在許多現(xiàn)實場景中,數(shù)據(jù)是由復(fù)雜的非歐幾里得數(shù)據(jù)(例如圖形)表示的。這些圖形不僅包含數(shù)據(jù),還包含數(shù)據(jù)之間的依賴關(guān)系,例如社交網(wǎng)絡(luò)、蛋白質(zhì)分子結(jié)構(gòu)、電子商務(wù)平臺中的客戶數(shù)據(jù)等。數(shù)據(jù)復(fù)雜性的提升給傳統(tǒng)的機(jī)器學(xué)習(xí)算法設(shè)計及其實現(xiàn)技術(shù)帶來了嚴(yán)峻的挑戰(zhàn)。在這種情況下,許多全新的基于圖形的機(jī)器學(xué)習(xí)算法或圖神經(jīng)網(wǎng)絡(luò)(GNN)不斷在學(xué)術(shù)界和工業(yè)界涌現(xiàn)。
GNN 對計算能力和存儲有非常高的要求,而且其算法的軟件實現(xiàn)效率非常低。因此,業(yè)界對 GNN 的硬件加速有著非常迫切的需求。盡管傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)硬件加速有很多種解決方案,但 GNN 的硬件加速還沒有得到充分的討論和研究。在撰寫本白皮書時,谷歌(Google)和百度(Baidu)都無法搜索到關(guān)于 GNN 硬件加速的中文研究資料。本白皮書的寫作動機(jī)是將國外最新的 GNN 算法、對加速技術(shù)的研究以及對基于現(xiàn)場可編程邏輯門陣列(FPGA)的 GNN 加速技術(shù)的探討相結(jié)合,并以概述的形式呈現(xiàn)給讀者。
對圖神經(jīng)網(wǎng)絡(luò)(GNN)的介紹
在宏觀層面上,GNN 的架構(gòu)與傳統(tǒng) CNN 有很多相似之處,諸如卷積層、池化、激活函數(shù)、機(jī)器學(xué)習(xí)處理器(MLP)、全連接層(FC layer)等模塊,這些都可以應(yīng)用到 GNN。下圖展示了一個相對簡單的 GNN 架構(gòu)。
圖 1:典型的 GNN 架構(gòu)(來源:https://arxiv.org/abs/1901.00596)
但是,GNN 中的圖形數(shù)據(jù)卷積計算與傳統(tǒng) CNN 中的二維卷積計算不同。以下圖為例,紅色目標(biāo)節(jié)點的卷積計算過程如下所示:
1、圖卷積 - 使用近鄰函數(shù)對周圍節(jié)點的特征進(jìn)行采樣,并計算平均值。相鄰節(jié)點的數(shù)量是不確定且無序的(非歐幾里得數(shù)據(jù))
2、二維卷積——使用卷積核對周圍節(jié)點的特征進(jìn)行采樣,并計算加權(quán)平均值。相鄰節(jié)點的數(shù)量是確定且有序的(歐幾里得數(shù)據(jù))
圖 2:圖卷積和二維卷積(來源:https://arxiv.org/abs/1901.00596)
對 GraphSAGE 算法的介紹
學(xué)術(shù)界對 GNN 算法進(jìn)行了大量的研究和探討,提出了相當(dāng)多的創(chuàng)新實現(xiàn)方法。其中,由斯坦福大學(xué)(Stanford University)于 2017 年提出的 GraphSAGE 是一種歸納表示學(xué)習(xí)算法,用于預(yù)測大規(guī)模圖中動態(tài)的、全新的、未知的節(jié)點類型,還專門針對節(jié)點數(shù)量龐大、節(jié)點特征豐富的圖進(jìn)行了優(yōu)化。如下圖所示,
GraphSAGE 算法的計算過程可以分為三個主要步驟:
1、相鄰節(jié)點采樣——用于降低復(fù)雜性,一般采樣兩層,每層采樣幾個節(jié)點。
2、聚合——用于嵌入目標(biāo)節(jié)點,即圖的低維向量表示。
3、預(yù)測——使用嵌入作為全連接層的輸入,以預(yù)測目標(biāo)節(jié)點 d 的標(biāo)簽。
圖 3:GraphSAGE 算法的可視化表示(來源:http://snap.stanford.edu/graphsage)
1.Sample neighborhood
1、樣本鄰域
2.Aggregate feature information from neighbors
2、聚合來自鄰域的特征信息
3.Predict graph context and label using aggregated information
3、利用聚合信息預(yù)測圖形情況和標(biāo)簽
為了在 FPGA 中實現(xiàn) GraphSAGE 算法加速,必須了解其數(shù)學(xué)模型,以便將算
法映射到不同的邏輯模塊。下圖所示的代碼說明了該算法的數(shù)學(xué)過程。
圖 4:GraphSAGE 算法的數(shù)學(xué)模型(來源:http://snap.stanford.edu/graphsage)
Step 1: Sample a sub-graph node with neighborhood function N[}.
步驟 1:使用近鄰函數(shù) N[}對子圖節(jié)點進(jìn)行采樣。
Step 2: Aggregate features from neighbor nodes, e.g. mean[}, lstm[}, polling[}
步驟 2:聚合相鄰節(jié)點的特征,例如 mean[}、lstm[}、polling[}
Step3: Combine aggregated node features. E.g. convolution[}
步驟 3:合并聚合的節(jié)點特征。例如卷積[}
Step 4: Nonlinear activation, e.g, relu[}
步驟 4:非線性激活,例如 relu[}
Step 5: Iterate for each neighbor with a sub-graph
步驟 5:使用子圖迭代每個鄰域
Step 6: Normalize
步驟 6:標(biāo)準(zhǔn)化
Step 7: Iterate for each search-depth
步驟 7:對每個深度搜索進(jìn)行迭代
Step 8: Final node embedding of node v
步驟 8:節(jié)點 v 的最終節(jié)點嵌入
對于每個要處理的目標(biāo)節(jié)點 xv,GraphSAGE 算法都會執(zhí)行以下操作:
1、通過近鄰采樣函數(shù) N(v)對子圖中的節(jié)點進(jìn)行采樣。
2、聚合要采樣的相鄰節(jié)點的特征。聚合函數(shù)可以是 mean()、lstm()或 polling()
等。
3、將聚合結(jié)果與上一次迭代的輸出表示合并起來,并使用 Wk 進(jìn)行卷積。
4、對卷積結(jié)果進(jìn)行非線性處理。
5、多次迭代以結(jié)束當(dāng)前第 k 層的所有相鄰節(jié)點的處理。
6、對第 k 層迭代的結(jié)果進(jìn)行標(biāo)準(zhǔn)化處理。
7、多次迭代以結(jié)束對所有 K 層采樣深度的處理。
8、將最終的迭代結(jié)果 zv 嵌入到輸入節(jié)點 xv。
GNN 加速器設(shè)計所面臨的挑戰(zhàn)
GNN 算法涉及大量的矩陣計算和存儲訪問操作。在傳統(tǒng)的 x86 架構(gòu)服務(wù)器上運行這種算法的效率是非常低的,表現(xiàn)為速度慢、能耗高等。
新型圖形處理器(GPU)的應(yīng)用可以顯著提高 GNN 的計算速度與能效比。但是,GPU 在存儲可擴(kuò)展性方面存在短板,使其無法處理圖形中的海量節(jié)點。GPU 的指令執(zhí)行方式也會導(dǎo)致計算延遲過大和不確定性;因此,它不適用于需要實時計算圖形的場景。
上面提到的各種設(shè)計挑戰(zhàn),使得業(yè)界迫切需要一種能夠支持高并發(fā)、實時計算,擁有巨大存儲容量和帶寬,并可擴(kuò)展到數(shù)據(jù)中心的 GNN 加速解決方案。
基于 FPGA 設(shè)計方案的 GNN 加速器
Achronix 的 Speedster®7t 系列 FPGA 產(chǎn)品(以及該系列的第一款器件AC7t1500)是針對數(shù)據(jù)中心和機(jī)器學(xué)習(xí)工作負(fù)載進(jìn)行了優(yōu)化的高性能 FPGA器件,消除了基于中央處理器(CPU)、GPU 和傳統(tǒng) FPGA 的解決方案中存在的若干性能瓶頸。Speedster7t 系列 FPGA 產(chǎn)品采用了臺積電(TSMC)的7nm FinFET 工藝,其架構(gòu)采用了一種革命性的全新二維片上網(wǎng)絡(luò)(NoC)、獨創(chuàng)的機(jī)器學(xué)習(xí)處理器矩陣(MLP),并采用高帶寬 GDDR6 控制器、400G 以太網(wǎng)和 PCI Express Gen5 接口,在確保 ASIC 級性能的同時,它為用戶提供了靈活的硬件可編程性。下圖展示了高性能 FPGA 器件 Speedster7t1500 的架構(gòu)。
圖 5:Achronix 高性能 FPGA 器件 Speedster AC7t1500 的架構(gòu)
上述特點使 Achronix Speedster7t1500 器件成為應(yīng)對在 GNN 加速器設(shè)計中面臨的各種挑戰(zhàn)的完美解決方案。
表 1:GNN 設(shè)計面臨的挑戰(zhàn)和 Achronix Speedster7t1500 FPGA 器件提供的
解決方案
GNN 加速器頂層架構(gòu)
此 GNN 加速器是為 GraphSAGE 算法設(shè)計的,但是它的設(shè)計也可以應(yīng)用于其他類似的 GNN 算法加速。其頂層架構(gòu)如下圖所示。
圖 6:GNN 加速器頂層架構(gòu)
Synthesizable IPs
可綜合的 IP
GNN Core: Preforms GNN computation
GNN 內(nèi)核:執(zhí)行 GNN 計算
RoCE-Lite: Memory scalability with RDMA
RoCE-Lite:采用 RDMA 的存儲可擴(kuò)展性
Harden IPs
硬化 IP
NoC: High speed and unified IP connectivity
NoC:高速、統(tǒng)一的 IP 連接
DDR4 Ctrl: Large memory for graph storage
DDR4 Ctrl:用于圖形存儲的大存儲容量
GDDR6 Ctrl: High speed memory for computing
GDDR6 Ctrl:用于計算的高速存儲
PCIe Gen5×16: High throughout host interface
PCIe Gen5×16:高吞吐量的主機(jī)接口
Ethernet 400GE: High speed network
以太網(wǎng) 400GE:高速網(wǎng)絡(luò)
該架構(gòu)由以下模塊組成:
●圖中的 GNN 內(nèi)核是算法實現(xiàn)的核心部分(詳情如下)。
●RoCE-Lite 是 RDMA 協(xié)議的輕量級版本,用于通過高速以太網(wǎng)進(jìn)行遠(yuǎn)程存儲訪問,以支持海量節(jié)點的圖計算。
●400GE 以太網(wǎng)控制器用于承載 RoCE-Lite 協(xié)議。
●GDDR6 存儲器用于存儲 GNN 處理過程中所需的高速訪問數(shù)據(jù)(DDR4 作為備用大容量存儲器)。該存儲器用于存儲訪問頻率相對較低的數(shù)據(jù),例如
●PCIe Gen5 ×16 接口提供高速主機(jī)接口,用于與服務(wù)器軟件進(jìn)行數(shù)據(jù)交互。
上述所有模塊均通過具有高帶寬的 NoC 實現(xiàn)互連。
GNN 內(nèi)核微架構(gòu)
在開始討論 GNN 內(nèi)核的微架構(gòu)之前,有必要先回顧一下 GraphSAGE 算法。
其內(nèi)層循環(huán)的聚合和合并(包括卷積)占據(jù)了該算法的大部分計算和存儲訪問。通過研究,我們得出這兩個步驟的特點,具體如下。
表 2:GNN 算法中聚合和合并操作的對比(來源:https://arxiv.org/abs/1908.10834)
可以看出,聚合操作和合并操作在計算和存儲訪問模式上有著完全不同的需求。聚合操作涉及相鄰節(jié)點的采樣。然而,圖形是一種非歐幾里得數(shù)據(jù)類型——它的大小和維度是不確定且無序,矩陣稀疏,節(jié)點位置隨機(jī)。因此,存儲訪問是不規(guī)則的,并且難以重復(fù)利用數(shù)據(jù)。
在合并操作中,輸入數(shù)據(jù)是聚合結(jié)果(節(jié)點的低維表示)和權(quán)重矩陣。它的大小和維度是固定的,具有線性存儲位置。因此對存儲訪問沒有挑戰(zhàn),但是矩陣的計算量非常大。
基于上述分析,我們決定在 GNN 內(nèi)核加速器設(shè)計中選擇使用兩種不同的硬件結(jié)構(gòu)來分別處理聚合和合并操作(如下圖示):
聚合器——通過單指令多數(shù)據(jù)(SIMD)處理器陣列,對圖形相鄰節(jié)點進(jìn)行采樣和聚合。單指令可以預(yù)定義為 mean()平均值計算,或其他適用的聚合函數(shù);多數(shù)據(jù)是指單次 mean()均值計算中需要多個相鄰節(jié)點的特征數(shù)據(jù)作為輸入,這些數(shù)據(jù)來自子圖采樣器。SIMD 處理器陣列通過調(diào)度器 AggScheduler 進(jìn)行負(fù)載平衡。子圖采樣器通過 NoC 從 GDDR6 或 DDR4 讀回的鄰接矩陣和節(jié)點特征數(shù)據(jù) h0v 分別緩存在鄰接列表緩沖區(qū)(Adjacent ListBuffer)和節(jié)點特征緩沖區(qū)(Node Feature Buffer)。聚合的結(jié)果 hkN(v)存儲在聚合緩沖區(qū)(Aggregation Buffer)中。
合并器——通過脈動矩陣 PE 對聚合結(jié)果進(jìn)行卷積運算。卷積核是 Wk 權(quán)重矩陣。卷積結(jié)果由 ReLU 激活函數(shù)進(jìn)行非線性處理,同時也存儲在 PartialSum Buffer 中,以用于下一輪迭代。
圖 7:GNN 內(nèi)核功能框圖
合并結(jié)果經(jīng)過 L2BN 標(biāo)準(zhǔn)化處理后,即為最終的節(jié)點表示 hkv。在一個典型的節(jié)點分類預(yù)測應(yīng)用中,節(jié)點表示 hkv 可以通過一個全連接層(FC)來獲取節(jié)點的分類標(biāo)簽。這個過程是傳統(tǒng)的機(jī)器學(xué)習(xí)處理方法之一,在 GraphSAGE 文獻(xiàn)資料中沒有體現(xiàn),這個功能也沒有包含在這個架構(gòu)中。
結(jié)論
本白皮書探討了 GraphSAGE GNN 算法的數(shù)學(xué)原理,并從多個角度分析了GNN 加速器設(shè)計中的技術(shù)挑戰(zhàn)。通過分析問題并在架構(gòu)層面逐一解決,提出了一種架構(gòu),利用 Achronix Speedster7t AC7t1500 FPGA 器件提供的具有競爭性的優(yōu)勢,創(chuàng)建了一種高度可擴(kuò)展的、能夠提供卓越性能的 GNN 加速解決方案。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請電話或者郵箱聯(lián)系小編進(jìn)行侵刪。
特別推薦
- 復(fù)雜的RF PCB焊接該如何確保恰到好處?
- 電源效率測試
- 科技的洪荒之力:可穿戴設(shè)備中的MEMS傳感器 助運動員爭金奪銀
- 輕松滿足檢測距離,勞易測新型電感式傳感器IS 200系列
- Aigtek推出ATA-400系列高壓功率放大器
- TDK推出使用壽命更長和熱點溫度更高的全新氮氣填充三相交流濾波電容器
- 博瑞集信推出低噪聲、高增益平坦度、低功耗 | 低噪聲放大器系列
技術(shù)文章更多>>
- 如何選擇和應(yīng)用機(jī)電繼電器實現(xiàn)多功能且可靠的信號切換
- 基于APM32F411的移動電源控制板應(yīng)用方案
- 數(shù)字儀表與模擬儀表:它們有何區(qū)別?
- 聚焦制造業(yè)企業(yè)貨量旺季“急難愁盼”,跨越速運打出紓困“連招”
- 選擇LDO時的主要考慮因素和挑戰(zhàn)
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
光收發(fā)器
光通訊器件
光纖連接器
軌道交通
國防航空
過流保護(hù)器
過熱保護(hù)
過壓保護(hù)
焊接設(shè)備
焊錫焊膏
恒溫振蕩器
恒壓變壓器
恒壓穩(wěn)壓器
紅外收發(fā)器
紅外線加熱
厚膜電阻
互連技術(shù)
滑動分壓器
滑動開關(guān)
輝曄
混合保護(hù)器
混合動力汽車
混頻器
霍爾傳感器
機(jī)電元件
基創(chuàng)卓越
激光二極管
激光器
計步器
繼電器