RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

高效大模型的推理綜述

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:深度學(xué)習(xí)自然語(yǔ)言處理 ? 2024-11-15 11:45 ? 次閱讀

大模型由于其在各種任務(wù)中的出色表現(xiàn)而引起了廣泛的關(guān)注。然而,大模型推理的大量計(jì)算和內(nèi)存需求對(duì)其在資源受限場(chǎng)景的部署提出了挑戰(zhàn)。業(yè)內(nèi)一直在努力開(kāi)發(fā)旨在提高大模型推理效率的技術(shù)。本文對(duì)現(xiàn)有的關(guān)于高效大模型推理的文獻(xiàn)進(jìn)行了全面的綜述總結(jié)。首先分析了大模型推理效率低下的主要原因,即大模型參數(shù)規(guī)模、注意力計(jì)算操的二次復(fù)雜度作和自回歸解碼方法。然后,引入了一個(gè)全面的分類(lèi)法,將現(xiàn)有優(yōu)化工作劃分為數(shù)據(jù)級(jí)別、模型級(jí)別和系統(tǒng)級(jí)別的優(yōu)化。此外,本文還對(duì)關(guān)鍵子領(lǐng)域的代表性方法進(jìn)行了對(duì)比實(shí)驗(yàn),以及分析并給出一定的見(jiàn)解。最后,對(duì)相關(guān)工作進(jìn)行總結(jié),并對(duì)未來(lái)的研究方向進(jìn)行了討論。

1 Introduction

近年來(lái),大模型受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注。

LLM領(lǐng)域經(jīng)歷了顯著的增長(zhǎng)和顯著的成就。許多開(kāi)源llm已經(jīng)出現(xiàn),包括gpt-系列(GPT-1, GPT-2和GPT-3), OPT, lama系列(LLaMA , LLaMA 2,BaiChuan 2 ,Vicuna, LongChat), BLOOM, FALCON, GLM和Mtaistral[12],他們用于學(xué)術(shù)研究和商業(yè)落地。大模型的成功源于其處理各種任務(wù)的強(qiáng)大能力,如神經(jīng)語(yǔ)言理解(NLU)、神經(jīng)語(yǔ)言生成(NLG)、推理和代碼生成[15],從而實(shí)現(xiàn)了ChatGPT、Copilot和Bing等有影響力的應(yīng)用程序。越來(lái)越多的人認(rèn)為[16]LMM士的崛起和取得的成就標(biāo)志著人類(lèi)向通用人工智能(AGI)邁進(jìn)了一大步。

2078bd2c-906f-11ef-a511-92fbcf53809c.png

圖1:大模型部署挑戰(zhàn)

然而,LLM的部署并不總是很順利。如圖1所示,在推理過(guò)程中,使用LLM通常需要更高的計(jì)算成本,內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存占用。(根本原因分析見(jiàn)Sec. 2.3)在資源受限的場(chǎng)景中,推理效率也會(huì)降低(如,延遲,吞吐量,功耗和存儲(chǔ))。這對(duì)LLM在終端以及云場(chǎng)景這兩方面的應(yīng)用帶來(lái)了挑戰(zhàn)。例如,巨大的存儲(chǔ)需求使得在個(gè)人筆記本電腦上部署70B參數(shù)量的模型來(lái)用于輔助開(kāi)發(fā)是不切實(shí)際的。此外,如果將LLM用于每一個(gè)搜索引擎請(qǐng)求,那么低吞吐量將帶來(lái)巨大的成本,從而導(dǎo)致搜索引擎利潤(rùn)的大幅減少。

幸運(yùn)的是,大量的技術(shù)已經(jīng)被提出來(lái),以實(shí)現(xiàn)LLM的有效推理。為了獲得對(duì)現(xiàn)有研究的全面了解,并激發(fā)進(jìn)一步的研究,文章對(duì)當(dāng)前現(xiàn)有的LLM高效推理工作采用了分級(jí)分類(lèi)和系統(tǒng)總結(jié)。具體來(lái)說(shuō),將現(xiàn)有工作劃分組織為數(shù)據(jù)級(jí)別、模型級(jí)別和系統(tǒng)級(jí)別的優(yōu)化。此外,文章對(duì)關(guān)鍵子領(lǐng)域內(nèi)的代表性方法進(jìn)行了實(shí)驗(yàn)分析,以鞏固知識(shí),提供實(shí)際性建議并為未來(lái)的研究努力提供指導(dǎo)。

2082cd6c-906f-11ef-a511-92fbcf53809c.png

表1:綜述對(duì)比

目前,綜述[17],[18],[19],[20],[21],[22]均涉及LLM領(lǐng)域。這些綜述主要集中在LLM效率的不同方面,但提供了進(jìn)一步改進(jìn)的機(jī)會(huì)。Zhu等[17],Park等[18]和Wang等。[19]將綜述的重心放在,模型壓縮技術(shù)上,是模型級(jí)別的優(yōu)化。Ding等[20]將數(shù)據(jù)和模型架構(gòu)作為研究重心。Miao等[21]從機(jī)器學(xué)習(xí)系統(tǒng)(MLSys)研究的角度研究LLM的有效推理。相比之下,本文提供了一個(gè)更全面的研究范圍,在三個(gè)層次上解決優(yōu)化:數(shù)據(jù)級(jí)別、模型級(jí)別和系統(tǒng)級(jí)別,同時(shí)也囊括了最近的研究工作。而Wan等[22]和Xu等[23]也對(duì)高效LLM研究進(jìn)行了全面綜述?;谠趲讉€(gè)關(guān)鍵的子領(lǐng)域如模型量化和模型server端中進(jìn)行的實(shí)驗(yàn)分析,本文通過(guò)整合對(duì)比實(shí)驗(yàn),提供實(shí)際的見(jiàn)解和建議。如表1所示,展示了各種綜述之間的比較。

本文行文結(jié)構(gòu)劃分如下:第二章介紹了LLMs的基本概念和知識(shí),并對(duì)LLMs推理過(guò)程中效率瓶頸進(jìn)行了詳細(xì)的分析。第三章展示了本文提出的分類(lèi)法。第四章到第六章從三個(gè)不同優(yōu)化級(jí)別分別對(duì)相關(guān)工作進(jìn)行展示討論。第七章針對(duì)幾個(gè)關(guān)鍵的應(yīng)用場(chǎng)景進(jìn)行更廣泛的討論。第八章總結(jié)本綜述的關(guān)鍵貢獻(xiàn)。

2 Preliminaries

2.1 transformer架構(gòu)的LLM

語(yǔ)言建模作為語(yǔ)言模型的基本功能,包括對(duì)單詞序列概率進(jìn)行建模并預(yù)測(cè)后續(xù)單詞的概率分布。近年來(lái)研究人員發(fā)現(xiàn)增加語(yǔ)言模型規(guī)模不僅提高了語(yǔ)言建模能力,除了傳統(tǒng)的NLP任務(wù)之外,還產(chǎn)生了處理更復(fù)雜任務(wù)的能力[24],這些規(guī)模更大的語(yǔ)言模型是被稱(chēng)為大模型(LLMs)。

主流大模型是基于Transformer架構(gòu)[25]設(shè)計(jì)的。典型的transformer架構(gòu)的模型由數(shù)個(gè)堆疊的transformer block組成。通常,一個(gè)transformer block由一個(gè)多頭自注意力(MHSA)模塊,一個(gè)前饋神經(jīng)網(wǎng)絡(luò)(FFN)和一個(gè)LayerNorm(LN)層組成。每個(gè)transformer block接收前一個(gè)transformer block的輸出特征,并將其作為輸入,并將特征串行送進(jìn)每個(gè)子模塊中,最后輸出。特別的是,在第一個(gè)transformer block前,需要用一個(gè)tokenizer將傳統(tǒng)的輸入語(yǔ)句轉(zhuǎn)化為token序列,并緊接著使用一個(gè)embedding層將token序列轉(zhuǎn)化為輸入特征。且一個(gè)額外的位置embedding被加入到輸入特征中,來(lái)對(duì)輸入token序列的token順序進(jìn)行編碼。

Transformer架構(gòu)的核心是自注意力機(jī)制,其在多頭自注意力(MHSA)模塊被使用。MHSA模塊對(duì)輸入進(jìn)行線(xiàn)性變換,得到了Q,K,V向量,如公式(1)所示:

其中為輸入特征,為第個(gè)注意力頭的變換矩陣。接著自注意力操作被應(yīng)用于每個(gè)()元組并得到第個(gè)注意力頭的特征,如公式(2)所示:

其中是query(key)的維度。自注意力計(jì)算包含矩陣乘法,其計(jì)算復(fù)雜度是輸入長(zhǎng)度的二次方。最后,MHSA模塊將所有注意力頭的特征進(jìn)行拼接,并對(duì)他們做映射矩陣變換,如公式(3)所示:

其中是映射矩陣。自注意力機(jī)制可以讓模型識(shí)別不同輸入部分的重要性,而不用去考慮距離,也已就此可以獲得輸入語(yǔ)句的長(zhǎng)距離依賴(lài)以及復(fù)雜的關(guān)系。

FFN作為transformer block的另一個(gè)重要模塊,被設(shè)置在多頭自注意力(MHSA)模塊之后,且包含兩個(gè)使用非線(xiàn)性激活函數(shù)的。其接收MHSA模塊的輸出特征如公式(4)所示,進(jìn)行計(jì)算:

其中,和為兩個(gè)線(xiàn)性層的權(quán)重矩陣,為激活函數(shù)。

2.2 大模型推理過(guò)程

最受歡迎的大模型,如,decoder-only架構(gòu)的大模型通常采用自回歸的方式生成輸出語(yǔ)句,自回歸的方式是逐token的進(jìn)行輸出。在每一次生成步中,大模型將過(guò)去的全部token序列作為輸入,包括輸入token以及剛剛生成的token,并生成下一個(gè)token。隨著序列長(zhǎng)度的增加,生過(guò)文本這一過(guò)程的時(shí)間成本也顯著藏家。為了解決這個(gè)問(wèn)題,一個(gè)關(guān)鍵技術(shù),key-value(KV)緩存被提出來(lái),用于加速文本生成。

KV緩存技術(shù),包括在多頭自注意(MHSA)塊內(nèi),存儲(chǔ)和復(fù)用前面的token對(duì)應(yīng)的key 向量(K)和value向量(V)。此項(xiàng)技術(shù)在大模型推理以中得到了廣泛的應(yīng)用,因?yàn)槠鋵?duì)文本生成延遲實(shí)現(xiàn)了巨大的優(yōu)化?;诖隧?xiàng)技術(shù),大模型的推理過(guò)程可以劃分為兩個(gè)階段:

①prefilling階段:大模型計(jì)算并存儲(chǔ)原始輸入token的KV緩存,并生成第一個(gè)輸出token,如圖2(a)所示

②decoding階段:大模型利用KV 緩存逐個(gè)輸出token,并用新生成的token的K,V(鍵-值)對(duì)進(jìn)行KV緩存更新。

208ec46e-906f-11ef-a511-92fbcf53809c.png

圖2:KV緩存技術(shù)在大模型推理中應(yīng)用原理示意圖

20a9d772-906f-11ef-a511-92fbcf53809c.png

如圖3所示,展示了提升推理效率的關(guān)鍵指標(biāo)。對(duì)于橫軸Latency(延遲,在預(yù)填充(prefilling)階段,將first token latency記作生成第一個(gè)token的時(shí)間;在decoding階段,將per-output token latency記作生成一個(gè)token的平均時(shí)間。此外,generation latency表示輸出整個(gè)token序列的時(shí)間。對(duì)于縱軸Memory(內(nèi)存),model size被用來(lái)表示存儲(chǔ)模型權(quán)重所需要的內(nèi)存大小以及KV cache size代表存儲(chǔ)存儲(chǔ)KV緩存的內(nèi)存大小。此外,peak memory代表在生成工程中需要占用的最大內(nèi)存。其大約為model size與KV cache size之和。對(duì)模型權(quán)重和KV緩存的內(nèi)存和。除去延遲和內(nèi)存中,吞吐量(throughput)也是大模型推理服務(wù)系統(tǒng)中的一個(gè)廣泛使用的指標(biāo)。token throughput表示每秒生成的token數(shù)量,request throughput表示每秒完成的請(qǐng)求數(shù)。

2.3 推理效率分析

在資源受限的場(chǎng)景中,部署大模型并保持其推理效率以及性能對(duì)于工業(yè)界和科研及都是巨大的挑戰(zhàn)。例如,對(duì)有700億參數(shù)量的LLaMA-2-70B進(jìn)行部署,以FP16數(shù)據(jù)格式對(duì)其權(quán)重進(jìn)行加載需要140GB顯存(VRAM),進(jìn)行推理需要至少6張 RTX 3090Ti GPU(單卡顯存24GB)或者2張NVIDIA的A100 GPU(單卡顯存80GB)。在推理延遲方面,2張NVIDIA的A100 GPU上生成一個(gè)token需要100毫秒。因此,生成一個(gè)具有數(shù)百個(gè)token的序列需要超過(guò)10秒。除去內(nèi)存占用和推理延遲,吞吐量以及能源電量的消耗都需要被考慮。大模型推理過(guò)程中,三個(gè)重要因素將很大程度上影響上述指標(biāo)。計(jì)算成本(computational cost),內(nèi)存訪(fǎng)問(wèn)成本(memory access cost)和內(nèi)存使用(memory usage)。大模型推理低效率的根本原因需要關(guān)注三個(gè)關(guān)鍵因素:

①M(fèi)odel Size:主流大模型通常包含數(shù)十億甚至萬(wàn)億的參數(shù)。例如,LLaMA-70B模型包括700億參數(shù),而GPT-3為1750億參數(shù)。在推理過(guò)程中,模型大小對(duì)計(jì)算成本、內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用產(chǎn)生了顯著影響。

②Attention Operation:如2.1和2.2中所述,prefilling階段中,自注意操作的計(jì)算復(fù)雜度為輸入長(zhǎng)度的2次方,因此輸入長(zhǎng)度的增加,計(jì)算成本、內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用都會(huì)顯著增加。

③Decoding Approach:自回歸解碼是逐token的進(jìn)行生成。在每個(gè)decoding step,所有模型權(quán)重都來(lái)自于GPU芯片的片下HBM,導(dǎo)致內(nèi)存訪(fǎng)問(wèn)成本巨大。此外,KV緩存隨著輸入長(zhǎng)度的增長(zhǎng)而增長(zhǎng),可能導(dǎo)致內(nèi)存分散和不規(guī)則內(nèi)存訪(fǎng)問(wèn)。

3 TAXONOMY

上述部分講述了影響大模型推理性能的關(guān)鍵因素,如計(jì)算成本、內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用,并進(jìn)一步分析了根本原因:Model Size、Attention Operation和Decoding Approach。許多研究從不同的角度對(duì)優(yōu)化推理效率進(jìn)行了努力。通過(guò)回顧和總結(jié)這些研究,文章將它們分為三個(gè)級(jí)別的優(yōu)化,即:數(shù)據(jù)級(jí)別優(yōu)化、模型級(jí)別優(yōu)化和系統(tǒng)級(jí)別優(yōu)化(如圖4所示):

20b8c99e-906f-11ef-a511-92fbcf53809c.png

圖4:大模型推理性能優(yōu)化分類(lèi)

數(shù)據(jù)級(jí)別優(yōu)化:即通過(guò)優(yōu)化輸入prompt(例如,輸入壓縮)或者更好的組織輸出內(nèi)容(例如,輸出組織)。這類(lèi)優(yōu)化通常不會(huì)改變?cè)瓉?lái)的模型,因此沒(méi)有高昂的模型訓(xùn)練成本(其中,可能需要對(duì)少量的輔助模型進(jìn)行訓(xùn)練,但與訓(xùn)練大模型的成本相比,這個(gè)成本可以被忽略)。

模型級(jí)別優(yōu)化:即在模型推理時(shí),通過(guò)設(shè)計(jì)一個(gè)有效的模型結(jié)構(gòu)(如有效的結(jié)構(gòu)設(shè)計(jì))或者壓縮預(yù)訓(xùn)練模型(如模型壓縮)來(lái)優(yōu)化推理效率。優(yōu)化第一種優(yōu)化通常需要昂貴的預(yù)訓(xùn)練或少量的微調(diào)來(lái)保留或者恢復(fù)模型能力的成本,而第二種典型的會(huì)給模型性能帶來(lái)?yè)p失。

系統(tǒng)級(jí)別優(yōu)化:即優(yōu)化推理引擎或者服務(wù)系統(tǒng)。推理引擎的優(yōu)化不需要進(jìn)行模型訓(xùn)練,服務(wù)系統(tǒng)的優(yōu)化對(duì)于模型性能而言更是無(wú)損的。此外,文章還在章節(jié)6.3中隊(duì)硬件加速設(shè)計(jì)進(jìn)行了簡(jiǎn)單的介紹。

4.數(shù)據(jù)級(jí)別優(yōu)化

數(shù)據(jù)級(jí)別的優(yōu)化今年來(lái)的工作可以劃分為兩類(lèi),如優(yōu)輸入壓縮或者輸出組織。輸入壓縮技術(shù)直接縮短了模型的輸入長(zhǎng)度來(lái)減少推理?yè)p失。同時(shí)輸出組織技術(shù)通過(guò)組織輸出內(nèi)容的結(jié)構(gòu)來(lái)實(shí)現(xiàn)批量(并行)推理,此方法可以提升硬件利用率和降低模型的生成延遲。

4.1輸入壓縮

在大模型的實(shí)際應(yīng)用中,提示詞prompt至關(guān)重要,許多工作都提出了設(shè)計(jì)提示詞的新方法,它們?cè)趯?shí)踐中均展示出精心設(shè)計(jì)的提示可以釋放大模型的性能。例如,上下文學(xué)習(xí)(In-Context Learning)建議在prompt中包含多個(gè)相關(guān)示例,這種方法能夠鼓勵(lì)大模型去進(jìn)行類(lèi)比學(xué)習(xí)。思維鏈(Chain-of-Thought, COT)技術(shù)則是在上下文的示例中加入一系列中間的推理步驟,用于幫助大模型進(jìn)行復(fù)雜的推理。然而,這些提示詞上的相關(guān)技巧不可避免地會(huì)導(dǎo)致提示詞更長(zhǎng),這是一個(gè)挑戰(zhàn),因?yàn)橛?jì)算成本和內(nèi)存使用在prefilling期間會(huì)二次增長(zhǎng)(如2.3節(jié)所示)。

為了解決這個(gè)問(wèn)腿輸入prompt壓縮技術(shù)被提出來(lái)用于縮短提示詞長(zhǎng)度且不對(duì)大模型的回答質(zhì)量構(gòu)成顯著性影響。在這一技術(shù)方面,相關(guān)研究可分為四個(gè)方面,如圖5所示:提示詞裁剪(prompt pruning),提示詞總結(jié)(prompt summary),基于提示詞的軟壓縮(soft prompt-based compression)和檢索增強(qiáng)生成(retrieval augmented generation, RAG)。

20d68b96-906f-11ef-a511-92fbcf53809c.png

圖5:大模型輸入壓縮方法分類(lèi)

4.1.1 提示詞裁剪(prompt pruning)

