對於一個30億參數的LLM,一個帶有16個IBM AIU NorthPole處理器的研究原型推理裝置提供了巨大的28,356token/秒的系統吞吐量和低於1 ms /token(每使用者)延遲,而16個NorthPole卡在一個緊湊的2U外形上僅消耗672 W。專注於低延遲和高能效,當NorthPole (12 nm)與一套GPU (7 / 5 / 4 nm)在各種功耗下進行比較時,在最低的GPU延遲下,NorthPole提供72.7個更好的能效指標(token/s/ W),同時提供更好的延遲。
介紹
大型語言模型(LLMs)已經在不同的AI任務中取得了顯著的性能基準,例如通過提供程式碼建議來協助程式設計,在標準化測試中表現出色,以及幫助文章,部落格,圖像和視訊的內容建立。
在LLMs的大規模部署中,特別是在人工智慧的大規模部署中,出現了兩個主要且相互衝突的挑戰,即:能源消耗和響應延遲。
首先,由於LLM在訓練和推理方面都需要大量的能源資源,因此需要一個可持續的未來計算基礎設施來實現其高效和廣泛的部署。隨著資料中心碳足跡的擴大,以及它們越來越受到能源限制,資料中心的能源效率變得越來越重要。根據世界經濟論壇的報告:
“目前,資料中心環境碳足跡主要分成兩部分:訓練佔20%,推理佔80%。隨著人工智慧模型在不同領域的發展,對推理及其環境足跡的需求將會升級。”
其次,許多應用程式,如互動對話和自主工作流,需要非常低的延遲。在給定計算架構內,降低延遲可以通過降低吞吐量來實現,但這會導致能效下降。借用一句經典的系統格言進行改述:
“吞吐量問題可以通過資金解決,而延遲問題則更為複雜,因為光速是固定的。”(改述自[10],將“頻寬”取代為“吞吐量”。)
GPU可以通過使用較小的批次大小來實現更低的延遲,但代價是吞吐量和能效的下降。此外,GPU分片通過在多個GPU上使用資料平行性來減少延遲,但同樣犧牲了能效。無論是否分片,GPU似乎都遇到了延遲下限的硬性限制。GPU在能效與延遲之間的權衡如圖1所示。
因此,本文所探討的一個關鍵研究問題是如何同時實現低延遲與高能效這兩個相互衝突的目標。
NorthPole是一個推理加速器晶片和軟體生態系統,從第一性原理共同設計,為神經網路推理提供卓越的效率。儘管NorthPole並不是專門為LLM設計的,但令人驚訝的是,本文證明了新型NorthPole架構可以實現低延遲、高能效的LLM推理(圖1、圖2和表1)。
測量了NorthPole和GPU系統的性能,按每卡計算。對於每個指標,#表示越低越好,而"表示越高越好。對於NorthPole 16卡裝置,功耗按每卡測量,總系統吞吐量按16張卡進行劃分。NorthPole延遲通過所有16張卡進行測量。P1、P2、P3、P4分別指代圖1和圖2中標記的點,表示最高GPU能效指標、最低整體GPU延遲、最高GPU空間指標和最低能效GPU延遲。
本文的主要研究結果如下:
對於一個參數量為30億的大型語言模型(LLM),其模型結構源自IBM Granite-8B-Code-Base模型,並與Llama 3 8B和Mistral 7B[14]保持一致,本文展示了一種配備16個NorthPole處理器的研究原型推理裝置。
在絕對性能方面,該裝置提供28,356 tokens/sec的系統吞吐量,單使用者延遲低於1毫秒,同時在2U機型下,16個NorthPole卡的功耗為672瓦。
在相對性能方面,將12納米的NorthPole與一系列GPU(分別為7 / 5 / 5 / 4納米的A100 / L4 / L40S / H100)在不同功耗下進行比較,可以從圖2(a)和圖2(c)中看出:在最低的GPU延遲(點P2)時,NorthPole提供了72.7倍更好的能效指標(tokens / second / W)和15.9倍更好的空間指標(tokens / second / transistor),同時延遲仍低於2.5倍;在最佳GPU能效指標(點P1)時,NorthPole提供了46.9倍更低的延遲和2.1倍更好的空間指標,同時仍提供2.2倍更好的能效指標;在最佳GPU空間指標(點P3)時,NorthPole提供了20.3倍更低的延遲和5.3倍更好的能效指標,同時仍提供1.4倍更好的空間指標。
特別是,當將12納米的NorthPole與5納米的L4 GPU進行可比功耗比較時,從圖2(e)中可以看出,在最高的L4吞吐量(低於50毫秒每token,點P1)時,NorthPole提供了46.9倍更低的延遲,同時吞吐量提高了1.3倍;而在最低的L4延遲(點P4)時,NorthPole提供了36.0倍更高的吞吐量(tokens / second / card),同時延遲仍低於5.1倍。
面板(a)與圖1相同,增加了點P3的標註。面板(a)和(c)使用單個GPU,而面板(b)和(d)使用分片技術,這可能降低延遲,但僅以犧牲能效和空間效率為代價。在最低的GPU延遲(H100,點P2)時,NorthPole提供了72.7倍更好的能效指標(tokens / second / W)和15.9倍更好的空間指標(tokens / second / transistor),同時延遲仍低於2.5倍;在最佳GPU能效指標(L4,點P1)時,NorthPole提供了46.9倍更低的延遲和2.1倍更好的空間指標,同時仍提供2.2倍更好的能效指標;在最佳GPU空間指標(A100,點P3)時,NorthPole提供了20.3倍更低的延遲和5.3倍更好的能效指標,同時仍提供1.4倍更好的空間指標。
面板(e)顯示了12納米的NorthPole在吞吐量(tokens / second / card)和系統延遲指標上相對於5納米的L4 GPU的性能。在最低的L4延遲(點P4)時,NorthPole提供了36.0倍更高的吞吐量;在最高的L4吞吐量(低於50毫秒每token,點P1)時,NorthPole提供了46.9倍更低的延遲。用於計算每個能效指標的GPU功耗見表I。由於沒有可用的儀器來測量不同批次大小的實際功耗,因此對所有批次大小使用相同的功率,這可能會低估能效指標,但定性的結果仍然成立。
NorthPole架構
如圖3所示,NorthPole處理器採用12納米工藝技術製造,擁有220億個電晶體,面積為795平方毫米。其架構受到大腦的啟發,經過針對硅的最佳化,源於十個互補的設計公理,涵蓋計算、儲存、通訊和控制,使NorthPole在標準AI推理任務中顯著超越其他架構,即使是與更先進工藝技術製造的處理器相比也表現優異。
有關NorthPole架構的詳細公理,請參見[11],[12]。簡而言之,NorthPole將256個模組化核心排列在16×16的二維陣列中。每個核心包含一個向量-矩陣乘法器(VMM),在INT8、INT4和INT2精度下,每個核心每個周期分別執行2048、4096和8192次操作。核心計算還包括一個4路、32切片的FP16向量單元和一個32切片的啟動函數單元。核心陣列總共有192 MB的SRAM,每個核心配備0.75 MB的SRAM。片上儲存器與計算單元和控制邏輯緊密耦合,核心儲存器與計算之間的總頻寬為13 TB/s。此外,每個核心都有4096根導線在水平和垂直方向交叉,用於通過四個專用片上網路(NoCs)傳遞參數、指令、啟動值和部分和。為了防止停頓,片上幀緩衝區配備32 MB的SRAM,將輸入和輸出資料的片外通訊與核心陣列的片上計算解耦。
裝置
NorthPole已經在一個PCIe Gen3 × 8卡中進行了原型設計,如圖4所示,其中16個卡安裝在一台現成的2U伺服器中,組成了一個研究原型推理裝置,如圖5所示。該伺服器包含兩顆Intel Xeon Gold 6438M處理器,每顆處理器具有32個核心和60 MB快取,主頻為2.2 GHz。系統還配備了512 GB的4800 MHz DDR5記憶體。每個伺服器處理器連接有兩條PCIe Gen5 × 16匯流排,提供總共256 GB/s的PCIe頻寬(雙向)。這四條匯流排通過PCIe橋接器擴展至系統的16個PCIe插槽,每個插槽上都安裝了一個NorthPole卡。這16個NorthPole卡最大使用可用的256 GB/s PCIe頻寬的一半。
該系統運行Red Hat Enterprise 8.9,NorthPole使用內建的VFIO核心驅動,以便使用者空間的軟體能夠管理硬體。系統使用IOMMU進行地址轉換管理,並啟用裝置隔離和虛擬化等安全功能,以便使用虛擬機器或容器技術運行應用程式。
每個NorthPole卡通過駐留在每個卡上的DMA引擎接收和傳輸資料。這些DMA引擎獨立工作,可以以多種方式同時接收和傳輸張量。第一種方法是標準的PCIe端點模型,主機程序通過DMA引擎從主機記憶體中讀取輸入,並在計算完成後將張量寫回主機記憶體。第二種方法利用每個卡上的附加硬體功能,使NorthPole卡可以通過PCIe直接相互通訊,而無需進行主機記憶體之間的傳輸或在執行階段進行額外的軟體管理。通過直接的NorthPole間通訊,可以使更大的模型跨越多個NorthPole晶片,同時減少通訊延遲和由純軟體管理系統帶來的開銷。
將LLMs對應到NorthPole裝置
對應LLMs的策略,如圖6所示,受到了三個關鍵觀察的啟發。首先,對於足夠大的模型,整個變換器層可以使用INT4格式的權重、啟動值和KV快取完全適配在單個NorthPole晶片的記憶體中(“w4a4”),而輸出層則可以適配在兩個晶片上。其次,如果權重和KV快取完全駐留在晶片上,執行階段只需在層間傳輸小型嵌入張量,這在PCIe Gen3 × 8的頻寬範圍內。第三,可以通過在現成伺服器中安裝16個NorthPole PCIe卡,輕鬆組裝原型NorthPole裝置。
這暗示了一種策略,將每個變換器層對應到各自的NorthPole卡上,採用GPipe風格的流水線平行性,並將輸出層跨兩個NorthPole卡拆分,使用張量平行性,通過PCIe Gen3 × 8將層之間的嵌入張量傳送。在推理過程中,一個使用者請求的小批次(例如N個請求)被分成M個相等的微批次,並通過16個NorthPole卡進行流水線處理。
雖然流水線平行性已在LLMs訓練中得到利用(沒有延遲限制),但在推理中的使用受限於減少每個流水線階段的空閒時間或流水線氣泡所需的大小批次。例如,有研究發現,高效訓練要求微批次數M大約是流水線階段數的四倍。小批次大小N受到以下因素的限制:(a)系統所需的每個token延遲,以及(b)用於儲存整個小批次的KV快取的可用記憶體。低延遲計算和13 TB/s的片上記憶體頻寬使NorthPole能夠實現極低的每個token延遲,因此選擇N時的限制因素是用於在晶片上儲存整個KV快取的記憶體。此外,我們發現微批次數M等於流水線階段數足以使流水線空閒時間可忽略不計。
在本文報告的實驗中,我們選擇了N = 28的小批次大小,分為M = 14個相等的微批次,從而使每個NorthPole卡計算的微批次大小為2。我們在如此小的批次大小下進行高效計算的架構設計選擇是實現圖1和表I中所示效率的關鍵。
LLM模型與訓練方法
A LLM模型
用於測試我們系統的模型基於開放原始碼的IBM Granite-8B-Code-Base模型,這是一個具有80億參數的變換器解碼器,包含36個變換器層,隱藏層大小為4096,FFN中間層大小為14,336,注意力頭數為32,使用分組查詢注意力(GQA)的鍵值頭數為8,詞彙表大小為49,152。為了適應帶有16個NorthPole卡的單個伺服器,我們使用了該模型的30億參數版本,包含14個變換器層和一個輸出層,量化為w4a4精度,但其他結構保持不變。
值得注意的是,這種模型組態在每層的基礎上與Llama 3 8B[13]和Mistral 7B[14]相匹配,僅在層數、模型詞彙表大小和使用的訓練資料上有所不同。
B 完全精度精準性的訓練
為了在量化後恢復原始模型的任務精準性,採用了以下程序來建立模型權重。首先,基於116種語言的1兆個程式碼token,從頭開始訓練一個基線模型,使用全FP16精度,遵循[4]的配方。接下來,對基線模型的輸出層權重和輸入,以及SiLU啟動進行了INT8量化,而所有其他權重、線性層輸入和矩陣乘法輸入則進行了INT4量化。最後,通過對來自訓練資料的Python語言子集的進一步85億個token進行量化感知訓練,恢復後量化精準性,學習率為8×10⁻⁵,批次大小為128,採用LSQ演算法。啟動量化器的步長使用熱啟動進行訓練,在訓練的前250步中將學習率提升200倍,以幫助快速適應資料。
在GPU上運行的基準FP16模型和在NorthPole上運行的量化模型在HumanEvalSynthesize-Python上的精度為pass@10,誤差在0.01以內(0.3001 GPU vs. 0.2922 NorthPole。與Granite-8B-Code-Base模型相比,整體訓練被簡化為專注於硬體性能表徵,而不是推動任務精準性的界限。
執行階段應用
在推理過程中,如圖6所示,token由在主機CPU上運行的高度流水線化使用者應用生成,該應用通過使用分詞器和嵌入層將文字預處理為輸入張量,將輸入張量放入裝置中的第一個NorthPole卡,從裝置的最後一個NorthPole卡接收結果輸出張量,使用解碼器和反分詞器對輸出張量進行後處理,並將生成的token循環作為下一個輸入。使用者應用還負責使用者介面以及提示預填充等更高級的最佳化。
為了將神經網路工作負載解除安裝到NorthPole,使用者應用呼叫具有簡單API的使用者空間執行階段庫,在初始化時組態NorthPole卡的層權重和KV快取,並在執行階段傳送和接收輸入與輸出張量。權重和KV快取組態後保留在片上記憶體中,執行階段無需從片外流式傳輸。執行階段庫還管理片上幀緩衝區,以防止NorthPole核心因缺乏輸入資料或輸出資料接收方而停滯。中間張量在卡之間傳遞,無需主機干預,如第四節所述。
性能結果
NorthPole 16卡裝置在30億參數LLM上實現了28,356token/秒的吞吐量。該LLM的序列長度組態為2048(1024個提示長度,生成1024個token),解碼器採用貪婪採樣。
為了與GPU進行比較,我們測量了兩款針對低功耗推理的GPU(L4 和 L40S)及兩款針對高吞吐量訓練的GPU(A100 和 H100)的單卡性能。所有系統均運行相同的LLM模型和組態,NorthPole以w4a4精度運行,而GPU則以最佳的w4a16精度運行,因為據我們所知,沒有可用的w4a4 CUDA核心。在我們的GPU實驗中,我們利用了GPTQ量化模型,並使用vLLM(版本0.5.4)Marlin核心進行基準測試,以便與NorthPole進行比較。使用GPTQ量化通過降低權重精度,同時保持可接受的精準性,為GPU提供了最佳的模型推理性能。此外,Marlin核心被用來最佳化矩陣運算,特別是在處理稀疏和密集矩陣乘法時。通過vLLM執行階段的基準測試,使我們能夠評估吞吐量和延遲,確保在給定硬體組態下的最佳模型性能。在多個GPU卡的實驗中,採用與可用卡數相等的張量平行性,以有效獲得通過NVLink的最小可能延遲。我們的實驗表明,分片技術雖然減少了延遲,但導致GPU每卡的吞吐量下降。值得注意的是,NorthPole的卓越性能主要源於其巨大的片上記憶體頻寬,其次才是較低的精度。
表I顯示了NorthPole和GPU系統在每卡基礎上的測量性能結果。基本指標包括吞吐量、延遲、空間和能量指標,定義如下。
對於輸入提示的小批次生成的總token數為:
其中,MMM為微批次的數量,tok_seq_len為單個使用者生成的輸出token數。系統吞吐量是響應輸入提示的生成token總數(tokens gen),除以處理提示所需的總時間,包括提示預填充時間(prompt time)和token生成時間(token gen time):
吞吐量以每卡為單位進行比較,方法是將系統吞吐量除以系統中處理卡的數量:
延遲是對特定使用者生成輸出token之間的平均時間的度量,它是嵌入token流經處理管道所需時間的總和,以及在生成token總數上平攤的提示預填充時間:
同樣地,結合式1、2、4:
其中小批大小=小批大小注意,這是每個使用者看到的系統延遲。
通過系統中的卡片數量進行規範化,我們擴展了[11]中定義的空間和能量指標,以便能夠比較具有不同卡片數量的系統。由此產生的空間和能量指標是每張卡的吞吐量,分別由每張卡的處理器電晶體數量和每張卡的功率歸一化:
如果系統吞吐量與系統中流水線卡的數量成比例地擴展,則卡的規範化將被抵消,使空間和能量指標與系統中卡的數量保持不變。通常,由於通訊和同步開銷,系統吞吐量在卡數量上呈次線性增長。
結論
我們提出以下貢獻:
- 我們展示了一個多卡NorthPole裝置的研究原型。
- 我們證明了像LLM這樣的大型神經網路模型可以有效地在多個NorthPole處理器之間拆分,擴展了我們之前的工作,後者顯示單個NorthPole處理器在視覺推理任務(ResNet50、Yolo-v4)上的表現優於其他架構。
- 我們證明了NorthPole獨特的架構非常適合LLM推理,使其在低延遲和高能效的雙重目標上顯著超越邊緣和資料中心GPU。
由於NorthPole裝置必須作為一個整體使用,因此它對高吞吐量應用最為高效。
本初步論文為進一步研究能效最佳化、在相應更大NorthPole裝置上對應更大LLM、新的與NorthPole架構協同最佳化的LLM模型,以及未來系統和晶片架構提供了一個跳板。 (半導體行業觀察)
