我最近參加了在矽谷舉行的2018年Xilinx開發者論壇(XDF)。在這個論壇上,一家名為Mipsology的AI新創公司聲稱已經解決了採用FPGA的AI相關問題。 Mipsology的遠大願景是利用FPGA可實現的最高性能來加速神經網路(NN)運算,而不受其部署中固有的限制。

Mipsology展示了每秒可執行超過2萬張圖片的能力,基於Xilinx新發佈的Alveo板,處理一系列NN,包括ResNet50、InceptionV3、VGG19及其它深度學習模型等。

神經網路和深度學習入門

神經網路鬆散建模人腦中的神經網路,是深度學習(DL)的基礎,這是一個複雜的數學系統,可以自己學習執行任務。透過查看許多示例或關聯,NN比傳統的辨識程式更快地學習連接和關係。訓練就是基於對數百萬同一類型的樣本學習配置NN以執行特定任務的過程。

例如,一個NN可能聆聽許多聲音樣本並使用DL來學習「辨識」特定單詞的聲音。然後,該NN就可以篩選新的聲音樣本清單,並使用稱為推論的技巧來正確辨識出包含它已經學習過的單詞樣本。

儘管這聽起來很複雜,但DL執行的卻是簡單的操作,主要是加法和乘法,但要進行數十億或數萬億次的運算。執行這麼大量的操作需要很高的運算能力。更具體地講,執行DL推論的運算需求要大於DL訓練對運算的需求。DL訓練只需要進行一次,但NN一旦經過訓練後,就必須對其收到的每個新樣本一次又一次地進行推論。

加速深度學習推論的四種選擇

隨著時間的推移,工程技術界挑選了四種不同的運算元件來處理NN。按照處理能力和功耗的遞增順序,以及靈活性/適應性的遞減順序,這些元件包括:中央處理器(CPU),繪圖處理器(GPU),FPGA和ASIC。下表總結了四種運算器件之間的主要差異。

20181226_FPGA_DL_TA01P1 圖1:用於DL運算的CPU、GPU、FPGA和ASIC比較(來源:Lauro Rizzatti)

CPU基於馮諾依曼(Von Neumann)架構。雖然靈活(這是它存在的根本原因),但CPU會受到高延遲的影響,因為記憶體存取要耗費幾個時脈週期才能執行一次簡單的任務。當應用於要求低延遲的任務時,如NN運算,特別是DL訓練和推論,它們是最差的選擇。

GPU以折衷靈活性為代價來提高運算輸送量。此外,GPU的功耗很大,需要冷卻裝置,這使得其無法成為資料中心大規模部署的理想選擇。

客製ASIC似乎是一種理想的解決方案,但也有一系列的原生問題。首先,開發ASIC需要耗費數年時間,而DL和NN仍在快速演進中,也許一個新的突破馬上就讓去年的技術變得無關緊要了。此外,為了與CPU或GPU競爭,ASIC較大的晶片面積就需要使用最新最小的晶圓製程技術來製造。這使得前期的巨額投資十分昂貴,而又不能保證其長期可用性。綜合考慮多種因素,ASIC對特定任務才比較有效。

FPGA元件已逐漸成為推論的最佳選擇。它具有快速、靈活和高效的優點,並且可為資料中心的資料處理提供良好的解決方案,特別是在快速發展的DL領域、網路邊緣以及AI科學家的桌面終端上。

目前最大的FPGA包括數百萬個簡單的布爾( Boolean)運算、數千個記憶體和DSP,以及多個Arm處理器核心。所有這些資源都可以平行工作 ,即每個時脈週期即可觸發多達數百萬個同時的操作,從而達到每秒執行數萬億次操作的運算性能。 DL所需的處理能力可以有效地映射到FPGA資源上。