提示詞裁剪的核心思想是從輸入prompt中基于預(yù)定義或者學(xué)習(xí)到的關(guān)鍵性指標(biāo)中去在線(xiàn)去除不重要的token,語(yǔ)句或者文檔。DYNAICL提出對(duì)給定輸入,動(dòng)態(tài)地確定上下文示例的最優(yōu)數(shù)量,通過(guò)一個(gè)訓(xùn)練好的基于大模型的controller。Selective Context這篇論文提出將token合并為數(shù)個(gè)單元,接著使用一個(gè)基于self-information指標(biāo)(如,negative log likelihood)的單元級(jí)別地prompt裁剪。STDC論文基于解析樹(shù)進(jìn)行提示詞裁剪,其迭代地刪除在裁剪后導(dǎo)致最小性能下降的短語(yǔ)node。PCRL論文引入了一種基于強(qiáng)化學(xué)習(xí)的token級(jí)別的裁剪方案。PCRL背后的核心思想是通過(guò)將忠實(shí)度和壓縮比組合到獎(jiǎng)勵(lì)函數(shù)中來(lái)訓(xùn)練一個(gè)策略大模型。忠實(shí)度是通過(guò)計(jì)算經(jīng)過(guò)裁剪后的輸出提示符和原始提示詞之間的相似度來(lái)衡量的。RECOMP方法實(shí)現(xiàn)了一種句子級(jí)別裁剪策略來(lái)壓縮用于檢索增強(qiáng)語(yǔ)言模型(Retrieval-Augmented Language Models, RALMs)的提示。該方法包括使用預(yù)訓(xùn)練的encoder將輸入問(wèn)題和文檔編碼為latent embedding。然后,它根據(jù)文檔embedding與問(wèn)題embedding的相似度決定要去除哪些文檔。LLMLingua引入了一種粗到細(xì)的剪枝方案,用于prompt壓縮。最初,它執(zhí)行示范級(jí)別的裁剪,然后根據(jù)困惑度執(zhí)行token級(jí)別的裁剪。為了提高性能,LLMLingua提出了一個(gè)預(yù)算控制器,在提示詞的不同部分之間動(dòng)態(tài)分配裁剪預(yù)算。此外,它利用迭代式的token級(jí)的壓縮算法來(lái)解決由條件獨(dú)立性假設(shè)引入的不準(zhǔn)確性。LLMLingua還采用了一種分布對(duì)齊策略,將目標(biāo)大模型的輸出分布與用于困惑度計(jì)算的較小大模型進(jìn)行對(duì)齊。LongLLMLingua[41]在LLMLingua的基礎(chǔ)上進(jìn)行了一些加強(qiáng):(1)它利用以輸入問(wèn)題為條件的困惑度作為提示詞裁剪的指標(biāo)。(2)它為不同的演示分配不同的修剪比例,并根據(jù)其指標(biāo)值在最終提示詞內(nèi)重新排序。(3)基于響應(yīng)恢復(fù)原始內(nèi)容。CoT-Influx引入了一種使用強(qiáng)化學(xué)習(xí)對(duì)思維鏈(CoT)提示詞進(jìn)行粗到細(xì)粒度裁剪的方法。具體來(lái)說(shuō),它會(huì)先裁剪去除不重要的示例,然后在剩下的示例中繼續(xù)刪除不重要的token。

4.1.2 提示詞總結(jié)(prompt summary)

提示詞總結(jié)的核心思想是在保持相似的語(yǔ)義信息的前提下,將原有提示詞濃縮為更短的總結(jié)。這些技術(shù)還可以作為提示詞的在線(xiàn)壓縮方法。與前面提到的保留未裁剪標(biāo)記的提示詞裁剪技術(shù)不同,這一行方法將整個(gè)提示符轉(zhuǎn)換為總結(jié)。RECOMP[34]引入了一個(gè)抽象壓縮器(Abstractive Compressor),其將輸入問(wèn)題和檢索到的文檔作為輸入,生成一個(gè)簡(jiǎn)潔的摘要。具體來(lái)說(shuō),它從大規(guī)模的大模型中提取輕量級(jí)壓縮器來(lái)進(jìn)行總結(jié)工作。SemanticCompression提出了一種語(yǔ)義壓縮方法。它首先將文本分解成句子。然后,它根據(jù)主題將句子分組,然后總結(jié)每組中的句子。

4.1.3 基于提示詞的軟壓縮(Soft Prompt-based Compression)

這種壓縮技術(shù)的核心思想是設(shè)計(jì)一個(gè)比原始提示詞短得多的軟提示詞,作為大模型的輸入。軟提示詞被定義為一系列可學(xué)習(xí)的連續(xù)token。有些技術(shù)對(duì)固定前綴的提示詞(如系統(tǒng)提示詞、特定任務(wù)提示詞)采用脫機(jī)壓縮。例如,PromptCompression訓(xùn)練軟提示來(lái)模擬預(yù)定的系統(tǒng)提示詞。該方法包括在輸入token之前添加幾個(gè)軟token,并允許在反向傳播期間對(duì)這些軟token進(jìn)行調(diào)整。在對(duì)提示數(shù)據(jù)集進(jìn)行微調(diào)之后,軟token序列充當(dāng)軟提示詞。Gisting引入了一種方法,使用前綴詞調(diào)優(yōu)將特定任務(wù)的提示詞壓縮為一組簡(jiǎn)潔的gist token。鑒于特定任務(wù)的提示會(huì)因任務(wù)而異,前綴詞調(diào)優(yōu)將針對(duì)每個(gè)任務(wù)單獨(dú)使用。為了提高效率,Gisting進(jìn)一步引入了一種元學(xué)習(xí)方法,用于預(yù)測(cè)新的未見(jiàn)過(guò)的gist token基于先前任務(wù)中的的gist token。

其他技術(shù)對(duì)每個(gè)新的輸入提示詞進(jìn)行在線(xiàn)壓縮。例如,AutoCompressors訓(xùn)練一個(gè)預(yù)訓(xùn)練的語(yǔ)言模型,通過(guò)無(wú)監(jiān)督學(xué)習(xí)將提示詞壓縮成總結(jié)向量。ICAE訓(xùn)練了一個(gè)自動(dòng)編碼器將原始上下文壓縮到短記憶槽中。具體來(lái)說(shuō),ICAE采用適應(yīng)LoRA的大模型作為編碼器,并使用目標(biāo)大模型作為解碼器。在輸入token之前添加一組記憶token并將其編碼到記憶槽中。

4.1.4 檢索增強(qiáng)生成(retrieval augmented generation, RAG)

檢索增強(qiáng)生成(Retrieval-Augmented Generation, RAG)旨在通過(guò)整合外部知識(shí)來(lái)源來(lái)提高大模型回答的質(zhì)量。RAG也可以看作是在處理大量數(shù)據(jù)時(shí)提高推理效率的一種技術(shù)。RAG沒(méi)有將所有信息合并到一個(gè)過(guò)長(zhǎng)的prompt中,而是將檢索到的相關(guān)信息添加到原始提示符中,從而確保模型在顯著減少提示詞長(zhǎng)度的同時(shí)接收到必要的信息。FLARE使用對(duì)即將到來(lái)的句子的預(yù)測(cè)來(lái)主動(dòng)決定何時(shí)以及檢索什么信息。REPLUG將大模型視為一個(gè)黑盒,并使用可調(diào)檢索模型對(duì)其進(jìn)行擴(kuò)充。它將檢索到的文檔添加到凍結(jié)的黑盒大模型的輸入中,并進(jìn)一步利用大模型來(lái)監(jiān)督檢索模型。Self-RAG通過(guò)檢索和自我反思來(lái)提高大模型的質(zhì)量和真實(shí)性。它引入了反饋token,使大模型在推理階段可控。

4.2 輸出組織(Output Organization)

傳統(tǒng)的大模型的推理過(guò)程是完全順序生成的,這會(huì)導(dǎo)致大量的時(shí)間消耗。輸出組織技術(shù)旨在通過(guò)組織輸出內(nèi)容的結(jié)構(gòu)來(lái)(部分地)實(shí)現(xiàn)并行化生成。

思維骨架(Skeleton-of-Thought, SoT)是這個(gè)方向的先驅(qū)。SoT背后的核心思想是利用大模型的新興能力來(lái)對(duì)輸出內(nèi)容的結(jié)構(gòu)進(jìn)行規(guī)劃。具體來(lái)說(shuō),SoT包括兩個(gè)主要階段。在第一階段(即框架階段),SoT指導(dǎo)大模型使用預(yù)定義的“框架提示詞”生成答案的簡(jiǎn)明框架。例如,給定一個(gè)問(wèn)題,如“中國(guó)菜的典型類(lèi)型是什么?”,這個(gè)階段的輸出將是一個(gè)菜的列表(例如,面條,火鍋,米飯),沒(méi)有詳細(xì)的描述。然后,在第二階段(即點(diǎn)擴(kuò)展階段),SoT指導(dǎo)大模型使用“點(diǎn)擴(kuò)展提示符”來(lái)同時(shí)擴(kuò)展骨架中的每個(gè)點(diǎn),然后將這些拓展連接起來(lái)最終形成最后答案。當(dāng)應(yīng)用于開(kāi)源模型時(shí),可以通過(guò)批推理執(zhí)行點(diǎn)擴(kuò)展,這可以提升硬件利用率,并在使用相同的計(jì)算資源的前提下減少總體生成延遲,以減少額外的計(jì)算。SoT的推理流程展示如圖6所示:

20f290fc-906f-11ef-a511-92fbcf53809c.png

由于額外的提示詞(如骨架提示詞和點(diǎn)擴(kuò)展提示詞)帶來(lái)的開(kāi)銷(xiāo),SoT討論了在點(diǎn)擴(kuò)展階段跨多個(gè)點(diǎn)來(lái)共享公共提示詞前綴的KV緩存的可能性。此外,SoT使用路由模型來(lái)決定SoT是否適合應(yīng)用于特定的問(wèn)題,目的是將其限制在合適的情況下使用。結(jié)果,SoT在最近發(fā)布的12個(gè)大模型上 實(shí)現(xiàn)了高達(dá)2.39倍的推理加速,并通過(guò)提高答案的多樣性和相關(guān)性來(lái)提高答案質(zhì)量。

SGD進(jìn)一步擴(kuò)展了SoT的思想,其將子問(wèn)題點(diǎn)組織成一個(gè)有向無(wú)環(huán)圖(DAG),并在一個(gè)回合內(nèi)并行地回答邏輯獨(dú)立的子問(wèn)題。與SoT類(lèi)似,SGD還利用大模型的新興能力,通過(guò)提供自己制作的提示詞和幾個(gè)示例來(lái)生成輸出結(jié)構(gòu)。SGD放寬了不同點(diǎn)之間嚴(yán)格的獨(dú)立性假設(shè),以提高答案的質(zhì)量,特別是對(duì)于數(shù)學(xué)和編碼問(wèn)題。與SoT相比,SGD優(yōu)先考慮答案質(zhì)量而不是速度。此外,SGD引入了一個(gè)自適應(yīng)的模型選擇方法,來(lái)根據(jù)其估計(jì)的復(fù)雜性為每個(gè)子問(wèn)題分配最優(yōu)模型大小,從而進(jìn)一步提高效率。

APAR采用了與SoT類(lèi)似的思想,利用大模型輸出特殊的控制token(如 ,[fork])來(lái)自動(dòng)動(dòng)態(tài)的觸發(fā)并行解碼。為了有效地利用輸出內(nèi)容中固有的可并行化結(jié)構(gòu)并準(zhǔn)確地生成控制token,APAR對(duì)大模型進(jìn)行了微調(diào),這些大模型是精心設(shè)計(jì)的數(shù)據(jù)上進(jìn)行的,這些數(shù)據(jù)是在特定樹(shù)結(jié)構(gòu)中形成的。因此,APAR在基準(zhǔn)測(cè)試中實(shí)現(xiàn)1.4到2.0倍的平均加速,且對(duì)答案質(zhì)量的影響可以忽略不計(jì)。此外,APAR將他們的解碼方法與推測(cè)解碼技術(shù)(如Medusa)和推理框架(如vLLM)結(jié)合,來(lái)進(jìn)一步改進(jìn)推理延遲和系統(tǒng)吞吐量。

SGLang在Python 特征原語(yǔ)中引入了一種領(lǐng)域特定語(yǔ)言(DSL),其能夠靈活地促進(jìn)大模型編程。SGLang的核心思想是自動(dòng)分析各種生成調(diào)用之間的依賴(lài)關(guān)系,并在此基礎(chǔ)上進(jìn)行批量推理和KV緩存共享。使用該語(yǔ)言,用戶(hù)可以輕松實(shí)現(xiàn)各種提示詞策略,并從SGLang的自動(dòng)效率優(yōu)化(如SoT,ToT)中收益。此外,SGLang 還介紹并結(jié)合了幾種系統(tǒng)級(jí)別的編譯技術(shù),如代碼移動(dòng)和預(yù)取注釋。

4.3 認(rèn)識(shí),建議和未來(lái)方向

大模型處理更長(zhǎng)的輸入、生成更長(zhǎng)的輸出的需求日益增長(zhǎng),這凸顯了數(shù)據(jù)級(jí)別的優(yōu)化技術(shù)的重要性。在這些技術(shù)中,輸入壓縮方法的主要目標(biāo)是通過(guò)減少由attention操作引起的計(jì)算和內(nèi)存成本來(lái)提升prefilling階段的效率。此外,對(duì)于基于API的大模型,這些方法可以減少與輸入token相關(guān)的API成本。相比之下,輸出組織方法側(cè)重于通過(guò)降低與自回歸解碼方法相關(guān)的大量?jī)?nèi)存訪(fǎng)問(wèn)成本來(lái)優(yōu)化解碼階段。

隨著大模型的功能越來(lái)越強(qiáng)大,是有可能能利用它們來(lái)壓縮輸入提示詞或構(gòu)建輸出內(nèi)容的。輸出組織方法的最新進(jìn)展也證明了利用大模型將輸出內(nèi)容組織成獨(dú)立點(diǎn)或依賴(lài)圖的有效性,從而便于批量推理以改善生成延遲。這些方法利用了輸出內(nèi)容中固有的可并行結(jié)構(gòu),使大模型能夠執(zhí)行并行解碼,從而提高硬件利用率,從而減少端到端的生成延遲。

最近,各種提示詞pipeline(如,ToT ,GoT)和Agent框架正在出現(xiàn)。雖然這些創(chuàng)新提高了大模型的能力,但它們也增加了輸入prompt的長(zhǎng)度,導(dǎo)致計(jì)算成本增加。為了解決這個(gè)問(wèn)題,采用輸入壓縮技術(shù)來(lái)減少輸入長(zhǎng)度是一種很有希望的解決方案。同時(shí),這些pipeline和框架自然地為輸出結(jié)構(gòu)引入了更多的并行性,增加了并行解碼和跨不同解碼線(xiàn)程來(lái)共享KV cache的可能性。SGLang支持靈活的大模型編程,并為前端和后端協(xié)同優(yōu)化提供了機(jī)會(huì),為該領(lǐng)域的進(jìn)一步擴(kuò)展和改進(jìn)奠定了基礎(chǔ)??傊瑪?shù)據(jù)級(jí)別優(yōu)化,包括輸入壓縮和輸出組織技術(shù),在可預(yù)見(jiàn)的將來(lái),為了提高大模型推理效率,將變得越來(lái)越必要。

除了優(yōu)化現(xiàn)有框架的推理效率外,一些研究還側(cè)重于直接設(shè)計(jì)更高效的智能體框架。例如,F(xiàn)rugalGPT提出了一個(gè)由不同大小的大模型組成的模型級(jí)聯(lián),如果模型對(duì)答案達(dá)到足夠的確定性水平,那么推理過(guò)程就會(huì)提前停止。該方法通過(guò)利用分層的模型體系結(jié)構(gòu)和基于模型置信度估計(jì)的智能推理終止來(lái)提高效率。與模型級(jí)別的動(dòng)態(tài)推理技術(shù)(第5.2.5節(jié))相比,F(xiàn)rugalGPT在pipeline級(jí)別執(zhí)行動(dòng)態(tài)推理。

5 模型級(jí)別優(yōu)化

大模型高效推理的模型級(jí)別優(yōu)化主要集中在模型結(jié)構(gòu)或數(shù)據(jù)表示的優(yōu)化上。模型結(jié)構(gòu)優(yōu)化包括直接設(shè)計(jì)有效的模型結(jié)構(gòu)、修改原模型和調(diào)整推理時(shí)間結(jié)構(gòu)。在數(shù)據(jù)表示優(yōu)化方面,通常采用模型量化技術(shù)。

在本節(jié)中,文章將根據(jù)所需的額外訓(xùn)練開(kāi)銷(xiāo)對(duì)模型級(jí)別的優(yōu)化技術(shù)進(jìn)行分類(lèi)。第一類(lèi)包含設(shè)計(jì)更有效的模型結(jié)構(gòu)(又叫有效結(jié)構(gòu)設(shè)計(jì))。使用這種方法開(kāi)發(fā)的模型通常需要從頭開(kāi)始訓(xùn)練。第二類(lèi)側(cè)重于壓縮預(yù)訓(xùn)練模型(稱(chēng)為模型壓縮)。此類(lèi)別中的壓縮模型通常只需要最小的微調(diào)即可恢復(fù)其性能。

5.1 有效結(jié)構(gòu)設(shè)計(jì)

目前,SOTA大模型通常使用Transformer架構(gòu),如2.1節(jié)所述。然而,基于transformer的大模型的關(guān)鍵組件,包括前饋網(wǎng)絡(luò)(FFN)和attention操作,在推理過(guò)程中存在效率問(wèn)題。文章認(rèn)為原因如下:

FFN在基于transformer的大模型中貢獻(xiàn)了很大一部分模型參數(shù),這導(dǎo)致顯著的內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用,特別是在解碼階段。例如,F(xiàn)FN模塊在LLaMA-7B模型中占63.01%,在LLaMA-70B模型中占71.69%。

attention操作在的復(fù)雜度是輸入長(zhǎng)度的二次方,這導(dǎo)致大量的計(jì)算成本和內(nèi)存使用,特別是在處理較長(zhǎng)的輸入上下文時(shí)。

為了解決這些計(jì)算效率問(wèn)題,一些研究集中在開(kāi)發(fā)更有效的模型結(jié)構(gòu)上。文章將相關(guān)研究分為三組(如圖7所示):高效FFN設(shè)計(jì)、高效注意力設(shè)計(jì)和Transformer替代。

2101c5a4-906f-11ef-a511-92fbcf53809c.png

圖7:大模型有效結(jié)構(gòu)設(shè)計(jì)分類(lèi)

5.1.1 高效FFN設(shè)計(jì)

在這一方面,許多研究都集中在將混合專(zhuān)家(mixture-of-experts, MoE)技術(shù)集成到大模型中,以提高大模型的性能,同時(shí)保持計(jì)算成本。MoE的核心思想是動(dòng)態(tài)地分配各種預(yù)算,在面對(duì)不同的輸入token時(shí)。在基于MoE的Transformers中,多個(gè)并行的前饋審計(jì)網(wǎng)絡(luò)(FFN),即專(zhuān)家,與可訓(xùn)練的路由模塊一起使用。在推理過(guò)程中,模型選擇性地為路由模塊控制的每個(gè)token激活特定的專(zhuān)家。

一些研究集中研究FFN專(zhuān)家的工作,主要是在優(yōu)化專(zhuān)家權(quán)值的獲取過(guò)程或使專(zhuān)家更輕量化以提高效率。例如,MoEfication設(shè)計(jì)了一種方法,使用預(yù)訓(xùn)練的權(quán)重將非MoE大模型轉(zhuǎn)換為MoE版本。這種方法免去了對(duì)MoE模型進(jìn)行昂貴的預(yù)訓(xùn)練的需要。為了實(shí)現(xiàn)這個(gè)技術(shù),MoEfication首先將預(yù)訓(xùn)練大模型的FFN神經(jīng)元分成多組。在每一組中,神經(jīng)元通常同時(shí)被激活函數(shù)激活。然后,它以專(zhuān)家的身份重組每組神經(jīng)元。Sparse Upcycling引入了一種方法,直接從密集模型的checkpoint中初始化基于MoE的LLM的權(quán)重。在這種方法中,基于MoE的LLM中的專(zhuān)家是密集模型中FFN的精確復(fù)制品。通過(guò)使用這種簡(jiǎn)單的初始化,Sparse Upcycling可以有效地訓(xùn)練MoE模型以達(dá)到高性能。MPOE提出通過(guò)矩陣乘積算子(Matrix Product Operators, MPO)分解來(lái)減少基于MoE的大模型的參數(shù)。該方法將FFN的每個(gè)權(quán)重矩陣分解為一個(gè)包含公共信息的全局共享張量和一組捕獲特定特征的局部輔助張量。

