国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
大模型推理加速技術(shù)概要

在很多開發(fā)者印象中,大模型是巨大而昂貴的,想把模型訓(xùn)練出來和部署執(zhí)行都很困難。這很自然,任何新技術(shù)都會(huì)經(jīng)歷一個(gè)從昂貴到便宜,少數(shù)人用到普及的過程。但這個(gè)過程可能 比很多人想像的都要快:從大模型推理技術(shù)的角度來看,當(dāng)下我們可能正處在價(jià)格加速下跌,普及程度快速提高的拐點(diǎn)時(shí)刻。

本文基于2023年10月大模型推理技術(shù)的現(xiàn)狀,概要敘述了要想讓大模型跑得快和便宜,我們目前都有哪些辦法,各解決什么問題,以及相關(guān)的應(yīng)用場景,希望對(duì)讀者有用。

通過我和有道AI團(tuán)隊(duì)的調(diào)研,評(píng)估多套系統(tǒng),通讀相關(guān)文獻(xiàn)和論文,結(jié)合實(shí)際的經(jīng)驗(yàn),目前大模型推理加速技術(shù)棧大體可以分成三層:

通過將技術(shù)分層,希望可以將不同技術(shù)的相關(guān)關(guān)系可以展示更清楚。這三層是個(gè)棧的關(guān)系,上面層建立在下面層的基礎(chǔ)上,提供更多的加速比。一個(gè)具體的系統(tǒng),可以只使用線性代數(shù)計(jì)算庫這一層加速,也可以使用下面兩層,或者全部三層來進(jìn)行加速。

在當(dāng)下,如果進(jìn)行聊天等常用場景的大規(guī)模應(yīng)用,很多時(shí)候直接應(yīng)用vLLM這樣的大模型調(diào)度引擎,已經(jīng)可以取得相對(duì)較好的推理性能,并不需要做額外的大量優(yōu)化工作。如果碰上系統(tǒng)不能覆蓋到的場景,例如新的模型架構(gòu),一些特定的工作負(fù)荷特性,或者更高的性能要求,團(tuán)隊(duì)則可能還需要進(jìn)行一些定制開發(fā)。好在大部分這些加速技術(shù)都是開源或者有開源替代,因此在大模型推理這個(gè)領(lǐng)域內(nèi),定制開發(fā)的可行性是比較好的。

下面,我們花主要的篇幅,分層講解一下這三層去都有哪些技術(shù)和項(xiàng)目,分別扮演什么角色,方便大家跟蹤和理解。

1.線性代數(shù)計(jì)算庫

線性代數(shù)加速是機(jī)器學(xué)習(xí)以及科學(xué)計(jì)算領(lǐng)域的基礎(chǔ)技術(shù),歷史可以一直追溯到上世紀(jì)70年代的Fortran語言BLAS庫(Basic Linear Algebra Subprograms),其中定義了矩陣乘法、矩陣和向量乘法等數(shù)十個(gè)標(biāo)準(zhǔn)函數(shù)。線性代數(shù)層的加速主要依賴以下優(yōu)化:

  • GPU多核計(jì)算能力:通過調(diào)用CUDA、OpenCL等API,來利用GPU的并行能力。

  • CPU SIMD和多核 :單指令多數(shù)據(jù)SIMD在x86上有SSEx和AVX等指令,在ARM上有NEON和SVE,都廣泛被使用,也有的庫通過OpenMP再疊加多核能力。

  • Tiling分塊:矩陣乘法GEMM作為機(jī)器學(xué)習(xí)關(guān)鍵操作,可以通過Tiling的方法,大幅減少對(duì)于內(nèi)存帶寬的需求,提高速度。Tiling是HPC的經(jīng)典優(yōu)化,有興趣可以看相關(guān)文章,比如《深入淺出GPU優(yōu)化系列:GEMM優(yōu)化(一)》。

  • Autotuning自動(dòng)調(diào)優(yōu):通過參數(shù)空間搜索,可以在多個(gè)分塊辦法和操作核之間自動(dòng)優(yōu)選適合本機(jī)的優(yōu)化方案。

