加速基于 Arm Neoverse N2 的大語言模型推理
人工智能 (AI) 正在眾多行業(yè)掀起浪潮,尤其是在大語言模型 (LLM) 問世后,AI 發(fā)展呈現(xiàn)井噴之勢。LLM 模型不僅極大改變了我們與技術(shù)的交互方式,并且在自然語言理解和生成方面展現(xiàn)出了驚人的能力。雖然 GPU 在訓(xùn)練生成式 AI 模型方面發(fā)揮了重要作用,但在推理領(lǐng)域,除了 GPU 和加速器之外,還有其他可行的選擇。長期以來,CPU 一直被用于傳統(tǒng)的 AI 和機(jī)器學(xué)習(xí) (ML) 用例,由于 CPU 能夠處理廣泛多樣的任務(wù)且部署起來更加靈活,因此當(dāng)企業(yè)和開發(fā)者尋求將 LLM 集成到產(chǎn)品和服務(wù)中時,CPU 成了熱門選擇。
本文引用地址:http://m.butianyuan.cn/article/202407/460787.htm在本文中,我們將探討基于 Arm Neoverse N2 的阿里巴巴倚天 710 CPU 在運(yùn)行 Llama 3 [1] 和 Qwen1.5 [2] 等業(yè)內(nèi)標(biāo)準(zhǔn) LLM 時所展現(xiàn)的靈活性和可擴(kuò)展性。此外,本文還將通過比較分析,展示倚天 710 CPU 相較于其他基于 CPU 架構(gòu)的服務(wù)器平臺所具備的主要優(yōu)勢。
阿里云倚天 710 云實(shí)例上的 LLM 性能
通用矩陣乘法 (General Matrix Multiplications, GEMM) 是深度學(xué)習(xí)計(jì)算(包括 LLM 中的計(jì)算)中廣泛使用的一項(xiàng)基本運(yùn)算。它對兩個輸入矩陣進(jìn)行復(fù)雜的乘法運(yùn)算,得到一個輸出。Armv8.6-A 架構(gòu)增加了 SMMLA 指令,該指令將第一個源矢量中的 2x8 有符號 8 位整數(shù)值矩陣與第二個源矢量中的 8x2 有符號 8 位整數(shù)值矩陣相乘。然后將生成的 2x2 的 32 位整數(shù)矩陣乘積加到目標(biāo)矢量中的 32 位整數(shù)矩陣?yán)奂悠髦小_@相當(dāng)于對每個目標(biāo)元素執(zhí)行 8 路點(diǎn)積運(yùn)算。SMMLA 指令已添加到基于 Neoverse N2 的阿里巴巴倚天 710 CPU 中。
在過去幾個月內(nèi),Arm 軟件團(tuán)隊(duì)與合作伙伴緊密協(xié)作,利用上述 SMMLA 指令,優(yōu)化了在 llama.cpp 中實(shí)現(xiàn)的 int4 和 int8 GEMM 內(nèi)核。最近,我們在阿里云倚天 710 云實(shí)例上進(jìn)行了多次實(shí)驗(yàn),采用了最新的優(yōu)化 [3][4] ,以評估 llama.cpp 在不同場景下的性能表現(xiàn)。
所有實(shí)驗(yàn)均在阿里云 ecs.g8y.16xlarge 實(shí)例上進(jìn)行,該實(shí)例帶有 64 個虛擬 CPU (vCPU) 和 256 GB 的內(nèi)存。所用的模型是經(jīng)過 int4 量化的 Llama3-8B 和 Qwen1.5-4B。
提示詞處理
提示詞詞元 (Token) 通常是并行處理的,即使對于單次操作 (batch=1),也會使用所有可用核心,而且隨著批量大小的增加,提示詞處理速率基本不變。在這方面,經(jīng)過 Arm 優(yōu)化,每秒處理的詞元數(shù)提升了 2.7 倍。
詞元生成
詞元生成以自回歸的方式進(jìn)行,詞元生成的總時間與需要生成的輸出長度相關(guān)。在這方面,經(jīng)過 Arm 優(yōu)化,在處理更大批量的數(shù)據(jù)時提升效果更為明顯,吞吐量最多可提高 1.9 倍。
延遲
詞元生成的延遲對 LLM 的交互式部署非常重要。對于下個詞元響應(yīng)時間 (time-to-next-token),100ms 的延遲是關(guān)鍵的目標(biāo)指標(biāo),這是基于人們每秒 5-10 個單詞的典型閱讀速度計(jì)算得出的。在下方圖表中,我們看到在單次操作和批量處理的場景下,阿里云倚天 710 云實(shí)例都能滿足 100ms 的延遲要求,因此是常規(guī)體量 LLM 的合適部署目標(biāo)。我們使用了兩組不同的新模型 Llama3-8B 和 Qwen1.5-4B,以展示實(shí)際部署中不同體量的常規(guī) LLM 的延遲情況。
性能比較
此外,我們使用經(jīng)過 int4 量化的 Llama3-8B 模型,比較了它在倚天 710 與在阿里云上其他服務(wù)器 CPU 的性能 [注] 。
阿里云倚天 710:ecs.g8y.16xlarge,64 個 vCPU,256 GB 內(nèi)存,12.8 人民幣/小時
Intel Icelake:ecs.g7.16xlarge,64 個 vCPU,256 GB 內(nèi)存,16.74 人民幣/小時
Intel Sapphire Rapids:ecs.g8i.16xlarge,64 個 vCPU,256 GB 內(nèi)存,17.58 人民幣/小時
[注] 阿里云倚天 710 采用了 [3][4] 中的優(yōu)化,Intel Icelake 和 Sapphire Rapids 使用了現(xiàn)有的 llama.cpp 實(shí)現(xiàn)。
我們發(fā)現(xiàn),與其他兩款 CPU 相比,阿里云倚天 710 的提示詞處理表現(xiàn)出最高達(dá) 3.2 倍的性能優(yōu)勢,詞元生成性能最高達(dá) 2.2 倍的優(yōu)勢。
同樣值得注意的是,阿里云倚天 710 平臺的成本效益高于 Icelake 和 Sapphire Rapids,這在阿里云倚天 710 實(shí)例相對較低的定價中就有所體現(xiàn)。這使得阿里云倚天 710 在 LLM 推理的總體擁有成本方面具有顯著優(yōu)勢,與其他兩款 CPU 相比,每元詞元數(shù)量最高多了近三倍,這為希望在采用 LLM 的過程中逐步擴(kuò)大規(guī)模的用戶提供了令人信服的優(yōu)勢。
結(jié)論
當(dāng)開發(fā)者想要在應(yīng)用中部署專用 LLM 時,服務(wù)器 CPU 為開發(fā)者提供了靈活、經(jīng)濟(jì)和簡化的部署流程。Arm 集成了幾項(xiàng)關(guān)鍵的增強(qiáng)功能,大幅提高了 LLM 的性能。得益于此,基于 Arm Neoverse 的服務(wù)器處理器(如阿里云倚天 710)能夠提供優(yōu)于其他服務(wù)器 CPU 的 LLM 性能。此外,它們還有助于降低采用 LLM 的門檻,使更多應(yīng)用開發(fā)者能夠輕松將 LLM 部署于各種場景。
評論