另一項(xiàng)研究側(cè)重于改進(jìn)MoE模型中路由模塊(或策略)的設(shè)計(jì)。在以前的MoE模型中,路由模塊容易導(dǎo)致負(fù)載不平衡問(wèn)題,這意味著一些專(zhuān)家被分配了大量token,而另一些專(zhuān)家只處理少量token。這種不平衡不僅浪費(fèi)了未充分利用的專(zhuān)家的能力,降低了模型的性能,還降低了推斷推理質(zhì)量。當(dāng)前的MoE實(shí)現(xiàn)經(jīng)常使用批矩陣乘法來(lái)同時(shí)計(jì)算所有FFN專(zhuān)家。這就要求每個(gè)專(zhuān)家的輸入矩陣必須具有相同的形狀。然而,由于存在負(fù)載不平衡問(wèn)題,需要向那些未充分利用的專(zhuān)家中填充輸入token集以滿(mǎn)足形狀約束,這會(huì)造成計(jì)算浪費(fèi)。因此,路由模塊設(shè)計(jì)的主要目標(biāo)是在MoE專(zhuān)家的token分配中實(shí)現(xiàn)更好的平衡。Switch Transformers在最終loss函數(shù)中引入了一個(gè)額外的loss,即負(fù)載平衡loss,以懲罰路由模塊的不平衡分配。這種loss被表述為token分配分?jǐn)?shù)向量和均勻分布向量之間的縮放點(diǎn)積。因此,只有在所有專(zhuān)家之間平衡token分配時(shí),損失才會(huì)最小化。這種方法鼓勵(lì)路由模塊在專(zhuān)家之間均勻地分發(fā)token,促進(jìn)負(fù)載平衡并最終提高模型性能和效率。BASE用端到端的方式學(xué)習(xí)了每個(gè)專(zhuān)家的embedding,然后根據(jù)embedding的相似性將專(zhuān)家分配給令token。為了保證負(fù)載均衡,BASE制定了一個(gè)線(xiàn)性分配問(wèn)題,并利用拍賣(mài)算法有效地解決了這個(gè)問(wèn)題。Expert Choice引入了一種簡(jiǎn)單而有效的策略來(lái)確?;贛oE的模型的完美負(fù)載平衡。與以前將專(zhuān)家分配給token的方法不同,Expert Choice允許每個(gè)專(zhuān)家根據(jù)embedding的相似度獨(dú)立選擇top-k個(gè)token。這種方法確保每個(gè)專(zhuān)家處理固定數(shù)量的token,即使每個(gè)token可能分配給不同數(shù)量的專(zhuān)家。

除了上述關(guān)注模型架構(gòu)本身的研究外,也有對(duì)基于MoE的模型的訓(xùn)練方法改進(jìn)的相關(guān)工作。SE-MoE引入了一種新的輔助loss,稱(chēng)為router z-loss,其目的是在不影響性能的情況下提高模型訓(xùn)練的穩(wěn)定性。SE-MoE發(fā)現(xiàn)在路由模塊中,softmax操作所引入的指數(shù)函數(shù)會(huì)加劇舍入誤差,導(dǎo)致訓(xùn)練不穩(wěn)定。為了解決這個(gè)問(wèn)題,router z-loss會(huì)懲罰輸入到指數(shù)函數(shù)中的大概率,從而最小化訓(xùn)練期間的舍入誤差。StableMoE指出基于MoE的大模型存在路由波動(dòng)問(wèn)題,即在訓(xùn)練和推理階段專(zhuān)家分配不一致。對(duì)于相同的輸入token,在訓(xùn)練時(shí)其被分配給了不同的專(zhuān)家,但在推理時(shí)卻只激活一個(gè)專(zhuān)家。為了解決這個(gè)問(wèn)題,StableMoE建議采用更一致的訓(xùn)練方法。它首先學(xué)習(xí)路由策略,然后在模型主干訓(xùn)練和推理階段保持固定的路由策略。SMoE-Dropout為基于MoE的大模型設(shè)計(jì)了一種訓(xùn)練方法,其提出在訓(xùn)練過(guò)程中逐步增加激活專(zhuān)家的數(shù)量。這種方法提升了基于MoE的模型的推理和下游微調(diào)的可擴(kuò)展性。GLaM預(yù)訓(xùn)練并發(fā)布了一系列具有不同參數(shù)大小的模型,這證明了它們?cè)趂ew-shot任務(wù)上與密集大模型的性能相當(dāng)。這個(gè)系列模型中,最大的模型的參數(shù)高達(dá)1.2萬(wàn)億。Mixtral 8x7B是最近發(fā)布的一個(gè)引人注目的開(kāi)源模型。在推理過(guò)程中,它只利用了130億個(gè)活動(dòng)參數(shù),在不同的基準(zhǔn)測(cè)試中取得了比LLaMA-2-70B模型更好的性能。Mixtral 8x7B每層由8個(gè)前饋網(wǎng)絡(luò)(FFN)專(zhuān)家組成,每個(gè)token在推理過(guò)程中分配給兩個(gè)專(zhuān)家。

5.1.2 高效attention設(shè)計(jì)

attention操作是Transformer體系結(jié)構(gòu)中的一個(gè)關(guān)鍵部分。然而,它的計(jì)算復(fù)雜度是與輸入長(zhǎng)度相關(guān)的二次方,這導(dǎo)致了大量的計(jì)算成本、內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用,特別是在處理長(zhǎng)上下文時(shí)。為了解決這個(gè)問(wèn)題,研究人員正在探索更有效的方法來(lái)近似原始attention操作的功能。這些研究大致可以分為兩個(gè)主要分支:multi-query attention和low complexity attention。

①M(fèi)ulti-Query Attention。Multi-Query Attention(MQA)通過(guò)共享橫跨不同注意力頭的KV緩存來(lái)優(yōu)化attention 操作。這項(xiàng)策略有效的減少了推理時(shí)的內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用,對(duì)改善Transformer模型的性能帶來(lái)了幫助。如第2.2節(jié)所述,transformer類(lèi)型的大模型通常采用多頭注意力(MHA)操作。該操作需要在解碼階段為每個(gè)注意力頭存儲(chǔ)和檢索KV對(duì),導(dǎo)致內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用大幅增加。而MQA通過(guò)在不同的頭上使用相同的KV對(duì),同時(shí)保持不同的Q值來(lái)解決這一問(wèn)題。通過(guò)廣泛的測(cè)試,MQA已經(jīng)被證明可以顯著降低內(nèi)存需求,且對(duì)模型性能的影響很小,這使它成為一個(gè)提高推理效率的關(guān)鍵技術(shù)。Grouped-query attention(GQA)進(jìn)一步擴(kuò)展了MQA的概念,它可以看作是MHA和MQA的混合。具體來(lái)說(shuō),GQA將注意力頭分成不同的組,然后為每個(gè)組存儲(chǔ)一組KV值。這種方法不僅保持了MQA在減少內(nèi)存開(kāi)銷(xiāo)方面的優(yōu)勢(shì),還強(qiáng)化了推理速度和輸出質(zhì)量之間的平衡。

②Low-Complexity Attention。Low-Complexity Attention方法旨在設(shè)計(jì)新的機(jī)制來(lái)降低每個(gè)注意力頭的計(jì)算復(fù)雜度。為了簡(jiǎn)化討論,這里假設(shè)Q(查詢(xún))、K(鍵)和V(值)矩陣的維度是相同的,即。由于下面的工作不涉及像MQA那樣改變注意頭的數(shù)量,此處的討論集中在每個(gè)頭內(nèi)的注意力機(jī)制。如2.2節(jié)所述,傳統(tǒng)注意力機(jī)制的計(jì)算復(fù)雜度為,相當(dāng)于隨著輸入長(zhǎng)度增長(zhǎng),呈二次增長(zhǎng)。為了解決低效率問(wèn)題,Kernel-based Attention和Low-Rank Attention方法被提出,此方法將復(fù)雜度降低到。

Kernel-based Attention。基于核的注意力設(shè)計(jì)了一個(gè)核,通過(guò)變換特征映射之間的線(xiàn)性點(diǎn)積如,,來(lái)近似的非線(xiàn)性softmax操作。它通過(guò)優(yōu)先計(jì)算,然后將其與相乘,從而避免了與相關(guān)的傳統(tǒng)二次計(jì)算。具體來(lái)說(shuō),輸入Q和K矩陣首先通過(guò)核函數(shù)映射到核空間,但是保持其原始維度。接著利用矩陣乘法的關(guān)聯(lián)特性,允許K和V在與Q交互之前相乘。因此注意力機(jī)制被重新表述為:

其中,。此方法有效的將計(jì)算復(fù)雜度降低至,使其與輸入長(zhǎng)度成線(xiàn)性關(guān)系。Linear Transformer是第一個(gè)提出基于核的注意力的工作。它采用作為核函數(shù),其中表示指數(shù)線(xiàn)性單元激活函數(shù)。Performers和RFA提出使用隨機(jī)特征映射來(lái)更好地近似softmax函數(shù)。PolySketchFormer采用多項(xiàng)式函數(shù)和素描技術(shù)近似softmax函數(shù)。

Low-Rank Attention。 Low-Rank Attention技術(shù)在執(zhí)行注意計(jì)算之前,將K和V矩陣的token維度(如)壓縮到較小的固定長(zhǎng)度(即如)。該方法基于對(duì)注意力矩陣通常表現(xiàn)出低秩特性的認(rèn)識(shí),使得在token維度上壓縮它是可行的。這條研究路線(xiàn)的主要重點(diǎn)是設(shè)計(jì)有效的壓縮方法,其中可以是上下文矩陣,也可以是K和V矩陣:

有一種工作是使用線(xiàn)性投影來(lái)壓縮token維度。它通過(guò)將K和V矩陣與映射矩陣相乘來(lái)完成的。這樣,注意力計(jì)算的計(jì)算復(fù)雜度降至,與輸入長(zhǎng)度成線(xiàn)性關(guān)系。Linformer首先觀察并分析了注意力的低秩性,提出了低秩注意力框架。LRT提出將低秩變換同時(shí)應(yīng)用于attention模塊和FFN,來(lái)進(jìn)一步提高計(jì)算效率。FLuRKA將低秩變換和核化結(jié)合到注意力矩陣中,進(jìn)一步提高了效率。具體的說(shuō),它首先降低K和V矩陣的token的維度,然后對(duì)Q和低秩K矩陣應(yīng)用核函數(shù)。

除了線(xiàn)性映射外,其他的token維度壓縮方法也被提出出來(lái)。Luna和Set Transformer利用額外的注意力計(jì)算和較小的query來(lái)有效地壓縮K和V矩陣。Luna則是使用了一個(gè)額外的固定長(zhǎng)度為的query矩陣。小的query使用原始的上下文矩陣執(zhí)行注意力計(jì)算,稱(chēng)為pack attention,來(lái)將上下文矩陣壓縮到大小為。隨后,常規(guī)的注意力計(jì)算,稱(chēng)為unpack attention,將注意力計(jì)算應(yīng)用于原始Q矩陣和壓縮的K和V矩陣。額外的query矩陣可以是可學(xué)習(xí)的參數(shù)或從前一層中獲取。Set Transformer通過(guò)引入固定長(zhǎng)度的矢量,設(shè)計(jì)了類(lèi)似的技術(shù)。FunnelTransformer不同于以往壓縮K和V的工作,它使用池化操作來(lái)逐步壓縮Q矩陣的序列長(zhǎng)度。

5.1.3 Transformer替代

除了聚焦于優(yōu)化注意力操作之外,最近的研究還創(chuàng)新地設(shè)計(jì)了高效而有效的序列建模體系結(jié)構(gòu)。表2比較了一些代表性的非transformer架構(gòu)模型的性能。在訓(xùn)練和推理過(guò)程中,這些架構(gòu)的模型在序列長(zhǎng)度方面表現(xiàn)出小于二次方的計(jì)算復(fù)雜度,使大模型能夠顯著增加其上下文長(zhǎng)度。

211e5854-906f-11ef-a511-92fbcf53809c.png

典型非Transformer架構(gòu)模型性能比較

在這些研究中,有兩個(gè)突出的研究方向引起了極大的關(guān)注。其中一條研究集中在狀態(tài)空間模型(State Space Model, SSM)上,該模型將序列建模視作一種基于HiPPO理論的遞歸變換。此外,其他研究主要集中在使用長(zhǎng)卷積或設(shè)計(jì)類(lèi)似注意力的公式來(lái)建模序列。

State Space Model:狀態(tài)空間模型(SSM)在某些NLP和CV任務(wù)中的建模能力極具競(jìng)爭(zhēng)力。與基于注意力的Transformer相比,SSM在輸入序列長(zhǎng)度方面表現(xiàn)出線(xiàn)性的計(jì)算和存儲(chǔ)復(fù)雜度,這提高了其處理長(zhǎng)上下文序列的能力。本篇綜述中,SSM是指一系列滿(mǎn)足以下兩個(gè)屬性的模型架構(gòu):

(1)它們基于HiPPO和LSSL提出的以下公式對(duì)序列進(jìn)行建模:

其中,表示轉(zhuǎn)移矩陣。為中間狀態(tài),為輸入序列。

(2)他們基于HiPPO理論設(shè)計(jì)了轉(zhuǎn)移矩陣A。具體來(lái)說(shuō),HiPPO提出通過(guò)將輸入序列映射到一組多項(xiàng)式基上,將其壓縮為系數(shù)序列(即)。

在上述框架的基礎(chǔ)上,一些研究主要集中在改進(jìn)轉(zhuǎn)移矩陣A的參數(shù)化或初始化。這包括在SSM中重新定義矩陣的公式或初始化方式,以增強(qiáng)其在序列建模任務(wù)中的有效性和性能。LSSL首先提出用HiPPO設(shè)計(jì)的最優(yōu)轉(zhuǎn)移矩陣初始化A。此外,LSSL還通過(guò)展開(kāi)公式(7),以卷積的方式訓(xùn)練SSM。具體地說(shuō),通過(guò)定義一個(gè)卷積核為,可以將公式(7)改寫(xiě)為,也可以通過(guò)快速傅里葉變換(FFT)高效地計(jì)算。然而,計(jì)算這個(gè)卷積核的代價(jià)是昂貴的,因?yàn)樗枰啻纬艘訟。為此,S4、DSS和S4D提出對(duì)矩陣A進(jìn)行對(duì)角化,從而加快計(jì)算速度。這可以看作是轉(zhuǎn)換矩陣A的參數(shù)化技術(shù)。過(guò)去的SSM獨(dú)立處理每個(gè)輸入維度,從而會(huì)產(chǎn)生大量可訓(xùn)練的參數(shù)。為了提高效率,S5提出使用一組參數(shù)同時(shí)處理所有輸入維度。在此結(jié)構(gòu)的基礎(chǔ)上,S5介紹了基于標(biāo)準(zhǔn)HiPPO矩陣的A的參數(shù)化和初始化方法。Liquid S4和Mamba以輸入依賴(lài)的方式對(duì)轉(zhuǎn)移矩陣進(jìn)行參數(shù)化,這進(jìn)一步增強(qiáng)了SSM的建模能力。此外,S5和Mamba均采用并行掃描技術(shù),無(wú)需卷積操作即可進(jìn)行有效的模型訓(xùn)練。這種技術(shù)在現(xiàn)代GPU硬件上的實(shí)現(xiàn)和部署方面具有優(yōu)勢(shì)。

另一類(lèi)研究方向是基于SSM設(shè)計(jì)更好的模型架構(gòu)。GSS和BiGS結(jié)合了門(mén)控注意力單元(GAU)和SSM。它們將GAU中的注意力操作替換為SSM操作。BST將SSM模型與提出的使用強(qiáng)局部感應(yīng)偏置的Block Transformer相結(jié)合。H3觀察到SSM在召回較早的token和跨序列比較token方面很弱。為此,它建議在標(biāo)準(zhǔn)SSM操作之前增加一個(gè)移位SSM操作,用于直接將輸入令牌移位進(jìn)入狀態(tài)。MambaFormer結(jié)合了標(biāo)準(zhǔn)Transformer和SSM模型,將Transformer中的FFN層替換為SSM層。Jamba引入了另一種方法,通過(guò)在SSM模型中添加四個(gè)Transformer層來(lái)組合Transformer和SSM模型。DenseMamba探討了傳統(tǒng)SSM中隱藏狀態(tài)退化的問(wèn)題,并在SSM體系結(jié)構(gòu)中引入了稠密連接,以在模型的更深層中保存細(xì)粒度信息。BlackMamba和MoE- mamba提出用混合專(zhuān)家(Mixture-of-Experts, MoE)技術(shù)增強(qiáng)SSM模型,在保持模型性能的同時(shí)優(yōu)化訓(xùn)練和推理效率。

其他代替:除了SSM之外,還有其他幾種高效的替代方案也引起了極大的關(guān)注,包括長(zhǎng)卷積和類(lèi)attention的遞歸運(yùn)算。一些研究在長(zhǎng)序列建模中采用了長(zhǎng)卷積。這些工作主要是關(guān)于卷積參數(shù)的參數(shù)化的。例如,Hyena采用了一種數(shù)據(jù)相關(guān)的參數(shù)化方法,用于使用淺前饋神經(jīng)網(wǎng)絡(luò)(FFN)的長(zhǎng)卷積。其他設(shè)計(jì)類(lèi)注意力操作,但可以納入循環(huán)方式的研究,從而實(shí)現(xiàn)高效的訓(xùn)練和高效的推理。例如,RWKV是在AFT的基礎(chǔ)上建立的,AFT提出將Transformer模型中的注意力操作代入如下公式:

其中,和Transformer一樣 ,分別為quey,key,vakue,為一個(gè)可學(xué)習(xí)的成對(duì)位置偏差和為一個(gè)非線(xiàn)性函數(shù)。具體來(lái)說(shuō),它進(jìn)一步將位置偏差進(jìn)行重參數(shù)化,,因此可以將公式(8)重寫(xiě)為遞歸形式。這樣,RWKV可以將Transformer的有效并行化訓(xùn)練特性和RNN的高效推理能力結(jié)合起來(lái)。

效果分析:文章在表2中分析和比較了幾種創(chuàng)新的和具有代表性的非Transformer架構(gòu)的模型的計(jì)算和內(nèi)存復(fù)雜性。在訓(xùn)練時(shí)間方面,許多模型(如S4, Hyena, RetNet)這些通過(guò)使用卷積或注意力等訓(xùn)練形式來(lái)保持訓(xùn)練并行性。值得注意的是,Mamba用并行掃描技術(shù)處理輸入序列,從而也使用了訓(xùn)練并行性。

另一方面,在推理過(guò)程中,大多數(shù)研究選擇循環(huán)架構(gòu)來(lái)保持prefilling階段的線(xiàn)性計(jì)算復(fù)雜度并在decoding階段保持上下文長(zhǎng)度不可知。而且,在decoding階段,這些新穎的體系結(jié)構(gòu)消除了緩存和加載歷史token的特性的需要(類(lèi)似于基于Transformer的語(yǔ)言模型中的KV緩存),從而顯著節(jié)省了內(nèi)存訪(fǎng)問(wèn)成本。

5.2 模型壓縮

模型壓縮包括一系列旨在通過(guò)修改預(yù)訓(xùn)練模型的數(shù)據(jù)表示(例如,量化)或改變其模型架構(gòu)(例如,稀疏化、結(jié)構(gòu)優(yōu)化和動(dòng)態(tài)推理)來(lái)提高其推理效率的技術(shù),如圖8所示。

2137e936-906f-11ef-a511-92fbcf53809c.png

圖8:大模型的模型壓縮方法分類(lèi)

5.2.1 量化

量化是一種廣泛使用的技術(shù),通過(guò)將模型的權(quán)重和激活從高位寬表示轉(zhuǎn)換為低位寬表示來(lái)減少大模型的計(jì)算和內(nèi)存成本。具體來(lái)說(shuō),許多方法都涉及到將FP16張量量化為低位整型張量,可以表示為如下公式:

其中表示16位浮點(diǎn)(FP16)值,表示低精度整數(shù)值,表示位數(shù),和表示縮放因子和零點(diǎn)。

在下面,本文從效率分析開(kāi)始,說(shuō)明量化技術(shù)如何減少大模型的端到端推理延遲。隨后,再分別詳細(xì)介紹兩種不同的量化工作流程:Post-Training Quantization (PTQ)和Quantization-Aware Training (QAT)。

效率分析:如2.2節(jié)所述,大模型的推理過(guò)程包括兩個(gè)階段:prefilling階段和decoding階段。在prefilling階段,大模型通常處理長(zhǎng)token序列,主要操作是通用矩陣乘法(GEMM)。Prefilling階段的延遲主要受到高精度CUDA內(nèi)核執(zhí)行的計(jì)算操作的限制。為了解決這個(gè)問(wèn)題,現(xiàn)有的研究方法對(duì)權(quán)重和激活量化,以使用低精度Tensor核來(lái)加速計(jì)算。如圖9 (b)所示,在每次GEMM操作之前會(huì)在線(xiàn)執(zhí)行激活量化,從而允許使用低精度Tensor核(例如INT8)進(jìn)行計(jì)算。這種量化方法被稱(chēng)為權(quán)重激活量化。

相比之下,在解碼階段,大模型在每個(gè)生成步中只處理一個(gè)token,其使用通用矩陣向量乘法(GEMV)作為核心操作。解碼階段的延遲主要受到加載大權(quán)重張量的影響。為了解決這個(gè)問(wèn)題,現(xiàn)有的方法只關(guān)注量化權(quán)重來(lái)加速內(nèi)存訪(fǎng)問(wèn)。這種方法稱(chēng)為,首先對(duì)權(quán)重進(jìn)行離線(xiàn)量化,然后將低精度權(quán)重去量化為FP16格式進(jìn)行計(jì)算,如圖9 (a)所示。