相較於CPU和GPU,FPGA在DL應用方面還具有其它優勢,包括:

  • 不限於某種類型的資料,例如可以處理非標準的低精度資料,為DL提供更高的輸送量。
  • 比CPU或GPU的功耗低,對相同的NN運算其平均功耗要低5~10倍;在資料中心部署的經常性營運成本也比較低。
  • 可以對其進行重新編程以適應不同的任務,其通用性足以適應各種應用需求。DL正在快速發展和變化,同一個FPGA可以滿足新的要求,而無需更換為下一代晶片(而ASIC就必須更換),從而降低了擁有權總成本。
  • 應用範圍較廣,從大型到小型裝置都可以,既可用於資料中心,也可用於物聯網(IoT)節點。唯一的區別是它所包含的模組數不同。

金玉其外,未必皆善

FPGA的高運算能力、低功耗和靈活性是需要付出代價的,它程式設計很複雜。

對FPGA進行程式設計需要特定的技能和知識,首先需要熟悉專門的硬體程式設計語言(HDL),然後還要熟練使用FPGA供應商提供的特定工具,才能通過合成、佈局和佈線等複雜的步驟來編譯設計。FPGA程式設計在獲得回報之前涉及幾個關鍵問題,其中包括定義一個「程式」(program)架構、遵守約束設計規則、將「程式」合理安置到FPGA中,以及因應時序收斂、漫長的編譯及缺乏軟體類調試等問題。

Zebra解決FPGA問題

在XDF上,Mipsology創辦人兼執行長Ludovic Larzul和我談到了Zebra,這是該公司基於FPGA開發的一種用來運算神經網路的深度學習推論引擎。

根據Larzul的說法,「Zebra對用戶隱藏了FPGA,因此消除了那些難以程式設計的問題。」Zebra不要求你學習一種新的語言和工具,也不需要瞭解硬體級別的細節。它提供預先編譯好的FPGA二進位檔案,因此無需學習FPGA編譯過程。

「我們用Zebra簡化了流程。一旦將FPGA板插入PC,只需一個Linux命令即可。FPGA可以代替CPU或GPU立即進行無縫的推斷,並且可以在更低的功耗下將運算速度提高一個數量級。」

Larzul說,Zebra是專為AI設計的,「FPGA現在可用於人工智慧和深度學習。“Zebra則可以整合至Caffe、Caffe2、MXNet和TensorFlow等架構中。部署Zebra無需修改神經網路架構,可讓AI專家在同一架構上運行各種應用。他們可以在NN訓練之後從CPU或GPU切換到FPGA以進行推論,而不會浪費研發時間。」

「Zebra可支援各種NN,從最常見的商業網路到任何定制設計的NN。只要使用可支援的層和參數構建神經網路,就不需要進行任何更改。Zebra的界限不應該阻止任何NN在其上運行。它們可以包括多達100萬個層、30億個網路權重,以及每個卷積濾波器中的5萬個篩檢程式。所有這些資源遠高於神經網路所常用的。

「Zebra使用8位元或16位元定點整數執行推論運算,而CPU或GPU通常使用浮點值。正如許多科學論文中所揭示的,若使用適當的量化,結果的準確性不會受到精度變化的影響。Zebra也適應這種情況,無需任何使用者干預。通過降低運算精度,運算輸送量可大大提高。」

性能是最重要的,Larzul聲稱,「雖然FPGA具有其他硬體平台無法比擬的多種優勢,但處理速度、功耗和成本在大多數情況下是令一個硬體平台具有吸引力的關鍵。當使用相同的軟體堆疊、架構和神經網路時,Zebra的執行速度遠遠高於GPU或CPU。」

20181226_FPGA_DL_TA01P2 圖2:Zebra適應由其他加速器訓練的NN(來源:Mipsology)

Larzul堅定地表示,「在Mipsology,我們會專注於持續提高Zebra的輸送量,旨在實現FPGA所能達到的最高性能。 例如,就在2018年,我們已經在同一晶片上實現了5倍的加速。」

結語

在2018年XDF上發現Mipsology和Zebra對我是一個驚喜。正如Larzul所總結的那樣,「Zebra從一開始的構想就是為了充份利用FPGA的輸送量潛能,並儘量避免其缺點,可以為AI科學家和專業人士提供很高的算力,以加速資料中心和邊緣的NN推論,配合GPU訓練可謂是相得益彰。」

(參考原文:A Breakthrough in FPGA-Based Deep Learning Inference,by Lauro Rizzatti)