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






