2159e4d2-906f-11ef-a511-92fbcf53809c.png

圖9:(a)純權(quán)重量化推理流程。(b)權(quán)重激活量化推理流程。

Post-Training Quantization: PTQ涉及對(duì)預(yù)訓(xùn)練模型進(jìn)行量化,而不需要再訓(xùn)練,這可能是一個(gè)昂貴的過(guò)程。盡管PTQ方法已經(jīng)在較小的模型中得到了很好的探索,但是將現(xiàn)有的量化技術(shù)直接應(yīng)用于大模型存在困難。這主要是因?yàn)榕c較小的模型相比,大模型的權(quán)重和激活通常表現(xiàn)出更多的異常值,并且具有更寬的分布范圍,這使得它們的量化更具挑戰(zhàn)性。總之,大模型的復(fù)雜特性,以其規(guī)模和復(fù)雜性為特征,需要用專(zhuān)門(mén)的方法來(lái)有效地處理量化過(guò)程。大模型中異常值和更寬的分布范圍的存在需要開(kāi)發(fā)量身定制的量化技術(shù),以便在不影響模型性能或效率的情況下處理這些獨(dú)特的特征。

大量的研究致力于開(kāi)發(fā)有效的量化算法來(lái)壓縮大模型。本文在表3中提供了跨四個(gè)維度分類(lèi)的代表性算法的綜合。對(duì)于量化張量的種類(lèi),某些研究專(zhuān)注于weight-only quantization,而其他許多研究則專(zhuān)注于權(quán)重和激活的量化。值得注意的是,在大模型中,KV緩存代表了影響內(nèi)存和內(nèi)存訪(fǎng)問(wèn)的獨(dú)特組件。因此,一些研究提出對(duì)KV緩存進(jìn)行量化。在量化格式方面,為了便于硬件實(shí)現(xiàn),大多數(shù)算法采用統(tǒng)一的格式。關(guān)于量化參數(shù)(如縮放因子、零點(diǎn))的確定,大多數(shù)研究依賴(lài)于由權(quán)重或激活值得出的統(tǒng)計(jì)數(shù)據(jù)。然而,也有一些研究主張基于重構(gòu)loss來(lái)尋找最優(yōu)參數(shù)。此外,一些研究也建議在量化之前或量化過(guò)程中更新未量化的權(quán)重(稱(chēng)為)以提高性能。

在weight-only quantization方法中,GPTQ代表了大模型量化的早期較好的工作,它建立在傳統(tǒng)算法OBQ的基礎(chǔ)上。OBQ通過(guò)相對(duì)于未量化權(quán)重的Hessian矩陣的重建誤差的方法,來(lái)實(shí)現(xiàn)每行權(quán)重矩陣的最優(yōu)量化順序。在每個(gè)量化步驟之后,OBQ迭代調(diào)整未量化的權(quán)重以減輕重建誤差。然而,量化過(guò)程中頻繁更新Hessian矩陣增加了計(jì)算復(fù)雜度。GPTQ通過(guò)采用統(tǒng)一的從左到右的順序來(lái)量化每一行,從而簡(jiǎn)化了這個(gè)過(guò)程,從而避免了大量更新Hessian矩陣的需要。該策略通過(guò)在量化一行時(shí)僅計(jì)算Hessian矩陣,然后將計(jì)算結(jié)果用于后續(xù)行,從而大大減少了計(jì)算需求,從而加快了整個(gè)量化過(guò)程。LUT- GEMM提出了一種新的利用查找表(Look-Up Table, LUT)的去量化方法,旨在通過(guò)減少去量化開(kāi)銷(xiāo)來(lái)加速量化大模型的推理過(guò)程。此外,它采用了一種稱(chēng)為二進(jìn)制編碼量化(BCQ)的非均勻量化方法,該方法包含了可學(xué)習(xí)的量化區(qū)間。AWQ觀察到權(quán)重通道對(duì)性能的重要性各不相同,特別強(qiáng)調(diào)那些與激活異常值的輸入通道對(duì)齊的通道。為了增強(qiáng)關(guān)鍵權(quán)重通道的保存,AWQ采用了一種重參數(shù)化的方法。該方法通過(guò)網(wǎng)格搜索選擇重參數(shù)化系數(shù),有效地減小了重構(gòu)誤差。OWQ觀察到量化與激活異常值相關(guān)的權(quán)重的困難。為了解決這個(gè)問(wèn)題,OWQ采用了混合精度量化策略。該方法識(shí)別權(quán)重矩陣中的弱列,并為這些特定權(quán)重分配更高的精度,同時(shí)以較低的精度級(jí)別量化其余權(quán)重。SpQR引入了一種方法,在量化過(guò)程中識(shí)別和分配更高精度的權(quán)重異常值,而其余權(quán)重被量化為3位。SqueezeLLM提出將離群值存儲(chǔ)在全精度稀疏矩陣中,并對(duì)剩余權(quán)重應(yīng)用非均勻量化。根據(jù)量化靈敏度確定非均勻量化的值,能夠提高量化模型的性能。QuIP引入了LDLQ,一種二次代理目標(biāo)的最優(yōu)自適應(yīng)方法。研究表明,保證權(quán)值與Hessian矩陣之間的不相干性可以提高LDLQ的有效性。QuIP利用LDLQ,通過(guò)隨機(jī)正交矩陣乘法實(shí)現(xiàn)非相干性。FineQuant采用了一種啟發(fā)式方法。為了確定每列量化的粒度,結(jié)合從實(shí)驗(yàn)中獲得的經(jīng)驗(yàn)見(jiàn)解來(lái)設(shè)計(jì)量化方案。QuantEase的工作建立在GPTQ之上。在對(duì)每一層進(jìn)行量化時(shí),其提出了一種基于坐標(biāo)下降的方法來(lái)更精確地補(bǔ)償未量化的權(quán)重。此外,QuantEase可以利用來(lái)自GPTQ的量化權(quán)重作為初始化,并進(jìn)一步完善補(bǔ)償過(guò)程。LLM-MQ采用FP16格式保護(hù)權(quán)重異常值,并將其存儲(chǔ)在壓縮稀疏行(CSR)格式中,以提高計(jì)算效率。此外,LLM-MQ將每個(gè)層的位寬分配,建模為整數(shù)規(guī)劃問(wèn)題,并采用高效的求解器在幾秒內(nèi)求解。LLM-MQ還設(shè)計(jì)了一個(gè)高效的CUDA內(nèi)核來(lái)集成去量化運(yùn)算符,從而降低了計(jì)算過(guò)程中的內(nèi)存訪(fǎng)問(wèn)成本。

對(duì)于weight-activation quantization,ZeroQuant采用細(xì)粒度量化權(quán)值和激活,利用核融合來(lái)最小化量化過(guò)程中的內(nèi)存訪(fǎng)問(wèn)成本,并逐層進(jìn)行知識(shí)蒸餾以恢復(fù)性能。FlexGen將權(quán)重和KV緩存直接量化到INT4中,以減少大批量推理期間的內(nèi)存占用。LLM.int8() 發(fā)現(xiàn)激活中的異常值集中在一小部分通道中。基于這一點(diǎn),LLM.int8() 根據(jù)輸入通道內(nèi)的離群值分布將激活和權(quán)重分成兩個(gè)不同的部分,以最小化激活中的量化誤差。包含激活值和權(quán)重的異常數(shù)據(jù)的通道以FP16格式存儲(chǔ),其他通道則以INT8格式存儲(chǔ)。SmoothQuant采用了一種重新參數(shù)化技術(shù)來(lái)解決量化激活值的挑戰(zhàn)。該方法引入比例因子,擴(kuò)大了權(quán)重通道的數(shù)據(jù)范圍,縮小了相應(yīng)激活通道的數(shù)據(jù)范圍。ZeroQuant引入了權(quán)重的組級(jí)別的量化策略和激活的token級(jí)別的量化方法。在此方法的基礎(chǔ)上,ZeroQuantV2提出了LoRC(低秩補(bǔ)償)技術(shù),采用低秩矩陣來(lái)減輕量化不準(zhǔn)確性。RPTQ發(fā)現(xiàn)不同激活通道的分布,實(shí)質(zhì)上是變化的,這給量化帶來(lái)了挑戰(zhàn)。為了緩解這個(gè)問(wèn)題,RPTQ將具有相似激活分布的通道重新組織到集群中,并在每個(gè)集群中獨(dú)立地應(yīng)用量化。OliVe觀察到離群值附近的正態(tài)值不那么關(guān)鍵。因此,它將每個(gè)離群值與一個(gè)正態(tài)值配對(duì),犧牲正態(tài)值,以獲得更大的離群值表示范圍。OS+觀察到異常值的分布是集中且不對(duì)稱(chēng)的,這對(duì)大模型的量化提出了挑戰(zhàn)。為了解決這個(gè)問(wèn)題,OS+引入了一種通道級(jí)別的移動(dòng)和縮放技術(shù)。在搜索過(guò)程去確定移動(dòng)和縮放參數(shù),能有效地處理集中和不對(duì)稱(chēng)的離群值分布。ZeroQuant-FP研究了將權(quán)重和激活值量化為FP4和FP8格式的可行性。研究表明,與整數(shù)類(lèi)型相比,將激活量化為浮點(diǎn)類(lèi)型(FP4和FP8)會(huì)產(chǎn)生更好的結(jié)果。Omniquant與先前依賴(lài)量化參數(shù)的經(jīng)驗(yàn)設(shè)計(jì)的方法不同。相反,它優(yōu)化了權(quán)值裁剪的邊界和等效變換的縮放因子,以最小化量化誤差。QLLM通過(guò)實(shí)現(xiàn)通道重組來(lái)解決異常值對(duì)量化的影響。此外,QLLM還設(shè)計(jì)了可學(xué)習(xí)的低秩參數(shù),來(lái)減小post-quantized模型的量化誤差。Atom采用了混合精度和動(dòng)態(tài)量化激活的策略。值得注意的是,它擴(kuò)展了這種方法,將KV緩存量化為INT4,以提高吞吐量性能。LLM-FP4努力將整個(gè)模型量化為FP4格式,并引入了預(yù)移位指數(shù)偏置技術(shù)。該方法將激活值的比例因子與權(quán)重相結(jié)合,以解決異常值帶來(lái)的量化問(wèn)題。BiLLM代表了迄今為止最低位PTQ的工作之一。BiLLM識(shí)別了權(quán)值的鐘形分布和權(quán)值Hessian矩陣的異常長(zhǎng)尾分布。在此基礎(chǔ)上,提出了將基于Hessian矩陣的權(quán)重結(jié)構(gòu)分類(lèi)為顯著值和非顯著值,并分別進(jìn)行二值化。因此,BiLLM可以將大模型廣泛量化到1.08位,且不會(huì)顯著降低困惑度。KVQuant通過(guò)在校準(zhǔn)集上離線(xiàn)導(dǎo)出最優(yōu)數(shù)據(jù)類(lèi)型,提出了KV緩存量化的非均勻量化方案。KIVI提出了一種無(wú)需調(diào)優(yōu)的2bit KV緩存量化算法,該算法利用單通道量化用于key cache,利用單token量化進(jìn)行value cache。Li等進(jìn)行了全面的評(píng)估,評(píng)估了量化對(duì)不同張量類(lèi)型(包括KV Cache)、各種任務(wù)、11種不同的大模型和SOTA量化方法的影響。

Quantization-Aware Training:QAT在模型訓(xùn)練過(guò)程中考慮了量化的影響。通過(guò)集成復(fù)制量化效果的層,QAT有助于權(quán)重適應(yīng)量化引起的錯(cuò)誤,從而提高任務(wù)性能。然而,訓(xùn)練大模型通常需要大量的訓(xùn)練數(shù)據(jù)和計(jì)算資源,這對(duì)QAT的實(shí)施構(gòu)成了潛在的瓶頸。因此,目前的研究工作集中在減少訓(xùn)練數(shù)據(jù)需求或減輕與QAT實(shí)施相關(guān)的計(jì)算負(fù)擔(dān)的策略上。為了減少數(shù)據(jù)需求,LLM-QAT引入了一種無(wú)數(shù)據(jù)的方法,利用原始FP16的大模型生成訓(xùn)練數(shù)據(jù)。具體來(lái)說(shuō),LLM-QAT使用詞表中的每個(gè)token作為生成句子的起始標(biāo)記?;谏傻挠?xùn)練數(shù)據(jù),LLM- QAT應(yīng)用了基于蒸餾的工作流來(lái)訓(xùn)練量化的LLM,以匹配原始FP16大模型的輸出分布。Norm Tweaking只針對(duì)那些在語(yǔ)言類(lèi)別中占最高比例的語(yǔ)言,做了起始標(biāo)記的限制選擇。這一策略可以有效地提高量化模型在不同任務(wù)上的生成性能。

為了減少計(jì)算量,許多方法采用高效參數(shù)微調(diào)(parameter-efficient tuning,PEFT)策略來(lái)加速Q(mào)AT。QLoRA將大模型的權(quán)重量化為4位,隨后在BF16中對(duì)每個(gè)4位權(quán)重矩陣使用LoRA來(lái)對(duì)量化模型進(jìn)行微調(diào)。QLoRA允許在一個(gè)只有30GB內(nèi)存的GPU上對(duì)65B參數(shù)的大模型進(jìn)行有效的微調(diào)。QALoRA則提出在QLoRA中加入分組量化。作者觀察到QLoRA中量化參數(shù)的數(shù)量明顯小于LoRA參數(shù)的數(shù)量,這會(huì)導(dǎo)致量化與低秩自適應(yīng)之間的不平衡。他們建議,組級(jí)別的操作可以通過(guò)增加專(zhuān)用于量化的參數(shù)數(shù)量來(lái)解決這個(gè)問(wèn)題。此外,QA-LoRA可以將LoRA項(xiàng)合并到相應(yīng)的量化權(quán)矩陣中。LoftQ指出,在QLoRA中用零初始化LoRA矩陣對(duì)于下游任務(wù)是低效的。作為一種替代方案,LoftQ建議使用原始FP16權(quán)重與量化權(quán)重之間差距的奇異值分解(Singular Value Decomposition,SVD)來(lái)初始化LoRA矩陣。LoftQ迭代地應(yīng)用量化和奇異值分解來(lái)獲得更精確的原始權(quán)重近似值。Norm Tweaking提出在量化后訓(xùn)練LayerNorm層,并使用知識(shí)蒸餾將量化模型的輸出分布與FP16模型的輸出分布進(jìn)行匹配,達(dá)到類(lèi)似LLM-QAT的效果,同時(shí)避免了較高的訓(xùn)練成本。

對(duì)比實(shí)驗(yàn)與分析:本綜述的作者對(duì)不同場(chǎng)景下的weight-only quantization技術(shù)所產(chǎn)生的加速效果。作者使用了LLaMA-2-7B和LLaMA-2-13B,并使用AWQ將它們的權(quán)重量化至4-bit。作者使用NVIDIA A100進(jìn)行實(shí)驗(yàn),并使用TensorRT-LLM和LMDeploy這兩個(gè)推理框架部署量化后的大模型。然后,作者評(píng)估了這些推理框架在不同的輸入序列上實(shí)現(xiàn)的加速,這些序列是批大小和上下文長(zhǎng)度不同的。prefilling延遲、decoding延遲端到端延遲的加速效果,如表4所示。

217a4470-906f-11ef-a511-92fbcf53809c.png

表4:大模型加速效果對(duì)比

實(shí)驗(yàn)結(jié)果表明:(1)Weight-only quantization可以在decoding階段加速,進(jìn)而實(shí)現(xiàn)端到端的加速。這種提升主要源于從高帶寬內(nèi)存( High Bandwidth Memory,HBM)更快地加載具有低精度權(quán)重張量的量化模型,這種方法顯著減少了內(nèi)存訪(fǎng)問(wèn)開(kāi)銷(xiāo)。(2)對(duì)于prefilling階段,weight-only quantization可能會(huì)增加延遲。這是因?yàn)閜refilling階段的瓶頸是計(jì)算成本,而不是內(nèi)存訪(fǎng)問(wèn)開(kāi)銷(xiāo)。因此,只量化沒(méi)有激活的權(quán)重對(duì)延遲的影響最小。此外,如圖9所示,weight-only quantization需要將低精度權(quán)重去量化到FP16,這會(huì)導(dǎo)致額外的計(jì)算開(kāi)銷(xiāo),從而減慢prefilling。(3)隨著批量大小和輸入長(zhǎng)度的增加,weight-only quantization的加速程度逐漸減小。這主要是因?yàn)?,?duì)于更大的批處理大小和輸入長(zhǎng)度,計(jì)算成本構(gòu)成了更大比例的延遲。雖然weight-only quantization主要降低了內(nèi)存訪(fǎng)問(wèn)成本,但隨著批量大小和輸入長(zhǎng)度增大,計(jì)算需求變得更加突出,它對(duì)延遲的影響變得不那么顯著。(4)由于內(nèi)存訪(fǎng)問(wèn)開(kāi)銷(xiāo)與模型的參數(shù)量規(guī)模相關(guān),weight-only quantization為參數(shù)規(guī)模較大的模型提供了更大的好處。隨著模型的復(fù)雜度與尺寸的增長(zhǎng),存儲(chǔ)和訪(fǎng)問(wèn)權(quán)重所需的內(nèi)存量也會(huì)成比例地增加。通過(guò)量化模型權(quán)重,weight-only quantization可以有效地減少內(nèi)存占用和內(nèi)存訪(fǎng)問(wèn)開(kāi)銷(xiāo)。

5.2.2 稀疏化(Sparsification)

稀疏化是一種壓縮技術(shù),可以增加數(shù)據(jù)結(jié)構(gòu)(如模型參數(shù)或激活)中零值元素的比例。該方法通過(guò)在計(jì)算過(guò)程中有效地忽略零元素來(lái)降低計(jì)算復(fù)雜度和內(nèi)存占用。在應(yīng)用到大模型中時(shí),稀疏化通常應(yīng)用于權(quán)重參數(shù)和注意力激活。這導(dǎo)致了權(quán)值修剪策略和稀疏注意力機(jī)制的發(fā)展。

權(quán)重修剪(Weight Pruning):權(quán)值修剪系統(tǒng)地從模型中去除不太關(guān)鍵的權(quán)值和結(jié)構(gòu),旨在減少預(yù)填充階段和解碼階段的計(jì)算和內(nèi)存成本,而不會(huì)顯著影響性能。這種稀疏化方法分為兩種主要類(lèi)型:非結(jié)構(gòu)化修剪和結(jié)構(gòu)化修剪。它們的分類(lèi)基于修剪過(guò)程的粒度,如圖10所示。

2192b4d8-906f-11ef-a511-92fbcf53809c.png

圖10:非結(jié)構(gòu)化修剪和結(jié)構(gòu)化修剪

非結(jié)構(gòu)化修剪以細(xì)粒度修剪單個(gè)權(quán)重值。與結(jié)構(gòu)化修剪相比,它通常在對(duì)模型預(yù)測(cè)影響最小的情況下實(shí)現(xiàn)更高的稀疏度。然而,通過(guò)非結(jié)構(gòu)化剪枝實(shí)現(xiàn)的稀疏模式缺乏高層次的規(guī)律性,導(dǎo)致不規(guī)則的內(nèi)存訪(fǎng)問(wèn)和計(jì)算模式。這種不規(guī)律會(huì)嚴(yán)重阻礙硬件加速的潛力,因?yàn)楝F(xiàn)代計(jì)算架構(gòu)針對(duì)密集、規(guī)則的數(shù)據(jù)進(jìn)行了優(yōu)化。因此,盡管實(shí)現(xiàn)了更高的稀疏度級(jí)別,但非結(jié)構(gòu)化剪枝在硬件效率和計(jì)算加速方面的實(shí)際好處可能是有限的。