對(duì)于比較低并發(fā)度的硬件平臺(tái),比如嵌入式或者手機(jī)平臺(tái),以及模型架構(gòu)固定的應(yīng)用,直接調(diào)用線性代數(shù)庫是可行的部署大模型的辦法。使用Huggingface Transformers這樣的沒有針對(duì)推理優(yōu)化的PyTorch庫進(jìn)行推理,基本上可以認(rèn)為就是只使用到了線性代數(shù)庫的優(yōu)化效果。而對(duì)于較大吞吐量的應(yīng)用來說,僅僅使用線性代數(shù)層的優(yōu)化,往往導(dǎo)致性能不足。

2.神經(jīng)網(wǎng)絡(luò)執(zhí)行引擎

神經(jīng)網(wǎng)絡(luò)執(zhí)行引擎是機(jī)器學(xué)習(xí)特別是神經(jīng)網(wǎng)絡(luò)發(fā)展起來后,平臺(tái)開發(fā)者推出的通用推理加速服務(wù),包括TensorRT、Tensorflow Serving,TVM/MLC等,手機(jī)上高通的SNPE因?yàn)槭褂昧藞D計(jì)算,也可以認(rèn)為是一個(gè)相對(duì)簡單的執(zhí)行引擎。和線性代數(shù)層的優(yōu)化不同,執(zhí)行引擎能夠看到整個(gè)神經(jīng)網(wǎng)絡(luò)的架構(gòu),也能夠同時(shí)處理多個(gè)來自客戶端的請(qǐng)求,所以可以使用涉及多個(gè)算子、整個(gè)模型,以及多個(gè)請(qǐng)求間的優(yōu)化來提高執(zhí)行效率。執(zhí)行引擎一般有這些辦法將模型推理進(jìn)一步加速:

  • Operator Fusion 算子融合:因?yàn)閮?nèi)存帶寬往往是一大瓶頸,所以簡單將多個(gè)相鄰的算子找準(zhǔn)機(jī)會(huì)合并起來計(jì)算,就可以減少對(duì)數(shù)據(jù)的掃描而大幅提升性能,所以Fusion是算子間優(yōu)化的重要步驟,可以手工進(jìn)行,也可以由執(zhí)行引擎自動(dòng)進(jìn)行。

  • Quantization 量化:隨著GPU對(duì)數(shù)據(jù)結(jié)構(gòu)支持的多元化,當(dāng)前推理的基線數(shù)據(jù)類型已經(jīng)是FP16,比幾年前的FP32提高了不少速度。即便如此,將模型量化為INT8進(jìn)行推理,依然可以提高較多速度,而在手機(jī)平臺(tái)上,量化推理能進(jìn)一步降低能耗。

  • Distribution 分布式:使用多卡推理,以及通信加速,來提升能推理的模型規(guī)模和速度。

  • Batching 批量化:將多個(gè)請(qǐng)求合并處理,是提高性能的另外一個(gè)關(guān)鍵辦法,這個(gè)能大幅提高性能的原因主要有兩個(gè):1. 合并請(qǐng)求可以增大代數(shù)運(yùn)算的矩陣規(guī)模,而下層代數(shù)庫處理越大的矩陣規(guī)模,相對(duì)性能越高。2. 合并請(qǐng)求可以減少對(duì)靜態(tài)的模型參數(shù)矩陣的掃描次數(shù),減少內(nèi)存帶寬消耗。

3.大模型調(diào)度引擎

大模型調(diào)度引擎是2022年開始新出現(xiàn)的一層抽象。為什么有了執(zhí)行引擎還需要大模型調(diào)度引擎?主要是因?yàn)榇蠹蚁MM(jìn)一步優(yōu)化推理性能,而大模型架構(gòu)相對(duì)固定(Transformer架構(gòu)及變形),通過專門針對(duì)大模型而不是更通用的神經(jīng)網(wǎng)絡(luò)進(jìn)行推理優(yōu)化,就可以利用大模型架構(gòu)的特點(diǎn)和算法特性,來進(jìn)一步提高性能。

圖1. vLLM系統(tǒng)結(jié)構(gòu)

