FPGA在數(shù)據(jù)中心的應(yīng)用方面不斷增長,但如何在其他應(yīng)用程序中利用FPGA呢?
(資料圖片)
全球領(lǐng)先的半導(dǎo)體公司AMD(AMD)在2021年以350億美元收購了芯片制造商Xilinx(XLNX),這是AMD繼收購ATI Technologies以來的又一次重大收購。不過,在深度學(xué)習(xí)領(lǐng)域中,大多數(shù)情況下GPU被認(rèn)為是比FPGA更加強(qiáng)大。那么,AMD為什么會花費(fèi)350億美元收購Xilinx,而不進(jìn)一步提升自己的GPU呢?進(jìn)一步投資和開發(fā)GPU有助于增強(qiáng)自身的競爭力,尤其是在數(shù)據(jù)中心領(lǐng)域,競對NVIDIA公司似乎有著非常雄心勃勃的計(jì)劃。
確實(shí),在許多情況下,GPU可以為一些應(yīng)用程序提供更好的性能。對于數(shù)十億美元的深度學(xué)習(xí)市場而言,GPU在訓(xùn)練方面可以提供無與倫比的性能,每個DL模型(深度學(xué)習(xí)模型)只需進(jìn)行一次訓(xùn)練,需要幾天或者幾周。在DL推理(即圖像分類)的情況下,GPU也提供了高性能(即以每秒幀數(shù)為單位衡量的圖像吞吐量)。MLCommons提供了一種公認(rèn)的基準(zhǔn),用于公平比較數(shù)據(jù)中心、移動計(jì)算和邊緣應(yīng)用的多個計(jì)算平臺。在最新版本的MLCommons中,GPU在大多數(shù)類別中以吞吐量的形式占主導(dǎo)地位,具有更高的吞吐量表現(xiàn),可以更高效地處理數(shù)據(jù)和算法。
然而,在許多應(yīng)用程序中,除了原始處理能力之外,其他要求可能更為重要。例如,在移動或嵌入式應(yīng)用程序中,能量效率(即處理能力/瓦)更為重要,特別是當(dāng)設(shè)備由電池供電時。此外,在許多邊緣設(shè)備或嵌入式系統(tǒng)中,延遲也是至關(guān)重要的。在這種情況下,F(xiàn)PGA具有更多的競爭優(yōu)勢,因?yàn)樗鼈兲峁┝朔浅5偷难舆t和更好的能量效率。特別是來自英特爾(S10 NG)和Xilinx Versal的新FPGA,它們集成了專門設(shè)計(jì)的AI引擎,可以提供高吞吐量(特別是在低批量大小情況下)、低延遲和高能量效率的絕佳組合。
圖片
上圖是NVIDIA V100和NVIDIA T4在不同批次大小下與Intel Stratix 10 NX FPGA上的NPU性能比較。參考文獻(xiàn):A. Boutros等人的論文“超越峰值性能:比較AI優(yōu)化的FPGA和GPU的實(shí)際性能,F(xiàn)PT 2020”。
在許多情況下,GPU仍然可以提供更好的性能,特別是在處理大批量數(shù)據(jù)時。雖然FPGA在一些特定應(yīng)用場景下具有優(yōu)勢,但是在其他情況下,GPU仍然是更好的選擇。那么回到問題,為什么AMD要花這么多錢購買FPGA呢?
答案可能來自于FPGA在數(shù)據(jù)中心中的最近受到廣泛采用的情況。微軟Azure是第一批采用FPGA加速其自身應(yīng)用程序的云供應(yīng)商之一。Project Catapult是第一個商業(yè)部署FPGA的創(chuàng)新項(xiàng)目??膳渲玫脑萍軜?gòu)在網(wǎng)絡(luò)交換機(jī)和服務(wù)器之間放置了一層可重構(gòu)邏輯(FPGA),使網(wǎng)絡(luò)流能夠以線速率“可編程轉(zhuǎn)換”,從而加速在服務(wù)器上運(yùn)行的本地應(yīng)用程序,并使FPGA能夠直接在數(shù)據(jù)中心范圍內(nèi)通信,以收集未被其本地服務(wù)器使用的遠(yuǎn)程FPGA。例如,微軟可以利用服務(wù)器中的FPGA加速Bing網(wǎng)絡(luò)搜索排名。FPGA在數(shù)據(jù)中心中的應(yīng)用范圍越來越廣泛,這也許是AMD購買FPGA的原因之一。
圖片
上圖是Project Catapult,來源:Adrian M. Caulfield等人的論文“云規(guī)模加速架構(gòu)”
微軟Azure宣布了在Azure Synapse中利用FPGA用于Apache Spark。根據(jù)Azure的數(shù)據(jù),數(shù)據(jù)格式CSV、JSON和Parquet占了90%的客戶工作負(fù)載。解析CSV和JSON數(shù)據(jù)格式非常耗費(fèi)CPU資源,通常占據(jù)查詢的70%至80%。因此,微軟Azure使用FPGA加速CSV解析。FPGA解析器讀取CSV數(shù)據(jù),對其進(jìn)行解析,并生成一個接近Apache Spark內(nèi)部行格式(即Tungsten)的VStream格式化二進(jìn)制數(shù)據(jù)。雖然FPGA解析器在FPGA級別的內(nèi)部原始性能為8GB/秒,但在端到端應(yīng)用程序中還無法實(shí)現(xiàn)全部性能。通過這種方式,他們成功提高了Apache Spark的性能。FPGAs也可用于加速Spark應(yīng)用程序的機(jī)器學(xué)習(xí),在這些應(yīng)用程序中,F(xiàn)PGA可以加速諸如特征提取、模型推理和數(shù)據(jù)增強(qiáng)等任務(wù)。
AWS是第一個宣布向終端用戶提供FPGA的云供應(yīng)商,于2017年推出了f1實(shí)例。FPGA開發(fā)人員可以將其設(shè)計(jì)上傳到AWS市場。AWS宣布在Redshift AQUA上利用FPGA,在這項(xiàng)服務(wù)中,F(xiàn)PGA硬件執(zhí)行數(shù)據(jù)集過濾和聚合。過濾可以刪除數(shù)據(jù)集中不需要的信息,以創(chuàng)建子集;而聚合則提供記錄中的總和、計(jì)數(shù)、平均值等信息。結(jié)果是向Redshift群集發(fā)送的數(shù)據(jù)量更少。由于進(jìn)行了預(yù)處理,所以集群要處理的工作更少,可以將某些子查詢處理卸載到AQUA節(jié)點(diǎn),從而提高性能和效率。這種使用FPGA的方式在AWS的Redshift AQUA中被稱為“自適應(yīng)縮放”,它可以根據(jù)查詢的復(fù)雜度和數(shù)據(jù)集的大小來動態(tài)分配FPGA資源。
圖片
上圖是Redshift AQUA使用FPGA和ASIC進(jìn)行內(nèi)聯(lián)處理。
FPGA在數(shù)據(jù)中心的應(yīng)用方面不斷增長,但如何在其他應(yīng)用程序中利用FPGA呢?
關(guān)鍵要實(shí)現(xiàn)更簡單的FPGA部署、無縫擴(kuò)展和自動資源管理。相比之下,GPU能提供易于部署、擴(kuò)展和資源管理的豐富生態(tài)系統(tǒng)工具和方法(例如run.ai)。然而,到目前為止,F(xiàn)PGA的部署仍然具有挑戰(zhàn)性,因?yàn)橛脩舯仨毷煜PGA技術(shù)(比特流、配置文件、內(nèi)存分配、LUT等)。因此,關(guān)鍵問題在于如何實(shí)現(xiàn)一種技術(shù),讓軟件用戶能夠利用FPGA加速其應(yīng)用程序,而無需先前的FPGA知識。這就是為什么InAccel的編排器提供了一種獨(dú)特的技術(shù),使任何人都能像調(diào)用軟件函數(shù)一樣利用FPGA的強(qiáng)大功能。InAccel編排器讓人可以輕松地部署、擴(kuò)展和資源管理FPGA集群,同時還能與任何應(yīng)用程序和框架(Spark、Ray、Keras、Scikit-learn等)進(jìn)行集成。這種技術(shù)的出現(xiàn)使FPGA在廣泛的應(yīng)用場景中更易于使用和普及。
例如,使用容器的強(qiáng)大功能,用戶可以僅使用一行代碼即可立即加速壓縮應(yīng)用程序。
docker inaccel run -e PWD -t inaccel/apps:xilinx gzip-compression
或者可以使用免費(fèi)演示工具在線評估加速器的性能:
http://compression.inaccel.com/
https://studio.inaccel.com/