權(quán)值修剪的焦點(diǎn)是修剪標(biāo)準(zhǔn),包括權(quán)重重要性和修剪比例。考慮到大模型的參數(shù)規(guī)模巨大,提高剪枝效率也至關(guān)重要。一個(gè)修剪準(zhǔn)則是最小化模型的重建損失。SparseGPT是該領(lǐng)域的代表性方法。它遵循OBS的思想,考慮去除每個(gè)權(quán)值對(duì)網(wǎng)絡(luò)重構(gòu)損失的影響。OBS迭代地確定一個(gè)剪枝掩模對(duì)權(quán)值進(jìn)行剪枝,并重建未剪枝的權(quán)值以補(bǔ)償剪枝損失。SparseGPT通過(guò)最優(yōu)部分更新技術(shù)克服了OBS的效率瓶頸,設(shè)計(jì)了一種基于OBS重構(gòu)誤差的自適應(yīng)掩碼選擇技術(shù)。Prune and Tune通過(guò)在修剪過(guò)程中使用最少的訓(xùn)練步驟微調(diào)大模型來(lái)改進(jìn)SparseGPT。ISC結(jié)合OBS和OBD中的顯著性標(biāo)準(zhǔn)設(shè)計(jì)了一種新的修剪標(biāo)準(zhǔn)。該算法進(jìn)一步根據(jù)Hessian信息為每一層分配非均勻剪枝比例。BESA通過(guò)重構(gòu)損失的梯度下降學(xué)習(xí)一個(gè)可微的二值掩碼。每一層的剪枝比依次通過(guò)最小化重建誤差來(lái)確定。另一種流行的修剪標(biāo)準(zhǔn)是基于大小缺定。Wanda提出使用權(quán)值與輸入激活范數(shù)之間的元素積作為修剪準(zhǔn)則。RIA通過(guò)使用相對(duì)重要性和激活度的度量來(lái)聯(lián)合考慮權(quán)重和激活度,該度量基于其所有連接的權(quán)重來(lái)評(píng)估每個(gè)權(quán)重元素的重要性。此外,RIA將非結(jié)構(gòu)化稀疏范式轉(zhuǎn)換為結(jié)構(gòu)化N:M稀疏范式,可以在NVIDIA GPU上獲得實(shí)際的加速。OWL側(cè)重于確定各層的剪枝比例。它根據(jù)激活異常值比率為每一層分配剪枝比率。

與非結(jié)構(gòu)化修剪相比,結(jié)構(gòu)化修剪以更粗的粒度操作,修剪模型中較大的結(jié)構(gòu)單元,例如整個(gè)通道或?qū)?。這些方法直接促進(jìn)了在傳統(tǒng)硬件平臺(tái)上的推理加速,因?yàn)樗鼈兣c這些系統(tǒng)優(yōu)化處理的密集、規(guī)則的數(shù)據(jù)范式保持一致。然而,結(jié)構(gòu)化修剪的粗粒度通常會(huì)對(duì)模型性能產(chǎn)生更明顯的影響。這類(lèi)修剪標(biāo)準(zhǔn)還強(qiáng)制執(zhí)行結(jié)構(gòu)化修剪模式。LLM-Prune提出了一種任務(wù)不可知的結(jié)構(gòu)化修剪算法。具體來(lái)說(shuō),它首先根據(jù)神經(jīng)元之間的連接依賴(lài)關(guān)系識(shí)別出大模型中的偶聯(lián)結(jié)構(gòu)。然后,它根據(jù)設(shè)計(jì)良好的組級(jí)別的修剪度量來(lái)決定要?jiǎng)h除哪些結(jié)構(gòu)組。修剪后,進(jìn)一步提出通過(guò)一個(gè)高校參數(shù)訓(xùn)練技術(shù),如LoRA來(lái)恢復(fù)模型性能。 Sheared LLaMA提出將原始大模型修剪為現(xiàn)有預(yù)訓(xùn)練大模型的特定目標(biāo)架構(gòu)。此外,它設(shè)計(jì)了動(dòng)態(tài)批數(shù)據(jù)加載技術(shù)來(lái)提升post-training 性能。

ZipLM迭代地識(shí)別和修剪結(jié)構(gòu)組件,在損失和運(yùn)行時(shí)間之間進(jìn)行最壞的權(quán)衡。LoRAPrune為帶有LoRA模塊的預(yù)訓(xùn)練大模型提出了結(jié)構(gòu)化修剪框架,以實(shí)現(xiàn)基于LoRA的模型的快速推理。它設(shè)計(jì)了基于LoRA的權(quán)值和梯度的由LoRA引導(dǎo)的剪枝準(zhǔn)則,并設(shè)計(jì)了基于該準(zhǔn)則去除不重要權(quán)值的迭代剪枝方案。LoRAShear還為基于LoRA的大模型設(shè)計(jì)了一種修剪方法,該方法采用(1)圖算法來(lái)識(shí)別最小的去除結(jié)構(gòu),(2)漸進(jìn)式結(jié)構(gòu)化剪接算法LHSPG,(3)動(dòng)態(tài)知識(shí)恢復(fù)機(jī)制來(lái)恢復(fù)模型性能。SliceGPT[174]基于RMSNorm操作的計(jì)算不變性思想。它提出在每個(gè)權(quán)值矩陣中對(duì)稀疏性進(jìn)行結(jié)構(gòu)化排列,并對(duì)整個(gè)行或列進(jìn)行切片。PLATON[提出通過(guò)考慮權(quán)重的重要性和不確定性來(lái)修剪權(quán)重。它使用重要性分?jǐn)?shù)的指數(shù)移動(dòng)平均(Exponential Moving Average,EMA)來(lái)估計(jì)重要性,對(duì)不確定性采用上置信度界(UCB)。SIMPLE提出通過(guò)學(xué)習(xí)相應(yīng)的稀疏掩碼來(lái)修剪注意頭、FFN神經(jīng)元和隱藏維度。在進(jìn)行剪枝后,進(jìn)一步采用知識(shí)精餾對(duì)剪枝后的模型進(jìn)行微調(diào),實(shí)現(xiàn)性能恢復(fù)。

稀疏注意力(Sparse Attention):Transformer多頭自注意力(MHSA)組件中的稀疏注意技術(shù)可以策略性地省略某些注意運(yùn)算,以提高注意運(yùn)算的計(jì)算效率,主要是在預(yù)填充階段。這些機(jī)制根據(jù)對(duì)特定輸入數(shù)據(jù)的依賴(lài)程度分為靜態(tài)和動(dòng)態(tài)兩類(lèi)。

靜態(tài)稀疏注意力去除了獨(dú)立于特定輸入的激活值。這些方法預(yù)先確定了稀疏的注意力掩碼,并在推理過(guò)程中將其強(qiáng)加于注意力矩陣。過(guò)去的研究工作結(jié)合了不同的稀疏模式來(lái)保留每個(gè)注意力矩陣中最基本的元素。如圖11(a)所示,最常見(jiàn)的稀疏注意力模式是局部和全局注意模式。本地注意力范式捕獲每個(gè)token的本地上下文,并在每個(gè)token周?chē)O(shè)置固定大小的窗口注意。全局注意力范式通過(guò)計(jì)算和關(guān)注整個(gè)序列中的所有token來(lái)捕獲特定token與所有其他token之間的相關(guān)性。利用全局模式可以消除存儲(chǔ)未使用的token的KV對(duì)的需要,從而減少了解碼階段的內(nèi)存訪(fǎng)問(wèn)成本和內(nèi)存使用。Sparse Transformer將這些模式結(jié)合起來(lái),用本地模式捕獲本地上下文,然后每隔幾個(gè)單詞就用全局模式聚合信息。StreamingLLM只對(duì)前幾個(gè)token應(yīng)用本地模式和全局模式。結(jié)果表明,這種全局模式作為注意力漕,保持了對(duì)初始標(biāo)記的強(qiáng)注意得分。它有助于大模型推廣到無(wú)限輸入序列長(zhǎng)度。Bigbird也使用隨機(jī)模式,其中所有token都參加一組隨機(jī)token。證明了局部模式、全局模式和隨機(jī)模式的組合可以封裝所有連續(xù)序列到序列的函數(shù),并證實(shí)了其圖靈完備性。如圖11(b)所示,Longformer還引入了膨脹的滑動(dòng)窗口模式。它類(lèi)似于擴(kuò)張的CNN,使滑動(dòng)窗口“擴(kuò)張”以增加接受野。為了使模型適應(yīng)稀疏設(shè)置,Structured sparse Attention提倡一種熵感知的訓(xùn)練方法,將高概率的注意力值聚集到更密集的區(qū)域中。與以往手工設(shè)計(jì)稀疏模式的研究不同,SemSA使用基于梯度的分析來(lái)識(shí)別重要的注意模式,并自動(dòng)優(yōu)化注意密度分布,進(jìn)一步提高模型效率。

21aa7564-906f-11ef-a511-92fbcf53809c.png

圖11:不同的稀疏注意力掩碼舉例

相比之下,動(dòng)態(tài)稀疏注意力根據(jù)不同的輸入自適應(yīng)地消除激活值,通過(guò)實(shí)時(shí)監(jiān)測(cè)神經(jīng)元的激活值來(lái)繞過(guò)對(duì)神經(jīng)元的影響可以忽略的計(jì)算,從而實(shí)現(xiàn)修剪。大多數(shù)動(dòng)態(tài)稀疏注意方法采用動(dòng)態(tài)token修剪方法,如圖11(c)所示。Spatten、SeqBoat和Adaptive Sparse Attention利用語(yǔ)言結(jié)構(gòu)的固有冗余提出動(dòng)態(tài)標(biāo)記級(jí)修剪策略。Spatten通過(guò)匯總注意力矩陣列來(lái)評(píng)估每個(gè)單詞的累積重要性,并在后面的層中從輸入中對(duì)具有最小累積重要性的token進(jìn)行修剪。SeqBoat訓(xùn)練了一個(gè)線(xiàn)性狀態(tài)空間模型(State Space Model, SSM),該模型帶有一個(gè)稀疏的sigmoid函數(shù),以確定每個(gè)注意力頭需要修剪哪個(gè)token。Spatten和SeqBoat都對(duì)整個(gè)輸入的無(wú)信息的token進(jìn)行了修剪。自適應(yīng)稀疏注意力在生成過(guò)程中逐漸修剪token。它去除了上下文中,在未來(lái)生成不再需要的部分。

除了動(dòng)態(tài)token修剪,動(dòng)態(tài)注意力修剪技術(shù)也被應(yīng)用。如圖11(d)所示,這些方法不是修剪某些token的所有注意力值,而是根據(jù)輸入動(dòng)態(tài)地修剪注意力的選擇部分。在相關(guān)工作中,一個(gè)較為不錯(cuò)的方法是動(dòng)態(tài)地將輸入token分成組,稱(chēng)為桶,并策略性地省略駐留在單獨(dú)桶中的token的注意力計(jì)算。這些方法的重點(diǎn)在于如何將相關(guān)的token聚類(lèi)在一起,來(lái)促進(jìn)它們之間的注意力計(jì)算,從而提高效率。Reformer利用位置敏感的哈希來(lái)將共享相同哈希碼的key和query聚集到同一個(gè)桶中。在此之后,Sparse Flash Attention引入了專(zhuān)門(mén)針對(duì)這種基于哈希的稀疏注意力機(jī)制進(jìn)行優(yōu)化的GPU內(nèi)核,進(jìn)一步提高了計(jì)算效率。同時(shí),Routing Transformer采用球形k-means聚類(lèi)算法將token聚合到桶中,優(yōu)化了注意力計(jì)算的選擇過(guò)程。Sparse Sinkhorn Attention采用學(xué)習(xí)排序網(wǎng)絡(luò)將key與其相關(guān)的query桶對(duì)齊,確保僅在相應(yīng)的query和key對(duì)之間計(jì)算注意力。與桶級(jí)操作不同,H2O引入了token級(jí)動(dòng)態(tài)注意力修剪機(jī)制。它將靜態(tài)本地注意力與當(dāng)前query和一組動(dòng)態(tài)標(biāo)識(shí)的key token之間的動(dòng)態(tài)計(jì)算結(jié)合起來(lái),稱(chēng)作heavy-hitters(H2)。這些 heavy-hitters通過(guò)移除策略進(jìn)行動(dòng)態(tài)調(diào)整,該策略旨在在每個(gè)生成步驟中刪除最不重要的key,從而有效地管理heavy-hitter集的大小和相關(guān)性。

此外,將每個(gè)token視為圖節(jié)點(diǎn),將token之間的注意力視為邊,可以擴(kuò)展靜態(tài)稀疏注意力的視角。原始的全注意力機(jī)制等同于一個(gè)均勻最短路徑距離為1的完整圖。稀疏注意力通過(guò)其隨機(jī)掩碼引入隨機(jī)邊,有效地將任意兩個(gè)節(jié)點(diǎn)之間的最短路徑距離減小到,從而保持類(lèi)似于完全注意的高效信息流。Diffuser利用圖論的視角,通過(guò)多跳token關(guān)聯(lián)來(lái)擴(kuò)展稀疏注意的接受場(chǎng)。它還從擴(kuò)展圖屬性中獲得靈感,以設(shè)計(jì)更好的稀疏模式,以近似全注意力的信息流。

除了注意力級(jí)和token級(jí)的稀疏性之外,注意力修剪的范圍擴(kuò)展到各種粒度。Spatten還將修剪從token粒度擴(kuò)展到注意力頭粒度,消除了不必要的注意力頭的計(jì)算,以進(jìn)一步減少計(jì)算和內(nèi)存需求。

5.2.3 架構(gòu)優(yōu)化(Structure Optimization)

架構(gòu)優(yōu)化的目標(biāo)是重新定義模型的體系結(jié)構(gòu)或者架構(gòu),以提高模型效率和性能之間的平衡。相關(guān)工作中有兩種突出的技術(shù):神經(jīng)結(jié)構(gòu)搜索(Neural Architecture Search, NAS)和低秩分解(Low Rank Factorization, LRF)。

神經(jīng)結(jié)構(gòu)搜索(Neural Architecture Search):神經(jīng)架構(gòu)搜索(Neural Architecture Search, NAS)旨在自動(dòng)搜索在效率和性能之間達(dá)到最佳平衡的最優(yōu)神經(jīng)架構(gòu)。AutoTinyBERT利用one-shot神經(jīng)架構(gòu)搜索(NAS)來(lái)發(fā)現(xiàn)Transformer架構(gòu)的超參數(shù)。值得注意的是,它引入了一種引人注目的批處理訓(xùn)練方法來(lái)訓(xùn)練超級(jí)預(yù)訓(xùn)練語(yǔ)言模型(SuperPLM),隨后使用進(jìn)化算法來(lái)識(shí)別最優(yōu)子模型。NAS-BERT使用一些創(chuàng)新技術(shù),如塊級(jí)別搜索、搜索空間修剪和性能逼近,在傳統(tǒng)的自監(jiān)督預(yù)訓(xùn)練任務(wù)上訓(xùn)練大型超級(jí)網(wǎng)絡(luò)。這種方法允許NAS-BERT有效地應(yīng)用于各種下游任務(wù),而不需要大量的重新訓(xùn)練。通過(guò)NAS進(jìn)行結(jié)構(gòu)剪枝將結(jié)構(gòu)剪枝作為一個(gè)多目標(biāo)NAS問(wèn)題,通過(guò)一次性的NAS方法進(jìn)行解決。LiteTransformerSearch提出使用不需要訓(xùn)練的指標(biāo),例如參數(shù)的數(shù)量作為代理指標(biāo)來(lái)指導(dǎo)搜索。這種方法可以有效地探索和選擇最優(yōu)的體系結(jié)構(gòu),而不需要在搜索階段進(jìn)行實(shí)際的訓(xùn)練。AutoDistil提出了一種完全與任務(wù)無(wú)關(guān)的few-shot NAS算法,該算法具有三種主要技術(shù):搜索空間劃分、與任務(wù)無(wú)關(guān)的SuperLM訓(xùn)練和與任務(wù)無(wú)關(guān)的搜索。這種方法的目的是促進(jìn)跨各種任務(wù)的高效體系結(jié)構(gòu)發(fā)現(xiàn),并減少特定于任務(wù)的調(diào)整。通常,NAS算法需要評(píng)估每個(gè)采樣架構(gòu)的性能,這可能會(huì)產(chǎn)生大量的訓(xùn)練成本。因此,這些技術(shù)在應(yīng)用于大模型時(shí)具有挑戰(zhàn)性。

低秩分解(Low Rank Factorization):低秩分解(LRF)或低秩分解(Low Rank Decomposition)的目的是用兩個(gè)低秩矩陣和近似一個(gè)矩陣:

其中比和小得多。這樣,LRF可以減少內(nèi)存使用,提高計(jì)算效率。此外,在大模型推理的解碼階段,內(nèi)存訪(fǎng)問(wèn)成本是解碼速度的瓶頸。因此,LRF可以減少需要加載的參數(shù)數(shù)量,從而加快解碼速度。LoRD顯示了壓縮大模型的潛力,而不會(huì)通過(guò)LRF大幅降低性能。具體來(lái)說(shuō),采用奇異值分解(SVD)對(duì)權(quán)重矩陣進(jìn)行因式分解,成功地將一個(gè)包含16B個(gè)參數(shù)的大模型壓縮為12.3B,性能小幅度下降。TensorGPT引入了一種使用Tensor-Train Decomposition來(lái)壓縮embedding層的方法。每個(gè)token embedding都被視為矩陣乘積狀態(tài)(Matrix Product State, MPS),并以分布式方式高效計(jì)算。LoSparse結(jié)合了LRF和權(quán)值剪枝在LLM壓縮中的優(yōu)點(diǎn)。通過(guò)利用低秩近似,LoSparse降低了直接進(jìn)行模型修剪通常會(huì)丟失太多表達(dá)神經(jīng)元的風(fēng)險(xiǎn)。LPLR和ZeroQuant-V2都提出了對(duì)權(quán)矩陣進(jìn)行LRF和量化同時(shí)壓縮的方法。DSFormer提出將權(quán)重矩陣分解為半結(jié)構(gòu)化稀疏矩陣與一個(gè)小型密集型矩陣的乘積。ASVD設(shè)計(jì)了一個(gè)激活感知的奇異值分解方法。該方法包括在應(yīng)用奇異值分解進(jìn)行矩陣分解之前,根據(jù)激活分布縮放權(quán)重矩陣。ASVD還包括通過(guò)一個(gè)搜索進(jìn)程確定每個(gè)層的合適的截?cái)嘀取?/p>

5.2.4 知識(shí)蒸餾(Knowledge Distillation)

知識(shí)蒸餾(Knowledge Distillation, KD)是一種成熟的模型壓縮技術(shù),其中來(lái)自大型模型(稱(chēng)為teacher模型)的知識(shí)被轉(zhuǎn)移到較小的模型(稱(chēng)為student模型)。在大模型的背景下,KD使用原始的大模型作為teacher模型來(lái)提煉較小的大模型。目前許多研究都集中在如何有效地將大模型的各種能力轉(zhuǎn)移到更小的模型上。在這個(gè)領(lǐng)域,方法可以分為兩種主要類(lèi)型:白盒KD和黑盒KD(如圖12所示)。

21c01fe0-906f-11ef-a511-92fbcf53809c.png

圖12:白盒KD(左)與黑盒KD(右)示意圖

白盒KD(White-box KD):白盒KD指的是利用對(duì)teacher模型的結(jié)構(gòu)和參數(shù)的訪(fǎng)問(wèn)的蒸餾方法。這些方法使KD能夠有效地利用teacher模型的中間特征和輸出概率來(lái)增強(qiáng)student模型的性能。MiniLLM采用標(biāo)準(zhǔn)白盒KD方法,但將正向Kullback-Leibler divergence(KLD)替換為反向KLD。GKD引入了對(duì) on-policy數(shù)據(jù)的使用,其中包括由student模型本身生成的輸出序列,以進(jìn)一步蒸餾學(xué)生模型。該方法側(cè)重于使用這些策略數(shù)據(jù)來(lái)對(duì)齊teacher和student模型之間的輸出概率。TED提出了一種任務(wù)感知的層級(jí)別的方法,包括結(jié)合額外的檢索分層KD方法。這種方法包括在teacher和student模型的每一層之后添加過(guò)濾器,訓(xùn)練這些特定任務(wù)的過(guò)濾器,然后凍結(jié)teacher模型的過(guò)濾器,在訓(xùn)練student過(guò)濾器以使其輸出特征與相應(yīng)的teacher過(guò)濾器對(duì)齊時(shí)。MiniMoE通過(guò)使用混合專(zhuān)家(MoE)模型作為student模型來(lái)緩解能力差距。對(duì)于新出現(xiàn)的實(shí)體,預(yù)訓(xùn)練語(yǔ)言模型可能缺乏最新的信息。為了解決這個(gè)問(wèn)題,一種解決方案是將額外的檢索文本合并到提示中,盡管這會(huì)增加推理成本。另外,KPTD通過(guò)知識(shí)蒸餾將知識(shí)從實(shí)體定義轉(zhuǎn)移到大模型參數(shù)。該方法生成一個(gè)基于實(shí)體定義的傳輸集,并提取student模型,以便將輸出分布與基于這些定義的teacher模型相匹配。