雖然發(fā)展時(shí)間很短,大模型引擎層目前已經(jīng)有這樣一些加速方法:

  • KV Cache:這是fairseq等系統(tǒng)很早就開始有的基礎(chǔ)方法,就是將transformer attention計(jì)算中的Key和Value張量集合緩存下來,避免每輸出一個(gè)token都重復(fù)計(jì)算。

  • Iteration-level scheduling 迭代層調(diào)度:這是2022年Orca引入的方法(參考文獻(xiàn)1),推理引擎默認(rèn)都是按請(qǐng)求批量化,而LLM推理需要多次迭代進(jìn)行自回歸計(jì)算,所以按“迭代”為單位進(jìn)行批量化,可以提高并行度和性能。

  • PagedAttention 分頁注意力: 這是今年vLLM引入的方法(參考文獻(xiàn)2),背后洞察是上面提到的KV cache占用大量GPU內(nèi)存,一個(gè)13B模型每個(gè)輸出token對(duì)應(yīng)的KV張量,需要800KB,而最長輸出長度2048個(gè)token的話,一個(gè)請(qǐng)求就需要1.6GB顯存。因此vLLM引入類似操作系統(tǒng)中的分頁機(jī)制,大幅減少了KV cache的碎片化,提高性能。

  • GPTQ量化。有一批研究專注于尋找更優(yōu)的量化方法,llama.cpp支持近期發(fā)表的GPTQ(參考文獻(xiàn)3),默認(rèn)將模型量化到4比特,大幅提升性能且準(zhǔn)確率下降很小。

  • Fused kernels等各類手工優(yōu)化:很多時(shí)候,手打優(yōu)化都是少不了的辦法,llama.cpp短時(shí)間積累大量用戶,就是因?yàn)轫?xiàng)目作者不怕麻煩,快速積累了大量手工小優(yōu)化,集腋成裘,形成領(lǐng)先的綜合性能。

大模型調(diào)度引擎還處在快速發(fā)展中,但已經(jīng)有了大幅的性能提高:

  • vLLM可以實(shí)現(xiàn)和HF Transformer相比14-24倍的性能提升。

  • MLC LLM 8月份實(shí)現(xiàn)了在Orange Pi 5 (Rockchip 3588S)上跑7B LLAMA 2,速度達(dá)到5 tokens/s.

  • llama.cpp可以在M2 Max MacBook Pro筆記本上跑13B模型,Apple GPU推理實(shí)現(xiàn)24 tokens每秒這樣完全可用的性能。

相信隨著大模型推理加速技術(shù)的不斷突破,云端推理價(jià)格的快速下降,以及中小模型的本地化推理的普及,都將會(huì)能很快實(shí)現(xiàn)了。

以個(gè)人計(jì)算機(jī)先驅(qū)Butler Lampson的一句話結(jié)束:

計(jì)算機(jī)科學(xué)中的所有問題都可以通過增加一個(gè)額外的中間層來解決。
All problems in computer science can be solved by another level of indirection.

大模型推理也是如此,又增加了一個(gè)大模型調(diào)度引擎層。

參考文獻(xiàn)

1.Orca: A Distributed Serving System for Transformer-Based Generative Models, Gyeong-In Yu, Joo Seong Jeong, Geon-Woo Kim, Soojeong Kim, Byung-Gon Chun, OSDI '22

2.vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention, Woosuk Kwon, Zhuohan Li, Siyuan Zhuang, Ying Sheng, Lianmin Zheng, Cody Yu, Joey Gonzalez, Hao Zhang, and Ion Stoica, SOSP '23

3.GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers, Elias Frantar, Saleh Ashkboos, Torsten Hoefler, Dan Alistarh, ICLR 2023

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
《線性代數(shù):應(yīng)用與模型》
推理性能超H100十倍!21歲華裔小哥哈佛輟學(xué)開發(fā)AI加速芯片「Sohu」,2人公司估值3400萬刀
騰訊披露最新大模型訓(xùn)練方法:效率提升至 2.6 倍、可節(jié)省 50% 算力成本
百度搜索萬億規(guī)模特征計(jì)算系統(tǒng)實(shí)踐
人工智能根本不需要教授和博士
學(xué)習(xí)人工智能需要哪些必備的數(shù)學(xué)基礎(chǔ)?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服