黑盒KD(Black-box KD):黑盒KD是指teacher模型的結(jié)構(gòu)和參數(shù)不可獲取的知識(shí)蒸餾方法。通常,黑箱KD只使用teacher模型得到的最終結(jié)果來(lái)蒸餾student模型。在大模型領(lǐng)域,黑箱KD主要引導(dǎo)student模型學(xué)習(xí)大模型的泛化能力和涌現(xiàn)能力,包括InContext Learning (ICL)能力、 思維鏈(Chain-of-Thought, CoT)推理能力和Instruction Following (IF)能力。在ICL能力方面,Multitask-ICT引入了上下文學(xué)習(xí)蒸餾(in-context learning distillation)來(lái)轉(zhuǎn)移大模型的多任務(wù)few-shot能力,同時(shí)利用上下文學(xué)習(xí)和語(yǔ)言建模能力。MCKD觀察到,從通過(guò)語(yǔ)境學(xué)習(xí)得到的teacher模型中提煉出來(lái)的student模型,在看不見(jiàn)的輸入prompt上往往表現(xiàn)優(yōu)異?;谶@一觀察,MCKD設(shè)計(jì)了一個(gè)多階段蒸餾范式,其中使用前階段的student模型為后續(xù)階段生成蒸餾數(shù)據(jù),從而提高了蒸餾方法的有效性。為了提煉思維鏈(CoT)推理能力,諸如 Distilling Step-by-Step、SCoTD、CoT prompt、MCC-KD和Fine-tune-CoT等幾種技術(shù)提出了提煉方法,將從大模型中提取的反應(yīng)和基本原理結(jié)合起來(lái)訓(xùn)練student模型。 Socratic CoT也將推理能力轉(zhuǎn)移到較小的模型。具體來(lái)說(shuō),它對(duì)一對(duì)student模型進(jìn)行了微調(diào),即問(wèn)題生成(QG)模型和問(wèn)題回答(QA)模型。QG模型被訓(xùn)練成基于輸入問(wèn)題生成中間問(wèn)題,指導(dǎo)QA模型生成最終的回答。PaD觀察到錯(cuò)誤的推理(即正確的最終答案但錯(cuò)誤的推理步驟)可能對(duì)student模型有害。為了解決這個(gè)問(wèn)題,PaD建議生成合成程序用于推理問(wèn)題,然后由附加的解釋器自動(dòng)檢查。這種方法有助于去除帶有錯(cuò)誤推理的蒸餾數(shù)據(jù),提高student模型訓(xùn)練數(shù)據(jù)的質(zhì)量。

5.2.5 動(dòng)態(tài)推理

動(dòng)態(tài)推理涉及在推理過(guò)程中自適應(yīng)選擇模型子結(jié)構(gòu),其以輸入數(shù)據(jù)為條件。此小節(jié)重點(diǎn)介紹early exiting的技術(shù),這些技術(shù)使大模型能夠根據(jù)特定的樣本或token在不同的模型層停止其推理。值得注意的是,雖然MoE技術(shù)(在第5.1.1節(jié)中討論)也會(huì)在推理過(guò)程中調(diào)整模型結(jié)構(gòu),但它們通常涉及昂貴的預(yù)訓(xùn)練成本。相比之下,這些技術(shù)只需要訓(xùn)練一個(gè)小模塊來(lái)確定何時(shí)結(jié)束推理。本文將此類(lèi)研究分為兩大類(lèi):樣本級(jí)別的early exiting和token級(jí)別的early exiting(如圖13所示)。

21d6f94a-906f-11ef-a511-92fbcf53809c.png

圖13:token級(jí)別和樣本級(jí)別的動(dòng)態(tài)推理示意圖

樣本級(jí)別:樣本級(jí)別的early exiting技術(shù)側(cè)重于確定用于單個(gè)輸入樣本的大模型的最佳大小和結(jié)構(gòu)。一種常見(jiàn)的方法是在每一層之后使用額外的模塊來(lái)擴(kuò)展大模型,利用這些模塊來(lái)決定是否在特定層終止推理。FastBERT, DeeBERT, MP和MPEE直接訓(xùn)練這些模塊來(lái)根據(jù)當(dāng)前層的特征做出決策(例如,輸出0繼續(xù)或輸出1停止)。Global Past-Future Early Exit提出了一種方法,利用來(lái)自前一層和后一層的語(yǔ)言信息豐富這些模塊的輸入??紤]到在推理過(guò)程中不能直接訪(fǎng)問(wèn)未來(lái)層的特征,論文訓(xùn)練了一個(gè)簡(jiǎn)單的前饋層來(lái)估計(jì)這些未來(lái)特征。PABEE訓(xùn)練模塊來(lái)作為直接預(yù)測(cè)的輸出頭,建議在預(yù)測(cè)保持一致時(shí)終止推理。HASHEE采用了一種非參數(shù)決策方法,該方法基于相似樣本應(yīng)在同一層退出推理的假設(shè)。

Token級(jí)別:在大模型推理的decodig階段,依次生成token,token級(jí)別的early exiting技術(shù)旨在優(yōu)化用于每個(gè)輸出token的大模型的大小和結(jié)構(gòu)。CALM在每個(gè)Transformer層之后引入early exit分類(lèi)器,訓(xùn)練它們輸出置信度分?jǐn)?shù),以確定是否在特定層停止推理。值得注意的是,在self-attention模塊中,計(jì)算每層當(dāng)前token的特征依賴(lài)于同一層中所有先前token的特征(即KV cache)。為了解決由于先前token early exit而導(dǎo)致KV cache丟失的問(wèn)題,CALM建議直接將該特征從現(xiàn)有層復(fù)制到后續(xù)層,實(shí)驗(yàn)結(jié)果顯示只有輕微的性能下降。SkipDecode解決了先前早期存在的方法的局限性,這些方法阻礙了它們對(duì)批處理推理和KV cache的適用性,從而限制了實(shí)際的加速增益。對(duì)于批處理推理,SkipDecode為批處理中的所有token提出了一個(gè)統(tǒng)一的退出點(diǎn)。對(duì)于KV cache,SkipDecode確保了exit point的單調(diào)減少,以防止KV緩存的重新計(jì)算,從而促進(jìn)了推理過(guò)程中的效率提高。

5.3 認(rèn)識(shí),建議和未來(lái)方向

在高效結(jié)構(gòu)設(shè)計(jì)方面,尋找替代Transformer的結(jié)構(gòu)是一個(gè)新興的研究領(lǐng)域。例如,Mamba、RWKV及其各自的變種在各種任務(wù)中表現(xiàn)出了競(jìng)爭(zhēng)力,近年來(lái)引起了越來(lái)越多的關(guān)注。然而,調(diào)查這些非Transformer模型與Transformer模型相比是否會(huì)表現(xiàn)出某些缺點(diǎn)仍然是相關(guān)的。同時(shí),探索非transformer架構(gòu)與注意力操作的集成是未來(lái)另一個(gè)有希望的研究方向。

在模型壓縮領(lǐng)域,量化作為在大模型部署中使用的主要方法脫穎而出,主要是由于兩個(gè)關(guān)鍵因素。首先,量化提供了一種方便的壓縮大模型的方法。例如,使用Post-Training Quantization(PTQ)方法可以在幾分鐘內(nèi)將具有70億個(gè)參數(shù)的大模型的參數(shù)數(shù)分鐘內(nèi)減少到壓縮形式。其次,量化具有實(shí)現(xiàn)內(nèi)存消耗和推理速度大幅降低的潛力,同時(shí)只引入了很小的性能折損。對(duì)于許多實(shí)際應(yīng)用,這種折損通常被認(rèn)為是可以接受的。然而,值得注意的是,量化仍然可能會(huì)損害大模型的某些突發(fā)能力,例如自校準(zhǔn)或多步推理。此外,在處理長(zhǎng)上下文等特定場(chǎng)景中,量化可能導(dǎo)致顯著的性能下降。因此,在這些特殊情況下,需要仔細(xì)選擇適當(dāng)?shù)牧炕椒▉?lái)減輕這種退化的風(fēng)險(xiǎn)。大量文獻(xiàn)研究了稀疏注意力技術(shù)在長(zhǎng)上下文處理中的應(yīng)用。例如,最近的一項(xiàng)代表性工作StreamingLLM僅通過(guò)恢復(fù)幾個(gè)注意力匯token就可以處理400萬(wàn)個(gè)token。盡管如此,這些方法往往會(huì)犧牲關(guān)鍵信息,從而導(dǎo)致性能下降。因此,在有效管理長(zhǎng)上下文的同時(shí)保留基本信息的挑戰(zhàn)仍然是未來(lái)探索的一個(gè)重要領(lǐng)域。至于權(quán)值修剪技術(shù),LLM-KICK指出,即使在相對(duì)較低的稀疏度比下,當(dāng)前最先進(jìn)的(SOTA)方法也會(huì)出現(xiàn)相當(dāng)大的性能下降。因此,開(kāi)發(fā)有效的權(quán)值修剪方法來(lái)保持大模型性能仍然是一個(gè)新興和關(guān)鍵的研究方向。

模型結(jié)構(gòu)的優(yōu)化通常涉及使用神經(jīng)結(jié)構(gòu)搜索(NAS),這通常需要大量的計(jì)算資源,這對(duì)其在壓縮大模型中的實(shí)際應(yīng)用構(gòu)成了潛在的障礙。因此,相關(guān)研究采用自動(dòng)結(jié)構(gòu)優(yōu)化進(jìn)行大模型壓縮的可行性值得進(jìn)一步探索。此外,像低秩分解(LRF)這樣的技術(shù)在壓縮比和任務(wù)性能之間實(shí)現(xiàn)最佳平衡仍然是一個(gè)挑戰(zhàn)。例如,ASVD在不影響大模型推理能力的情況下,只能實(shí)現(xiàn)適度的10%到20%的壓縮比。

除了采用單獨(dú)的模型壓縮技術(shù)外,一些研究還探索了不同方法的組合來(lái)壓縮大模型,利用各自的優(yōu)勢(shì)來(lái)提高效率。例如,MPOE將權(quán)重矩陣分解專(zhuān)門(mén)應(yīng)用于基于MoE的大模型中的專(zhuān)家前饋網(wǎng)絡(luò)(FFNs),目的是進(jìn)一步降低內(nèi)存需求。LLM-MQ利用權(quán)值稀疏性技術(shù)在模型量化過(guò)程中保護(hù)權(quán)值異常值,從而最大限度地減少量化誤差。LPLR側(cè)重于量化低秩分解權(quán)重矩陣,以進(jìn)一步降低大模型推理過(guò)程中的內(nèi)存占用和內(nèi)存訪(fǎng)問(wèn)成本。此外,LoSparse將低秩分解與權(quán)值剪枝相結(jié)合,利用剪枝增強(qiáng)低秩近似的多樣性,同時(shí)利用低秩分解保留重要權(quán)值,防止關(guān)鍵信息丟失。這些方法強(qiáng)調(diào)了集成多種壓縮技術(shù)以更好地優(yōu)化大模型的潛力。

6 系統(tǒng)級(jí)別優(yōu)化

大模型推理的系統(tǒng)級(jí)優(yōu)化主要涉及增強(qiáng)模型前向傳遞??紤]到大模型的計(jì)算圖,存在多個(gè)算子,其中注意力算子和線(xiàn)性算子占據(jù)了大部分的運(yùn)行時(shí)間。如2.3節(jié)所述,系統(tǒng)級(jí)優(yōu)化主要考慮大模型中注意算子和解碼方法的獨(dú)特特征。特別是,為了解決大模型解碼方法的具體問(wèn)題,線(xiàn)性算子需要特殊的平鋪設(shè)計(jì),推測(cè)解碼方法也被提出以提高利用率。此外,在在線(xiàn)服務(wù)的上下文中,請(qǐng)求通常來(lái)自多個(gè)用戶(hù)。因此,除了前面討論的優(yōu)化之外,在線(xiàn)服務(wù)還面臨著與異步請(qǐng)求引起的內(nèi)存、批處理和調(diào)度相關(guān)的挑戰(zhàn)。

6.1 推理引擎

目前對(duì)推理引擎的優(yōu)化主要在于加速模型向前推理過(guò)程。對(duì)大模型推理中的主要算子和計(jì)算圖進(jìn)行了高度優(yōu)化。此外,為了在不降低性能的前提下提高推理速度,推測(cè)解碼技術(shù)也被提出。

6.1.1 圖和計(jì)算優(yōu)化

運(yùn)行時(shí)間分析:通過(guò)HuggingFace,作者用不同的模型和上下文長(zhǎng)度來(lái)分析推理運(yùn)行時(shí)間。圖15的分析結(jié)果表明,注意力計(jì)算和線(xiàn)性計(jì)算占據(jù)了運(yùn)行時(shí)間的絕大部分,它們通常超過(guò)推理持續(xù)時(shí)間的75%。因此,大部分優(yōu)化工作都致力于提高兩個(gè)操作的性能。此外,有多個(gè)操作符占用了一小部分運(yùn)行時(shí)間,這使得操作符的執(zhí)行時(shí)間支離破碎,增加了CPU端的內(nèi)核啟動(dòng)成本。為了解決這個(gè)問(wèn)題,在圖計(jì)算級(jí)別,當(dāng)前優(yōu)化的推理引擎實(shí)現(xiàn)了高度融合的算子。

注意力計(jì)算優(yōu)化:標(biāo)準(zhǔn)的注意力計(jì)算(例如,使用Pytorch)包含矩陣Q與矩陣(K)的乘法,這導(dǎo)致時(shí)間和空間復(fù)雜度與輸入序列長(zhǎng)度呈現(xiàn)二次增長(zhǎng)。如圖15所示,注意力計(jì)算操作的時(shí)間占比隨著上下文長(zhǎng)度的增加而增加。這意味著對(duì)內(nèi)存大小和計(jì)算能力的要求很高,特別是在處理長(zhǎng)序列時(shí)。為了解決GPU上標(biāo)準(zhǔn)注意力計(jì)算的計(jì)算和內(nèi)存開(kāi)銷(xiāo),定制化注意力計(jì)算是必不可少的。FlashAttention將整個(gè)注意力操作融合為一個(gè)單一的、內(nèi)存高效的操作,以減輕內(nèi)存訪(fǎng)問(wèn)開(kāi)銷(xiāo)。輸入矩陣(Q, K, V)和注意力矩陣被平鋪成多個(gè)塊,從而消除了完整數(shù)據(jù)加載的需要。FlashDecoding建立在Flash Attention的基礎(chǔ)上,旨在最大限度地提高解碼的計(jì)算并行性。由于譯碼方法的應(yīng)用,Q矩陣在decoding過(guò)程中會(huì)退化為一批向量,如果并行度僅限于batch大小維度,則很難填充計(jì)算單元。FlashDecoding通過(guò)在序列維度上引入并行計(jì)算來(lái)解決這個(gè)問(wèn)題。雖然這會(huì)給softmax計(jì)算帶來(lái)一些同步開(kāi)銷(xiāo),但它會(huì)顯著提高并行性,特別是對(duì)于小批量大小和長(zhǎng)序列。隨后的工作FlashDecoding++觀察到,在之前的工作中,softmax內(nèi)的最大值僅作為防止數(shù)據(jù)溢出的比例因子。然而,動(dòng)態(tài)最大值會(huì)導(dǎo)致顯著的同步開(kāi)銷(xiāo)。此外,大量實(shí)驗(yàn)表明,在典型的大模型(如Llama2, ChatGLM)中,超過(guò)99.99%的softmax輸入在一定范圍內(nèi)。因此,F(xiàn)lashDecoding++提出基于統(tǒng)計(jì)數(shù)據(jù)提前確定比例因子。這消除了softmax計(jì)算中的同步開(kāi)銷(xiāo),使后續(xù)操作能夠在softmax計(jì)算的同時(shí)并行執(zhí)行。

線(xiàn)性計(jì)算優(yōu)化:線(xiàn)性算子在大模型推理、特征投影和前饋神經(jīng)網(wǎng)絡(luò)(FFN)中發(fā)揮著關(guān)鍵作用。在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,線(xiàn)性算子可以抽象為通用矩陣-矩陣乘法(General Matrix-Matrix Multiplication, GEMM)運(yùn)算。然而,對(duì)于大模型,decoding方法的應(yīng)用導(dǎo)致維度的明顯降低,與傳統(tǒng)的GEMM工作負(fù)載不同。傳統(tǒng)GEMM的底層實(shí)現(xiàn)得到了高度優(yōu)化,主流大模型推理框架(例如,DeepSpeed , vLLM, OpenPPL等)主要調(diào)用cuBLAS為線(xiàn)性算子提供的GEMM API接口

如果沒(méi)有針對(duì)降低維數(shù)的GEMM明確定制的實(shí)現(xiàn),decoding過(guò)程中的線(xiàn)性計(jì)算將會(huì)效率低下。在最新版本的TensorRT-LLM中可以觀察到解決該問(wèn)題的issue。它引入了專(zhuān)用的通用矩陣向量乘法(General Matrix-Vector Multiplication, GEMV)實(shí)現(xiàn),潛在地提高了decoding步驟的效率。最近的研究FlashDecoding++做了進(jìn)一步的改進(jìn),在解碼步驟中處理小批量數(shù)據(jù)時(shí),解決了cuBLAS和CUTLASS庫(kù)的低效率問(wèn)題。該研究的作者首先引入了FlatGEMM操作的概念,以高度降低的維度(FlashDecoding++中的維數(shù)< 8)來(lái)表示GEMM的工作負(fù)載。由于FlatGEMM具有新的計(jì)算特性,傳統(tǒng)GEMM的平鋪策略需要進(jìn)行修改。作者觀察到,隨著工作負(fù)載的變化,存在兩個(gè)問(wèn)題:低并行性和內(nèi)存訪(fǎng)問(wèn)瓶頸。

為了解決這些問(wèn)題,F(xiàn)lashDecoding++采用了細(xì)粒度平鋪策略來(lái)提高并行性,并利用雙緩沖技術(shù)來(lái)隱藏內(nèi)存訪(fǎng)問(wèn)延遲。此外,當(dāng)前經(jīng)典大模型(例如,Llama2, ChatGLM)中的線(xiàn)性操作通常具有固定的形狀,F(xiàn)lashDecoding++建立了啟發(fā)式選擇機(jī)制。這個(gè)機(jī)制根據(jù)輸入大小在不同的線(xiàn)性運(yùn)算符之間進(jìn)行動(dòng)態(tài)地選擇轉(zhuǎn)換。這些選項(xiàng)包括FastGEMV、FlatGEMM和由cuBLAS庫(kù)提供的GEMM。這種方法確保為給定的線(xiàn)性工作負(fù)載選擇最有效的計(jì)算操作,從而可能導(dǎo)致更好的端到端性能。

近年來(lái),應(yīng)用MoE FFN來(lái)增強(qiáng)模型能力已成為大模型研究的一種趨勢(shì)。這種模型結(jié)構(gòu)也對(duì)算子優(yōu)化提出了新的要求。如圖15所示,在具有MoE FFN的Mixtral模型中,由于HuggingFace實(shí)現(xiàn)中未優(yōu)化FFN計(jì)算,線(xiàn)性算子在運(yùn)行時(shí)占主導(dǎo)地位。此外,Mixtral采用了GQA注意結(jié)構(gòu),其降低了注意力算子的運(yùn)行時(shí)間比例,進(jìn)一步指出了對(duì)優(yōu)化FFN層迫切需要。MegaBlocks是第一個(gè)針對(duì)MoE FFN層優(yōu)化計(jì)算的算法。該工作將MoE FFN計(jì)算制定為塊稀疏操作,并提出了用于加速的定制GPU內(nèi)核。MegaBlocks專(zhuān)注于MoE模型的有效訓(xùn)練,因此忽略了推理的特征(例如,解碼方法)?,F(xiàn)有框架正在努力優(yōu)化MoE FFN推理階段的計(jì)算。vLLM的官方在Triton中集成了MoE FFN的融合內(nèi)核,無(wú)縫地消除了索引開(kāi)銷(xiāo)。

21e0c6a0-906f-11ef-a511-92fbcf53809c.png

圖14:大模型推理引擎優(yōu)化分類(lèi)

21fc1da6-906f-11ef-a511-92fbcf53809c.png

圖15:多個(gè)大模型的推理運(yùn)行時(shí)間分析

圖級(jí)別的優(yōu)化:核融合作為一種流行的圖級(jí)優(yōu)化脫穎而出,因?yàn)樗軌驕p少運(yùn)行時(shí)間。應(yīng)用核融合有三個(gè)主要優(yōu)點(diǎn):(1)減少內(nèi)存訪(fǎng)問(wèn)。融合內(nèi)核從本質(zhì)上消除了中間結(jié)果的內(nèi)存訪(fǎng)問(wèn),減輕了計(jì)算操作的內(nèi)存瓶頸。(2)減輕內(nèi)核啟動(dòng)開(kāi)銷(xiāo)。對(duì)于一些輕量級(jí)操作(如殘差add),內(nèi)核啟動(dòng)時(shí)間占據(jù)了大部分延遲,內(nèi)核融合減少了單個(gè)內(nèi)核的啟動(dòng)。(3)增強(qiáng)并行性。對(duì)于那些沒(méi)有數(shù)據(jù)依賴(lài)的運(yùn)算符,當(dāng)單個(gè)內(nèi)核執(zhí)行無(wú)法填充硬件容量時(shí),通過(guò)融合實(shí)現(xiàn)內(nèi)核并行是有益的。

核融合技術(shù)被證明對(duì)大模型推理是有效的,具有上述所有優(yōu)點(diǎn)。FlashAttention將注意力運(yùn)算符表述成一個(gè)單一的內(nèi)核,消除了訪(fǎng)問(wèn)注意力結(jié)果的開(kāi)銷(xiāo)?;谧⒁饬λ阕邮莾?nèi)存有限的這一事實(shí),內(nèi)存訪(fǎng)問(wèn)的減少能有效地轉(zhuǎn)化為運(yùn)行時(shí)加速。ByteTransformer和DeepSpeed提出將包括殘差加法、層模和激活函數(shù)在內(nèi)的輕量級(jí)算子融合到前線(xiàn)性算子中,以減少內(nèi)核啟動(dòng)開(kāi)銷(xiāo)。

和DeepSpeed[236]提出將包括殘差add、layernorm和激活函數(shù)在內(nèi)的輕量級(jí)算子融合到前面的線(xiàn)性算子中,以減少內(nèi)核啟動(dòng)開(kāi)銷(xiāo)。因此,這些輕量級(jí)操作符在時(shí)間軸上消失,幾乎沒(méi)有額外的延遲。此外,還采用核融合來(lái)提高大模型推理的利用率。Q、K和V矩陣的投影變換原本是三個(gè)單獨(dú)的線(xiàn)性運(yùn)算,并融合成一個(gè)線(xiàn)性運(yùn)算符部署在現(xiàn)代GPU上。目前,核融合技術(shù)已經(jīng)應(yīng)用于大模型推理實(shí)踐中,高度優(yōu)化的推理引擎在運(yùn)行時(shí)只使用少數(shù)融合核。例如,在FlashDecoding++實(shí)現(xiàn)中,一個(gè)transformer塊僅集成了七個(gè)融合的內(nèi)核。利用上述運(yùn)算符和內(nèi)核融合優(yōu)化,F(xiàn)lashDecoding++實(shí)現(xiàn)了在HuggingFace高達(dá)4.86倍的加速。

6.1.2 推測(cè)解碼

推測(cè)解碼(如投機(jī)采樣)是一種用于自回歸大模型的創(chuàng)新解碼技術(shù),旨在提高解碼效率,同時(shí)不影響輸出的質(zhì)量。這種方法的核心思想包括使用一個(gè)較小的模型(稱(chēng)為草稿模型)來(lái)有效地預(yù)測(cè)幾個(gè)后續(xù)token,然后使用目標(biāo)大模型并行驗(yàn)證這些預(yù)測(cè)。該方法旨在使大模型能夠在單個(gè)推理通常所需的時(shí)間范圍內(nèi)生成多個(gè)token。圖16顯示了傳統(tǒng)自回歸解碼方法與推測(cè)解碼方法的比較。理論上,推測(cè)解碼方法包括兩個(gè)步驟:

1)草稿構(gòu)建:采用草稿模型,以并行或自回歸的方式生成多個(gè)后續(xù)token,即Draft token。2)草案驗(yàn)證:利用目標(biāo)模型在單個(gè)大模型推理步驟中計(jì)算所有草稿token的條件概率,隨后依次確定每個(gè)草稿token的接受程度。接受率表示每個(gè)推理步驟接受的草稿token的平均數(shù)量,是評(píng)估推測(cè)解碼算法性能的關(guān)鍵指標(biāo)。

220a524a-906f-11ef-a511-92fbcf53809c.png

圖16:自回歸解碼(a)和推測(cè)解碼(b)對(duì)比

推測(cè)解碼確保了輸出與自回歸解碼方法的質(zhì)量對(duì)等。傳統(tǒng)解碼技術(shù)主要使用兩個(gè)采樣方法:greedy sampling和 nucleus sampling。greedy sampling涉及在每個(gè)解碼步驟中選擇概率最高的令牌來(lái)生成特定的輸出序列。推測(cè)解碼的最初工作,被稱(chēng)為Blockwise Parallel Decoding,旨在確保草草稿token與通過(guò)greedy sampling的token實(shí)現(xiàn)精確匹配,從而保持輸出令牌等價(jià)。相比之下,nucleus sampling涉及從概率分布中抽樣token,每次運(yùn)行都會(huì)產(chǎn)生不同的token序列。這種多樣性使得nucleus sampling很受歡迎。為了在推測(cè)解碼框架內(nèi)容納nucleus sampling,已經(jīng)提出了投機(jī)采樣技術(shù)。投機(jī)采樣保持輸出分布不變,與nucleus sampling的概率性質(zhì)一致,以產(chǎn)生不同的標(biāo)記序列。形式上,給定一個(gè)token序列和一個(gè)草稿token序列,投機(jī)采樣策略以以下概率接受第i個(gè)草稿token:

其中和分別代表來(lái)自目標(biāo)大模型和草稿模型的概率分布。如果第個(gè)token被接受,它設(shè)定為。另外,它退出草稿token的驗(yàn)證,并從下面的分布中進(jìn)行的重采樣:

基于投機(jī)采樣,出現(xiàn)了幾種變體,旨在驗(yàn)證多個(gè)草稿token序列。值得注意的是,在這種情況下,token tree verfier已成為一種廣泛采用的驗(yàn)證策略。這種方法利用草稿token集的樹(shù)狀結(jié)構(gòu)表示,并采用樹(shù)注意力機(jī)制來(lái)有效地執(zhí)行驗(yàn)證過(guò)程。

在推測(cè)解碼方法中,草稿token的接受率受到草稿模型的輸出分布與原始大模型的輸出分布的一致程度的顯著影響。因此,大量的研究工作都是為了改進(jìn)草稿模型。DistillSpec直接從目標(biāo)大模型中提取較小的草稿模型。SSD包括從目標(biāo)大模型中自動(dòng)識(shí)別子模型(模型層的子集)作為草稿模型,從而消除了對(duì)草稿模型進(jìn)行單獨(dú)訓(xùn)練的需要。OSD動(dòng)態(tài)調(diào)整草稿模型的輸出分布,以匹配在線(xiàn)大模型服務(wù)中的用戶(hù)查詢(xún)分布。它通過(guò)監(jiān)視來(lái)自大模型的被拒絕的草稿token,并使用該數(shù)據(jù)通過(guò)蒸餾來(lái)改進(jìn)草稿模型來(lái)實(shí)現(xiàn)這一點(diǎn)。PaSS提出利用目標(biāo)大模型本身作為草稿模型,將可訓(xùn)練的token(look -ahead token)作為輸入序列,以同時(shí)生成后續(xù)token。REST引入了一種基于檢索的推測(cè)解碼方法,采用非參數(shù)檢索數(shù)據(jù)存儲(chǔ)作為草稿模型。SpecInfer引入了一種集體提升調(diào)優(yōu)技術(shù)來(lái)對(duì)齊一組草稿模型的輸出分布通過(guò)目標(biāo)大模型。Lookahead decoding 包含大模型生成并行的生成n-grams來(lái)生成草稿token。Medusa對(duì)大模型的幾個(gè)頭進(jìn)行微調(diào),專(zhuān)門(mén)用于生成后續(xù)的草稿token。Eagle采用一種稱(chēng)為自回歸頭的輕量級(jí)Transformer層,以自回歸的方式生成草稿token,將目標(biāo)大模型的豐富上下文特征集成到草稿模型的輸入中。

另一項(xiàng)研究側(cè)重于設(shè)計(jì)更有效的草稿構(gòu)建策略。傳統(tǒng)的方法通常產(chǎn)生單一的草稿token序列,這對(duì)通過(guò)驗(yàn)證提出了挑戰(zhàn)。對(duì)此,Spectr主張生成多個(gè)草稿token序列,并采用k-sequential草稿選擇技術(shù)并發(fā)驗(yàn)證k個(gè)序列。該方法利用推測(cè)抽樣,確保輸出分布的一致性。類(lèi)似地,SpecInfer采用了類(lèi)似的方法。然而,與Spectr不同的是,SpecInfer將草稿token序列合并到一個(gè)“token tree”中,并引入了一個(gè)用于驗(yàn)證的樹(shù)形注意力機(jī)制。這種策略被稱(chēng)為“token tree verifier”。由于其有效性,token tree verifier在眾多推測(cè)解碼算法中被廣泛采用。除了這些努力之外,Stage Speculative Decoding和Cascade Speculative Drafting(CS Drafting)建議通過(guò)將投機(jī)解碼直接集成到token生成過(guò)程中來(lái)加速草稿構(gòu)建。

對(duì)比實(shí)驗(yàn)與分析:論文作者通過(guò)實(shí)驗(yàn)來(lái)評(píng)估推測(cè)解碼方法的加速性能。具體來(lái)說(shuō),作者對(duì)該領(lǐng)域的研究進(jìn)行了全面的回顧,并選擇了其中6個(gè)已經(jīng)開(kāi)源的代碼進(jìn)行研究,分別是:Speculative Decoding (SpD)、Lookahead Decoding (LADE)、REST、Self-speculative Decoding (SSD)、Medusa和Eagle。對(duì)于評(píng)估數(shù)據(jù)集,使用Vicuna-80對(duì)上述方法進(jìn)行評(píng)估,該數(shù)據(jù)集包含80個(gè)問(wèn)題,分為10類(lèi)。這80個(gè)問(wèn)題的平均結(jié)果作為輸出。對(duì)于目標(biāo)大模型,作者采用了五個(gè)主流的開(kāi)源大模型,分別是Vicuna-7B-V1.3、Vicuna-13B-V1.3、Vicuna-33B-V1.3、LLaMA-2-7B和LLaMA-2-13B。作者展示了這5個(gè)大模型的評(píng)估指標(biāo)范圍。對(duì)于草稿模型,作者對(duì)SpD采用了兩個(gè)個(gè)訓(xùn)練好的草稿模型,即LLaMA-68M和LLaMA-160M。對(duì)于其他推測(cè)解碼方法,作者遵循它們提出的草稿構(gòu)建方法和使用他們提供的權(quán)重。在評(píng)價(jià)指標(biāo)方面,作者使用接受率和加速率,接受率是指接受token數(shù)與生成步數(shù)之比,加速比是指在確定輸出總長(zhǎng)度時(shí),原始自回歸解碼的延遲與推測(cè)解碼的延遲之比。

表5提供了各種推測(cè)解碼方法的比較,突出了幾個(gè)關(guān)鍵觀察結(jié)果:(1) Eagle表現(xiàn)出優(yōu)異的性能,在多個(gè)大模型上實(shí)現(xiàn)了3.47~3.72倍的端到端加速。為了理解它的成功,作者對(duì)Eagle的深入分析揭示了兩個(gè)關(guān)鍵因素。首先,Eagle采用自回歸方法來(lái)解碼草稿token,直接利用先前生成的token的信息。其次,Eagle集成了原始大模型和草案模型的先前token的豐富特征,以提高下一個(gè)草稿token生成的準(zhǔn)確性。(2) token tree verifier被證明在提升投機(jī)采樣方法的性能中是有效的。(3)這些方法實(shí)現(xiàn)的端到端加速往往低于接受率。這種差異是由于與草稿模型相關(guān)的生成成本不可忽視的實(shí)際考慮而產(chǎn)生的。

22182df2-906f-11ef-a511-92fbcf53809c.png

表5:實(shí)驗(yàn)結(jié)果

6.2 推理服務(wù)系統(tǒng)

推理服務(wù)系統(tǒng)的優(yōu)化主要在于提高處理異步請(qǐng)求的效率。優(yōu)化了內(nèi)存管理以容納更多的請(qǐng)求,并集成了高效的批處理和調(diào)度策略以提高系統(tǒng)吞吐量。此外,提出了針對(duì)分布式系統(tǒng)的優(yōu)化方法,以充分利用分布式計(jì)算資源。

2232dc2e-906f-11ef-a511-92fbcf53809c.png

圖17:推理服務(wù)系統(tǒng)分類(lèi)圖

6.2.1內(nèi)存管理

在大模型服務(wù)中,KV緩存的存儲(chǔ)決定了內(nèi)存的使用,特別是當(dāng)上下文長(zhǎng)度很長(zhǎng)時(shí)(參見(jiàn)第2.3節(jié))。由于生成長(zhǎng)度不確定,提前分配KV cache存儲(chǔ)空間很難。早期的實(shí)現(xiàn)通常根據(jù)每個(gè)請(qǐng)求的預(yù)設(shè)最大長(zhǎng)度預(yù)先分配存儲(chǔ)空間。但是,在終止請(qǐng)求生成的時(shí),這種方法會(huì)導(dǎo)致存儲(chǔ)資源的大量浪費(fèi)。為了解決這個(gè)問(wèn)題,為了減少預(yù)分配空間的浪費(fèi),提出了為每個(gè)請(qǐng)求預(yù)測(cè)生成長(zhǎng)度的上界。

但是,當(dāng)不存在如此大的連續(xù)空間時(shí),靜態(tài)的KV緩存分配方式仍然是失敗的。為了應(yīng)對(duì)碎片化存儲(chǔ),vLLM提出以操作系統(tǒng)的樣式,以分頁(yè)的方式存儲(chǔ)KV緩存。vLLM首先分配盡可能大的內(nèi)存空間,并將其平均劃分為多個(gè)物理塊。當(dāng)請(qǐng)求來(lái)臨時(shí),vLLM以不連續(xù)的方式動(dòng)態(tài)地將生成的KV緩存映射到預(yù)分配的物理塊。通過(guò)這種方式,vLLM顯著減少了存儲(chǔ)碎片,并在大模型服務(wù)中實(shí)現(xiàn)了更高的吞吐量。在vLLM的基礎(chǔ)上,LightLLM使用了更細(xì)粒度的KV緩存存儲(chǔ),減少了不規(guī)則邊界產(chǎn)生的浪費(fèi)。LightLLM將token的KV緩存作為一個(gè)單元來(lái)處理,而不是一個(gè)塊,因此生成的KV緩存總是使預(yù)分配的空間飽和。

當(dāng)前優(yōu)化的推理服務(wù)系統(tǒng)通常采用這種分頁(yè)方式來(lái)管理KV緩存存儲(chǔ),從而減少冗余KV緩存的浪費(fèi)。然而,分頁(yè)存儲(chǔ)導(dǎo)致注意力操作中的內(nèi)存訪(fǎng)問(wèn)不規(guī)則。對(duì)于使用分頁(yè)KV緩存的注意力算子,這就需要考慮KV緩存的虛擬地址空間與其對(duì)應(yīng)的物理地址空間之間的映射關(guān)系。為了提高注意力算子的計(jì)算效率,必須對(duì)KV緩存的加載模式進(jìn)行調(diào)整,以方便連續(xù)存儲(chǔ)器訪(fǎng)問(wèn)。例如,在vLLM的PagedAttention中,對(duì)于K cache,head大小維度的存儲(chǔ)結(jié)構(gòu)為16字節(jié)的連續(xù)向量,而FlashInfer為KV緩存編排了各種數(shù)據(jù)布局,并伴隨著適當(dāng)設(shè)計(jì)的內(nèi)存訪(fǎng)問(wèn)方案。注意力算子的優(yōu)化與頁(yè)面KV緩存存儲(chǔ)的結(jié)合仍然是推理服務(wù)系統(tǒng)發(fā)展中的一個(gè)前沿挑戰(zhàn)。

6.2.2 連續(xù)批處理

批處理中的請(qǐng)求長(zhǎng)度可能不同,當(dāng)較短的請(qǐng)求完成而較長(zhǎng)的請(qǐng)求仍在運(yùn)行時(shí),會(huì)導(dǎo)致利用率較低。由于服務(wù)場(chǎng)景中的請(qǐng)求具有異步特性,因此緩解這種低利用率的時(shí)間段是有可能的?;诖?,連續(xù)批處理技術(shù)被提出,以便在一些舊請(qǐng)求完成后對(duì)新請(qǐng)求進(jìn)行批處理。ORCA是在大模型服務(wù)端第一個(gè)這樣做的工作。

每個(gè)請(qǐng)求的計(jì)算包含多個(gè)迭代,每個(gè)迭代表示預(yù)填充步驟或解碼步驟。作者建議可以在迭代級(jí)別對(duì)不同的請(qǐng)求進(jìn)行批處理。此工作在線(xiàn)性操作符中實(shí)現(xiàn)迭代級(jí)批處理,在序列維度中將不同的請(qǐng)求連接在一起。因此,與完成的請(qǐng)求相對(duì)應(yīng)的備用存儲(chǔ)和計(jì)算資源被及時(shí)釋放。繼ORCA之后,vLLM將該技術(shù)擴(kuò)展到注意力計(jì)算,使不同KV緩存長(zhǎng)度的請(qǐng)求能夠批處理在一起。Sarathi、DeepSpeed-FastGen和SarathiServe進(jìn)一步引入了一種split-and-fuse方法,將預(yù)填充請(qǐng)求和解碼請(qǐng)求批處理在一起。具體來(lái)說(shuō),此方法首先在序列維度上拆分長(zhǎng)預(yù)填充請(qǐng)求,然后將其與多個(gè)短解碼請(qǐng)求批處理在一起。該方法平衡了不同迭代之間的工作負(fù)載,并通過(guò)消除新請(qǐng)求的延遲顯著減少了尾部延遲。LightLLM也采用了split-and-fuse方法。

6.2.3 Scheduling技術(shù)

在大模型服務(wù)中,每個(gè)請(qǐng)求的作業(yè)長(zhǎng)度具有可變性,因此執(zhí)行請(qǐng)求的順序會(huì)顯著影響服務(wù)系統(tǒng)的吞吐量。head-of-line blocking發(fā)生在長(zhǎng)請(qǐng)求被賦予優(yōu)先級(jí)時(shí)。具體來(lái)說(shuō),對(duì)于長(zhǎng)請(qǐng)求,內(nèi)存使用會(huì)迅速增長(zhǎng),當(dāng)系統(tǒng)內(nèi)存容量耗盡時(shí),會(huì)導(dǎo)致后續(xù)請(qǐng)求受阻。ORCA和開(kāi)源框架,包括vLLM和LightLLM,采用簡(jiǎn)單的先到先服務(wù)(FCFS)原則來(lái)調(diào)度請(qǐng)求。DeepSpeed-FastGen則優(yōu)先考慮解碼請(qǐng)求以提高性能。FastServe提出了一種搶占式調(diào)度策略來(lái)優(yōu)化排隊(duì)阻塞問(wèn)題,實(shí)現(xiàn)大模型服務(wù)的低作業(yè)完成時(shí)間(JCT)。FastServe采用多級(jí)反饋隊(duì)列(MLFQ)來(lái)優(yōu)先處理剩余時(shí)間最短的請(qǐng)求。由于自動(dòng)回歸解碼方法會(huì)產(chǎn)生未知的請(qǐng)求長(zhǎng)度,F(xiàn)astServe首先預(yù)測(cè)長(zhǎng)度,并利用跳過(guò)連接方式為每個(gè)請(qǐng)求找到適當(dāng)?shù)膬?yōu)先級(jí)。與以往的工作不同,VTC討論了大模型推理服務(wù)中的公平性。VTC引入了一個(gè)基于token數(shù)的成本函數(shù)來(lái)衡量客戶(hù)端之間的公平性,并進(jìn)一步提出了一個(gè)公平調(diào)度程序來(lái)確保公平性。

6.2.4 分布式系統(tǒng)

為了實(shí)現(xiàn)高吞吐量,大模型服務(wù)通常部署在分布式平臺(tái)上。最近的工作還側(cè)重于通過(guò)利用分布式特征來(lái)優(yōu)化此類(lèi)推理服務(wù)的性能。值得注意的是,預(yù)填充是計(jì)算密集型的,解碼是內(nèi)存密集型的,splitwise, TetriInfer和DistServe證明了分解請(qǐng)求的預(yù)填充和解碼步驟的效率。這樣,兩個(gè)不同的階段就可以根據(jù)各自的特點(diǎn)進(jìn)行獨(dú)立的處理。SpotServe設(shè)計(jì)用于在具有可搶占GPU實(shí)例的云上提供大模型服務(wù)。SpotServe有效地處理包括動(dòng)態(tài)并行控制和實(shí)例遷移在內(nèi)的挑戰(zhàn),并且還利用大模型的自回歸特性來(lái)實(shí)現(xiàn)token級(jí)別的狀態(tài)恢復(fù)。此外,Infinite-LLM將vLLM中的分頁(yè)KV緩存方法擴(kuò)展到分布式云環(huán)境。

6.3 硬件加速器設(shè)計(jì)

過(guò)去的研究工作集中在優(yōu)化Transformer架構(gòu),特別是優(yōu)化注意力算子,通常采用稀疏方法來(lái)促進(jìn)FPGA部署。與NVIDIA V100 GPU相比,F(xiàn)ACT加速器通過(guò)線(xiàn)性運(yùn)算的混合精度量化和算法-硬件協(xié)同設(shè)計(jì)實(shí)現(xiàn)了卓越的能效,而且這些方法不是為生成式大模型量身定制的。

近期的工作,如ALLO突出了FPGA在管理內(nèi)存密集型解碼階段方面的優(yōu)勢(shì)。強(qiáng)調(diào)了模型壓縮技術(shù)對(duì)大模型高效FPGA部署的重要性。相反,DFX側(cè)重于解碼階段優(yōu)化,但缺少模型壓縮方法,限制了可擴(kuò)展性在更大的模型和更長(zhǎng)的輸入(最多1.5B模型和256個(gè)token)。ALLO建立在這些見(jiàn)解的基礎(chǔ)上,進(jìn)一步提供了一個(gè)可組合和可重用的高級(jí)合成(High-level Synthesis, HLS)內(nèi)核庫(kù)。與DFX相比,ALLO的實(shí)現(xiàn)在預(yù)填充階段展示了卓越的生成加速,在解碼期間實(shí)現(xiàn)了比NVIDIA A100 GPU更高的能效和加速。

FlightLLM也利用了這些見(jiàn)解,引入了一個(gè)可配置的稀疏數(shù)字信號(hào)處理器(DSP)鏈,用于各種具有高計(jì)算效率的稀疏模式。為了提高存儲(chǔ)帶寬利用率,提出了一種支持混合精度的片上譯碼方案。FlightLLM在Llama2-7B型號(hào)上實(shí)現(xiàn)了比NVIDIA V100S GPU高6.0倍的能效和1.8倍的成本效益,解碼時(shí)的吞吐量比NVIDIA A100 GPU高1.2倍。

6.4 大模型推理框架對(duì)比

作者對(duì)比了多個(gè)推理框架的性能,如表6所示。使用Llama2-7B(batch size=1,輸入長(zhǎng)度=1k,輸出長(zhǎng)度=128)測(cè)量推理吞吐量。推理服務(wù)性能是在ShareGPT數(shù)據(jù)集上測(cè)量的最大吞吐量。兩者都基于單個(gè)NVIDIA A100 80GB GPU。在上述框架中,DeepSpeed、vLLM、LightLLM和TensorRT-LLM集成了推理服務(wù)功能,為來(lái)自多個(gè)用戶(hù)的異步請(qǐng)求提供服務(wù)。作者還在表格中列出了每個(gè)框架的優(yōu)化。作者還在表中列出了針對(duì)每個(gè)框架的優(yōu)化。除了HuggingFace外,所有框架都實(shí)現(xiàn)了operator級(jí)別或圖優(yōu)化級(jí)別的優(yōu)化以提高性能,其中一些框架還支持推測(cè)解碼技術(shù)。請(qǐng)注意,作者測(cè)量所有框架的推理性能時(shí),沒(méi)有使用推測(cè)解碼技術(shù)。推理吞吐量的結(jié)果表明,F(xiàn)lashDecoding++和TensorRT-LLM在覆蓋主要算子和計(jì)算圖的優(yōu)化方面優(yōu)于其他算法。在推理服務(wù)方面,各框架均采用細(xì)粒度、不連續(xù)存儲(chǔ)方式進(jìn)行KV緩存,并采用連續(xù)批處理技術(shù)提高系統(tǒng)利用率。與vLLM和LightLLM不同,DeepSpeed在調(diào)度中優(yōu)先考慮解碼請(qǐng)求,這意味著如果批處理中有足夠的現(xiàn)有解碼請(qǐng)求,則不會(huì)合并新請(qǐng)求。

224f52c8-906f-11ef-a511-92fbcf53809c.png

表6:開(kāi)源推理框架性能對(duì)比

6.5 認(rèn)識(shí),建議和未來(lái)方向

系統(tǒng)級(jí)優(yōu)化在不降低精度的同時(shí)提高了效率,因此在大模型推理實(shí)踐中越來(lái)越普遍。對(duì)推理的優(yōu)化也適用于服務(wù)。最近,operator優(yōu)化已經(jīng)與實(shí)際服務(wù)場(chǎng)景緊密結(jié)合,例如,專(zhuān)門(mén)為前綴緩存設(shè)計(jì)的RadixAttention和加速推測(cè)解碼驗(yàn)證的tree attention。應(yīng)用和場(chǎng)景的迭代將不斷對(duì)operator的發(fā)展提出新的要求。

考慮到實(shí)際推理服務(wù)系統(tǒng)中固有的多方面目標(biāo),例如JCT、系統(tǒng)吞吐量和公平性,調(diào)度策略的設(shè)計(jì)相應(yīng)地變得復(fù)雜。在請(qǐng)求長(zhǎng)度不確定的大模型服務(wù)領(lǐng)域,現(xiàn)有文獻(xiàn)通常依賴(lài)于預(yù)測(cè)機(jī)制來(lái)促進(jìn)調(diào)度策略的設(shè)計(jì)。然而,目前的預(yù)測(cè)器的有效性達(dá)不到理想的標(biāo)準(zhǔn),這表明在服務(wù)調(diào)度策略開(kāi)發(fā)中存在改進(jìn)和優(yōu)化的潛力。

7 關(guān)鍵應(yīng)用場(chǎng)景討論

目前的研究在探索跨各種優(yōu)化級(jí)別的高效大模型推理的邊界方面取得了重大進(jìn)展。然而,需要進(jìn)一步的研究來(lái)提高大模型在實(shí)際場(chǎng)景中的效率。作者為數(shù)據(jù)級(jí)(第4.3節(jié))、模型級(jí)(第5.3節(jié))和系統(tǒng)級(jí)(第6.5節(jié))的優(yōu)化技術(shù)分析了有希望的未來(lái)方向。在本節(jié)中,作者總結(jié)了四個(gè)關(guān)鍵場(chǎng)景:Agent and Multi-Model Framework、Long-Context LLMs、Edge Scenario Deployment和安Security-Efficiency Synergy,并對(duì)它們進(jìn)行了更廣泛的討論。

Agent and Multi-Model Framework:如4.3章所討論,Agent 和Multi-Model框架的最近工作,通過(guò)利用大模型的強(qiáng)大能力,顯著提高了Agent處理復(fù)雜任務(wù)和人類(lèi)請(qǐng)求的能力。這些框架在增加大模型計(jì)算需求的同時(shí),在大模型輸出內(nèi)容的結(jié)構(gòu)中引入了更多的并行性,從而為數(shù)據(jù)級(jí)和系統(tǒng)級(jí)優(yōu)化(如輸出組織技術(shù))創(chuàng)造了機(jī)會(huì)。此外,這些框架自然地引入了一個(gè)新的優(yōu)化級(jí)別,即pipeline級(jí)別,它具有在該級(jí)別上提高效率的潛力。

此外,越來(lái)越多的研究趨勢(shì)側(cè)重于將AI智能體擴(kuò)展到多模態(tài)領(lǐng)域,通常使用多模態(tài)大模型(Large multimodal Models, LMM)作為這些Agent系統(tǒng)的核心。為了提高這些新興的基于LMM的智能體的效率,為L(zhǎng)MM設(shè)計(jì)優(yōu)化技術(shù)是一個(gè)很有前途的研究方向。

Long-Context LLMs:目前,大模型面臨著處理越來(lái)越長(zhǎng)的輸入上下文的挑戰(zhàn)。然而,自注意力操作(Transformer-style大模型的基本組成部分)表現(xiàn)出與上下文長(zhǎng)度相關(guān)的二次復(fù)雜度,對(duì)最大上下文長(zhǎng)度施加了限制在訓(xùn)練和推理階段。各種策略已經(jīng)被探索了來(lái)解決這一限制,包括輸入壓縮(第4.1節(jié))、稀疏注意力(第5.2.2節(jié))、低復(fù)雜度結(jié)構(gòu)的設(shè)計(jì)(第5.1.3節(jié))和注意算子的優(yōu)化(第6.1.1節(jié))。值得注意的是,具有次二次或線(xiàn)性復(fù)雜性的非transformer架構(gòu)(第5.1.3節(jié))最近引起了研究人員的極大興趣。

盡管它們效率很高,但與Transformer架構(gòu)相比,這些新架構(gòu)在各種能力(如上下文學(xué)習(xí)能力和遠(yuǎn)程建模能力)上的競(jìng)爭(zhēng)力仍有待考察。因此,從多個(gè)角度探索這些新架構(gòu)的功能并解決它們的局限性仍然是一個(gè)有價(jià)值的追求。此外,為各種場(chǎng)景和任務(wù)確定必要的上下文長(zhǎng)度,以及確定將作為未來(lái)大模型基礎(chǔ)支柱的下一代架構(gòu),這一點(diǎn)至關(guān)重要。

Edge Scenario Deployment:盡管提高大模型推理的效率已經(jīng)有了許多工作,但將大模型部署到資源極其有限的邊緣設(shè)備(如移動(dòng)電話(huà))上仍然存在挑戰(zhàn)。最近,許多研究人員對(duì)具有1B ~ 3B參數(shù)的較小語(yǔ)言模型的預(yù)訓(xùn)練表現(xiàn)出了興趣。這種規(guī)模的模型在推理過(guò)程中提供了更少的資源成本,并且與更大的模型相比,具有實(shí)現(xiàn)泛化能力和競(jìng)爭(zhēng)性能的潛力。然而,開(kāi)發(fā)如此高效和強(qiáng)大的小型語(yǔ)言模型的方法仍然沒(méi)有得到充分的探索。

一些研究已經(jīng)開(kāi)啟了這個(gè)有希望的方向。例如,MiniCPM通過(guò)沙盒實(shí)驗(yàn)來(lái)確定最優(yōu)的預(yù)訓(xùn)練超參數(shù)。PanGu-π-Pro建議使用來(lái)自模型修剪的矩陣和技術(shù)來(lái)初始化預(yù)訓(xùn)練打磨謝謝的模型權(quán)重。MobileLLM在小型模型設(shè)計(jì)中采用了“深而薄”的架構(gòu),并提出了跨不同層的權(quán)重共享,在不增加額外內(nèi)存成本的情況下增加層數(shù)。然而,小模型和大模型之間仍存在性能差距,需要未來(lái)的研究來(lái)縮小這一差距。未來(lái),迫切需要研究如何識(shí)別邊緣場(chǎng)景下的模型尺度,并探索各種優(yōu)化方法在設(shè)計(jì)上的邊界。

除了設(shè)計(jì)較小的模型之外,系統(tǒng)級(jí)優(yōu)化為大模型部署提供了一個(gè)有前途的方向。最近一個(gè)值得注意的項(xiàng)目,MLC-LLM成功地在移動(dòng)電話(huà)上部署了LLaMA-7B模型。MLC-LLM主要使用融合、內(nèi)存規(guī)劃和循環(huán)優(yōu)化等編譯技術(shù)來(lái)增強(qiáng)延遲并降低推理期間的內(nèi)存成本。此外,采用云邊緣協(xié)作技術(shù)或設(shè)計(jì)更復(fù)雜的硬件加速器也可以幫助將大模型部署到邊緣設(shè)備上。

Security-Efficiency Synergy:除了任務(wù)性能和效率外,安全性也是大模型應(yīng)用中必須考慮的關(guān)鍵因素。目前的研究主要集中在效率優(yōu)化方面,沒(méi)有充分解決安全考慮的操作。因此,研究效率和安全性之間的相互作用,并確定當(dāng)前的優(yōu)化技術(shù)是否會(huì)損害大模型的安全性是至關(guān)重要的。如果這些技術(shù)對(duì)大模型的安全性產(chǎn)生負(fù)面影響,一個(gè)有希望的方向是開(kāi)發(fā)新的優(yōu)化方法或改進(jìn)現(xiàn)有的方法,以實(shí)現(xiàn)大模型的效率和安全性之間更好的權(quán)衡。

8 總結(jié)

高效的大模型推理側(cè)重于減少大模型推理過(guò)程中的計(jì)算、內(nèi)存訪(fǎng)問(wèn)和內(nèi)存成本,旨在優(yōu)化諸如延遲、吞吐量、存儲(chǔ)、功率和能源等效率指標(biāo)。作者在本綜述中提供了高效大模型推理研究的全面回顧,提出了關(guān)鍵技術(shù)的見(jiàn)解,建議和未來(lái)方向。首先,作者引入了包含數(shù)據(jù)級(jí)、模型級(jí)和系統(tǒng)級(jí)優(yōu)化的分層分類(lèi)法。隨后,在這一分類(lèi)方法的指導(dǎo)下,作者總結(jié)每個(gè)層次和子領(lǐng)域的研究。對(duì)于模型量化和高效服務(wù)系統(tǒng)等成熟的技術(shù),作者進(jìn)行了實(shí)驗(yàn)來(lái)評(píng)估和分析它們的性能。在此基礎(chǔ)上,提出了實(shí)踐建議。為該領(lǐng)域的從業(yè)者和研究人員提出建議并確定有前途的研究途徑。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2423

    瀏覽量

    2640
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    0

    文章

    286

    瀏覽量

    327

原文標(biāo)題:3萬(wàn)字詳細(xì)解析清華大學(xué)最新綜述工作:大模型高效推理綜述

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    有限集模型預(yù)測(cè)控制策略綜述

    有限集模型預(yù)測(cè)控制的綜述
    發(fā)表于 11-20 11:27

    用tflite接口調(diào)用tensorflow模型進(jìn)行推理

    摘要本文為系列博客tensorflow模型部署系列的一部分,用于實(shí)現(xiàn)通用模型的部署。本文主要實(shí)現(xiàn)用tflite接口調(diào)用tensorflow模型進(jìn)行推理。相關(guān)源碼見(jiàn)鏈接引言本文為系列博客
    發(fā)表于 12-22 06:51

    【飛凌RK3568開(kāi)發(fā)板試用體驗(yàn)】RKNN模型推理測(cè)試

    研的人工智能協(xié)處理器NPU,并且提供了RKNN-Toolkit。今天就介紹一下如何使用RKNN模型進(jìn)行推理應(yīng)用程序開(kāi)發(fā)。一、推理應(yīng)用程序的基本流程RKNN 是 瑞芯微(Rockchip) NPU平臺(tái)
    發(fā)表于 12-08 19:06

    壓縮模型會(huì)加速推理嗎?

    你好我使用 STM32CUBE-AI v5.1.2 ApplicationTemplate 將簡(jiǎn)單的 CNN 導(dǎo)入到 STM32L462RCT我發(fā)現(xiàn)壓縮模型對(duì)推理時(shí)間沒(méi)有影響。aiRun 程序在 8
    發(fā)表于 01-29 06:24

    如何提高YOLOv4模型推理性能?

    使用 PyTorch 對(duì)具有非方形圖像的 YOLOv4 模型進(jìn)行了訓(xùn)練。 將 權(quán)重轉(zhuǎn)換為 ONNX 文件,然后轉(zhuǎn)換為中間表示 (IR)。 無(wú)法確定如何獲得更好的推理性能。
    發(fā)表于 08-15 06:58

    AscendCL快速入門(mén)——模型推理篇(上)

    一、概述本文介紹了AscendCL模型推理相關(guān)知識(shí),介紹了AscendCL接口加載離線(xiàn)模型,為離線(xiàn)模型準(zhǔn)備數(shù)據(jù)結(jié)構(gòu)以及調(diào)用離線(xiàn)模型進(jìn)行
    發(fā)表于 08-24 11:04

    使用rk3588多npu推理模型,模型推理時(shí)間還增加了,這怎么解釋

    使用rk3588多npu推理模型,模型推理時(shí)間還增加了,這怎么解釋
    發(fā)表于 11-05 18:22

    HarmonyOS:使用MindSpore Lite引擎進(jìn)行模型推理

    場(chǎng)景介紹 MindSpore Lite 是一款 AI 引擎,它提供了面向不同硬件設(shè)備 AI 模型推理的功能,目前已經(jīng)在圖像分類(lèi)、目標(biāo)識(shí)別、人臉識(shí)別、文字識(shí)別等應(yīng)用中廣泛使用。 本文介紹
    發(fā)表于 12-14 11:41

    文本挖掘之概率主題模型綜述

    文本挖掘之概率主題模型綜述
    發(fā)表于 06-24 14:16 ?16次下載

    主流大模型推理框架盤(pán)點(diǎn)解析

    vLLM是一個(gè)開(kāi)源的大模型推理加速框架,通過(guò)PagedAttention高效地管理attention中緩存的張量,實(shí)現(xiàn)了比HuggingFace Transformers高14-24倍的吞吐量。
    發(fā)表于 10-10 15:09 ?5259次閱讀
    主流大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>框架盤(pán)點(diǎn)解析

    澎峰科技發(fā)布大模型推理引擎PerfXLLM

    要的巨額開(kāi)銷(xiāo)也引發(fā)了相關(guān)研究者的關(guān)注。如何高效地進(jìn)行推理,并盡可能地減少成本,從而促進(jìn)大模型應(yīng)用的落地成為了目前的關(guān)鍵問(wèn)題。 于是,澎峰科技研發(fā)了一款 大模型
    的頭像 發(fā)表于 11-25 15:35 ?1103次閱讀
    澎峰科技發(fā)布大<b class='flag-5'>模型</b><b class='flag-5'>推理</b>引擎PerfXLLM

    基于LLM的表格數(shù)據(jù)的大模型推理綜述

    面向表格數(shù)據(jù)的推理任務(wù),在計(jì)算機(jī)領(lǐng)域,特別是自然語(yǔ)言處理(Natural Language Processing,NLP)領(lǐng)域的研究中扮演著重要角色[1]。該任務(wù)要求模型在給定一個(gè)或多個(gè)表格的情況下,按照任務(wù)要求,生成相應(yīng)的結(jié)果作為答案(例如:表格問(wèn)答、表格事實(shí)判斷)。
    發(fā)表于 01-08 09:56 ?1578次閱讀
    基于LLM的表格數(shù)據(jù)的大<b class='flag-5'>模型</b><b class='flag-5'>推理</b><b class='flag-5'>綜述</b>

    自然語(yǔ)言處理應(yīng)用LLM推理優(yōu)化綜述

    當(dāng)前,業(yè)界在將傳統(tǒng)優(yōu)化技術(shù)引入 LLM 推理的同時(shí),同時(shí)也在探索從大模型自回歸解碼特點(diǎn)出發(fā),通過(guò)調(diào)整推理過(guò)程和引入新的模型結(jié)構(gòu)來(lái)進(jìn)一步提升推理
    發(fā)表于 04-10 11:48 ?581次閱讀
    自然語(yǔ)言處理應(yīng)用LLM<b class='flag-5'>推理</b>優(yōu)化<b class='flag-5'>綜述</b>

    LLM大模型推理加速的關(guān)鍵技術(shù)

    LLM(大型語(yǔ)言模型)大模型推理加速是當(dāng)前人工智能領(lǐng)域的一個(gè)研究熱點(diǎn),旨在提高模型在處理復(fù)雜任務(wù)時(shí)的效率和響應(yīng)速度。以下是對(duì)LLM大模型
    的頭像 發(fā)表于 07-24 11:38 ?856次閱讀

    如何開(kāi)啟Stable Diffusion WebUI模型推理部署

    如何開(kāi)啟Stable Diffusion WebUI模型推理部署
    的頭像 發(fā)表于 12-11 20:13 ?91次閱讀
    如何開(kāi)啟Stable Diffusion WebUI<b class='flag-5'>模型</b><b class='flag-5'>推理</b>部署
    RM新时代网站-首页