自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

70%大小,100%準(zhǔn)確!完美壓縮LLM性能0損失,推理速度最高飆升39倍

人工智能 新聞
LLM的規(guī)模爆炸式增長,傳統(tǒng)量化技術(shù)雖能壓縮模型,卻以犧牲精度為代價(jià)。萊斯大學(xué)團(tuán)隊(duì)的最新研究DFloat11打破這一僵局:它將模型壓縮30%且輸出與原始模型逐位一致!更驚艷的是,通過針對GPU的定制化解壓縮內(nèi)核,DFloat11使推理吞吐量提升最高38.8倍。

人人都想有一個(gè)自己的DeepSeek,但并不是人人都有「一打」96GB顯存的H20。

雖然量化可以極大地降低模型對于顯存的需求,但它本質(zhì)上是一種有損壓縮技術(shù)。

換句話說就是,量化模型的輸出分布不可避免地會受到影響,進(jìn)而降低LLM的準(zhǔn)確性和可靠性。

圖片

為此,來自萊斯大學(xué)等機(jī)構(gòu)的研究人員提出了一種全新的無損壓縮框架——?jiǎng)討B(tài)長度浮點(diǎn)數(shù)(DFloat11),它能夠?qū)LM的大小減少30%,同時(shí)確保輸出結(jié)果與原始模型逐位相同。

圖片

論文地址:https://arxiv.org/abs/2504.11651

為了支持使用動(dòng)態(tài)長度編碼進(jìn)行高效推理,團(tuán)隊(duì)專門開發(fā)了一個(gè)定制的GPU內(nèi)核,用于實(shí)現(xiàn)快速的在線解壓縮:

1. 將內(nèi)存密集型的查找表 (LUT) 分解為更緊湊的LUT,使其能夠完全放入GPU的SRAM中;

2. 一個(gè)雙階段內(nèi)核,利用輕量級的輔助變量來協(xié)調(diào)線程的讀寫位置;

3. Transformer Block級的解壓縮,從而最大限度地降低延遲。

在Llama-3.1、Qwen-2.5、Gemma-3等SOTA模型上的實(shí)驗(yàn)表明, DFloat11除了能有效壓縮模型的大小之外,同時(shí)還能保持完全一致的輸出結(jié)果。

與將模型的部分?jǐn)?shù)據(jù)卸載到CPU的方案相比,DFloat11在Token生成任務(wù)中實(shí)現(xiàn)了1.9到38.8倍的吞吐量提升。

在GPU顯存固定的情況下,DFloat11能夠支持比未壓縮模型長5.3到13.17倍的上下文長度。

特別值得一提的是,DFloat11成功地實(shí)現(xiàn)了Llama-3.1-405B(810GB)在單節(jié)點(diǎn)上(8塊80GB GPU)的無損推理。

Llama-3.1-405B擁有4050億參數(shù),采用16位Brain Float(BFloat16)格式,需要約810GB內(nèi)存才能實(shí)現(xiàn)完整推理,超過了典型GPU服務(wù)器的容量(如配備8×80GB GPU的DGX A100/H100)。

圖片

本文一作Tianyi Zhang,是萊斯大學(xué)計(jì)算機(jī)科學(xué)專業(yè)的博士生,之前在滑鐵盧大學(xué)獲得計(jì)算機(jī)科學(xué)學(xué)士學(xué)位。

圖片

為什么要對LLM進(jìn)行無損壓縮?

在目前的有損量化技術(shù)中,模型通常被壓縮到更低的位寬度(如8位或4位)。

雖然部分基準(zhǔn)測試表明,8位量化是一種相對「安全」的壓縮方案,但在實(shí)際體驗(yàn)時(shí)終究不如無損的模型。

例如,LLM Arena上的人工評估顯示,Llama-3.1-405B-Instruct及其8位版本(Llama-3.1-405B-Instruct-FP8)之間的性能存在顯著下降,尤其是在編碼和長查詢?nèi)蝿?wù)中。

類似的,將DeepSeek-R1-Distill-Llama-70B從16位量化到8位會導(dǎo)致GPQA上的性能下降23.7%(從9.51%降至7.25%)。

此外,推理作為現(xiàn)代LLM的核心能力,似乎對壓縮損失特別敏感。

一些基準(zhǔn)測試表明,使用8位SmoothQuant(用于權(quán)重、注意力和KV緩存)量化的DeepSeek-R1-Distill-Qwen-1.5B,會在AIME、MATH-500、GPQA-Diamond和LiveCodeBench等數(shù)據(jù)集上的推理性能,平均下降9.09%(從48.82%降至44.29%)。

有損壓縮降低質(zhì)量,無損壓縮缺乏效率

相比之下,無損壓縮技術(shù)在有效減小大規(guī)模LLM大小的同時(shí),能夠保留其精確的原始權(quán)重,確保模型的輸出分布與未壓縮表示(例如BFloat16)的輸出分布完全一致。

然而,現(xiàn)有的無損壓縮方法主要側(cè)重于提高LLM的存儲效率,例如縮小模型檢查點(diǎn),或者優(yōu)化諸如FPGA等專用硬件的性能。

這些方法雖然有利于訓(xùn)練過程中的高效檢查點(diǎn)回滾,或者從Hugging Face等模型倉庫加速下載,但其優(yōu)勢通常難以有效地?cái)U(kuò)展到基于GPU的LLM推理。

實(shí)驗(yàn)方法

為了推動(dòng)LLM權(quán)重的無損壓縮,團(tuán)隊(duì)分析了最新LLM權(quán)重中BFloat16各個(gè)組成部分(符號、指數(shù)和尾數(shù))的可壓縮性。

具體來說,團(tuán)隊(duì)使用香農(nóng)熵來量化LLM線性投影矩陣中參數(shù)的信息量。香農(nóng)熵H(·)定義如下:

圖片

其中X是一個(gè)離散隨機(jī)變量,其所有可能取值的集合為χ,p:χ→[0,1]表示其概率質(zhì)量函數(shù)。

如圖1所示,符號和尾數(shù)部分的熵值與其對應(yīng)的位寬接近,說明它們的可壓縮空間不大。相比之下,指數(shù)部分的熵值明顯較低,只有約2.6位,但其分配的位數(shù)為8位,這意味著無損壓縮存在很大的機(jī)會。

圖片

無損LLM壓縮框架,實(shí)現(xiàn)高效GPU推理

為了解決LLM權(quán)重在BFloat16表示中存在的巨大信息冗余問題,團(tuán)隊(duì)提出了一種利用熵編碼來對浮點(diǎn)參數(shù)進(jìn)行編碼的無損壓縮框架——DFloat。

首先,基于LLM線性投影矩陣中所有BFloat16權(quán)重的指數(shù)分布構(gòu)建一個(gè)Huffman樹。

然后,使Huffman編碼壓縮指數(shù)部分,同時(shí)保留原始的符號位和尾數(shù)。

指數(shù)被編碼后,緊密地打包到EncodedExponent字節(jié)數(shù)組中,而符號位和尾數(shù)則保持未壓縮狀態(tài),存儲在另一個(gè)PackedSignMantissa字節(jié)數(shù)組中。

圖片

動(dòng)態(tài)長度浮點(diǎn)數(shù)格式可以緊湊地表示浮點(diǎn)模型參數(shù)

使用緊湊LUT實(shí)現(xiàn)高效解碼

由于Huffman編碼可以通過機(jī)遇查找表(Lookup Table,LUT)的方法有效地解碼,于是團(tuán)隊(duì)構(gòu)建了一個(gè)大小為2^L的LUT,其中L是碼本中任何Huffman編碼的最大位長度。

為了進(jìn)行解碼,團(tuán)隊(duì)從編碼的位流中讀取接下來的L位,并將它們作為LUT的索引來獲取下一個(gè)解碼后的符號。

為了解碼DFloat11格式的指數(shù),限制每個(gè)模型的最大代碼長度L為32位。

對于那些L大于32的模型,團(tuán)隊(duì)通過將最不常見的指數(shù)的頻率降低到1并重新構(gòu)建Huffman樹來強(qiáng)制滿足長度約束。

如此,便會在Huffman樹的尾部產(chǎn)生一個(gè)更加平衡的結(jié)構(gòu),為最稀有的指數(shù)分配相同長度的代碼,并將最大代碼長度縮減到3位。

然而,當(dāng)L=32時(shí),直接使用查找表將需要232≈42.9億個(gè)條目,這將消耗巨大的內(nèi)存。

為了解決這個(gè)問題,團(tuán)隊(duì)提出將這個(gè)龐大的LUT分割成四個(gè)互不相交且節(jié)省內(nèi)存的查找表——LUT1、LUT2、LUT3和LUT4

這樣一來,內(nèi)存占用就可以完全放在GPU SRAM中,從而實(shí)現(xiàn)快速訪問。

兩階段Kernel和輕量級輔助變量

為了能夠?qū)Float11格式中經(jīng)過熵編碼的指數(shù)進(jìn)行大規(guī)模并行解碼,團(tuán)隊(duì)為每個(gè)線程分配一段固定長度的、來自編碼序列的字節(jié)來進(jìn)行處理。

然而,這種方法會帶來兩個(gè)主要的挑戰(zhàn):

1. 由于Huffman編碼的位寬是可變的,并且編碼后的數(shù)據(jù)是被緊密地打包在一起的,因此每個(gè)線程開始解碼的起始位位置并不明確。

2. 除了第一個(gè)線程之外,其他線程所要解碼的元素的索引是未知的,這導(dǎo)致難以確定用于存儲解碼結(jié)果的正確輸出位置。

為了解決第一個(gè)問題,團(tuán)隊(duì)使用一個(gè)間隙數(shù)組來確定每個(gè)線程的起始位位置。

這個(gè)間隙數(shù)組Gaps為每個(gè)線程包含一個(gè)條目,每個(gè)條目都指定了相對于該線程所分配的起始字節(jié),第一個(gè)有效Huffman編碼的位偏移量。由于最大代碼長度為32位,因此每個(gè)偏移量的值都在[0,31]范圍內(nèi)。為了保證內(nèi)存效率,團(tuán)隊(duì)使用5個(gè)位來編碼每個(gè)條目。

為了解決第二個(gè)問題,最直接的方法是維護(hù)一個(gè)數(shù)組,用于存儲每個(gè)線程所解碼的第一個(gè)元素的輸出位置。然而,這種方法會帶來巨大的存儲開銷。

為了減少存儲開銷,團(tuán)隊(duì)只存儲每個(gè)線程塊中第一個(gè)元素的輸出位置,而不是存儲每個(gè)線程的輸出位置。

為了能夠使用塊級的輸出位置信息進(jìn)行解碼,團(tuán)隊(duì)采用了一種兩階段的Kernel設(shè)計(jì)。

在第一階段,一個(gè)線程塊內(nèi)的所有線程并行地解碼分配給它們的那部分編碼序列,但是并不將任何輸出結(jié)果寫入到全局內(nèi)存中。取而代之的是,每個(gè)線程會計(jì)算它將要解碼的元素的數(shù)量。

完成這一步之后,團(tuán)隊(duì)同步同一個(gè)線程塊內(nèi)的所有線程,并通過計(jì)算前綴和來確定每個(gè)線程的輸出位置,計(jì)算前綴和的起始位置是該線程塊的已知輸出位置。

在第二階段,每個(gè)線程會重新解碼相同的那部分編碼序列,這一次會將解碼后的結(jié)果寫入到HBM中正確的輸出位置。

為了避免在這兩個(gè)階段中重復(fù)訪問HBM,團(tuán)隊(duì)將編碼后的指數(shù)數(shù)據(jù)加載到SRAM中。

圖片

兩階段Kernel的偽代碼

Transformer Block級解壓縮

至此,就有了一套完整的方法,可以對經(jīng)過熵編碼的指數(shù)進(jìn)行大規(guī)模并行解壓縮。

LLM的權(quán)重以DFloat11格式存儲,同時(shí)還包含輕量級的輔助數(shù)據(jù):線程級的間隙偏移量以及塊級的輸出位置,這些數(shù)據(jù)用于確定每個(gè)線程的讀取和寫入位置。

在推理過程中,壓縮后的權(quán)重?cái)?shù)據(jù)和這些輔助變量都完全駐留在GPU上。

當(dāng)需要使用某個(gè)權(quán)重矩陣進(jìn)行矩陣乘法運(yùn)算時(shí),該矩陣會被動(dòng)態(tài)地解壓縮為原始的BFloat16格式。一旦矩陣乘法運(yùn)算完成,這個(gè)BFloat16格式的矩陣會立即被丟棄,以節(jié)省GPU顯存。

在實(shí)際應(yīng)用中,由于單個(gè)權(quán)重矩陣的尺寸通常相對較小,因此單獨(dú)解壓縮一個(gè)權(quán)重矩陣往往無法充分利用GPU資源。

在DFloat11解壓縮Kernel中,將每個(gè)線程處理的字節(jié)數(shù)設(shè)置為n=8,每個(gè)線程塊中的線程數(shù)設(shè)置為T=256,線程塊的數(shù)量設(shè)置為B=?|EncodedExponent|/(nT)?,其中|EncodedExponent|表示編碼后的指數(shù)數(shù)據(jù)所占的總字節(jié)數(shù)。

隨著DFloat11格式的權(quán)重?cái)?shù)據(jù)尺寸的增加,會有更多的線程塊被利用起來,從而可以提高整體的解壓縮吞吐量。

圖6展示了這種現(xiàn)象,它表明解壓縮的吞吐量會隨著矩陣尺寸的增加而顯著提升。為了充分利用這一特性,研究團(tuán)隊(duì)建議將多個(gè)矩陣的解壓縮操作進(jìn)行批處理,以此來提高吞吐量并隱藏延遲。

圖片

更具體地說,可以將單個(gè)Transformer Block內(nèi)的所有DFloat11格式的權(quán)重矩陣的解壓縮操作進(jìn)行批處理。

在Transformer Block中執(zhí)行任何計(jì)算操作之前,團(tuán)隊(duì)首先解壓縮與其相關(guān)聯(lián)的所有權(quán)重?cái)?shù)據(jù)。這種方法能夠顯著降低解壓縮的延遲,并提高整體的推理效率。

圖5展示了在不同的批處理大小下,使用DFloat11壓縮的Llama-3.1-8B-Instruct模型的延遲細(xì)分情況。

圖片

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

DF11將LLM壓縮至70%大小

表2展示了DF11對多種最新LLM的壓縮比率。

壓縮的模型包括LLaMA3/3.1/3.3、Qwen2.5、QwQ、Mistral Nemo/Small/Codestral、Gemma2/3以及DeepSeek-R1-Distilled。

實(shí)驗(yàn)結(jié)果顯示,DF11對所有模型的壓縮比約為70%,相當(dāng)于大約11位的有效位寬。

圖片

DF11壓縮完全無損

研究團(tuán)隊(duì)通過一系列標(biāo)準(zhǔn)基準(zhǔn)測試驗(yàn)證了DF11壓縮的無損特性。

評估使用lm_evaluation_harness工具進(jìn)行,報(bào)告了MMLU和TruthfulQA的準(zhǔn)確率,以及WikiText和C4的詞級困惑度。

如表3所示,壓縮模型的準(zhǔn)確率和困惑度與原始BF16模型完全一致。

為了進(jìn)一步驗(yàn)證無損特性,他們將DF11解壓后的BF16權(quán)重矩陣與表2中各模型的原始權(quán)重矩陣進(jìn)行比較,確認(rèn)兩者在比特級上完全相同。

圖片

DF11在推理效率上超越CPU卸載

研究團(tuán)隊(duì)比較了DF11和BF16模型在不同硬件平臺上的推理效率。

未壓縮的BF16模型通常會超出單個(gè)GPU的顯存限制,而無損壓縮的DF11模型則不會超出。

對于BF16模型,團(tuán)隊(duì)將模型的大部分內(nèi)容和計(jì)算保留在GPU上,同時(shí)將部分組件及其相關(guān)計(jì)算卸載到CPU上。

如圖3所示,DF11模型始終優(yōu)于采用CPU卸載的BF16模型,延遲降低了1.85至38.83倍或吞吐量更高。

圖片

DF11支持更長的生成長度

DF11壓縮帶來的顯存節(jié)省不僅減少了推理所需的GPU數(shù)量,還支持更長的生成長度。

在推理過程中,KV緩存會隨著解碼token數(shù)量的增加而線性增長,很快成為GPU顯存的瓶頸。

圖4展示了在批大小為1時(shí),DF11和BF16模型在推理過程中隨著解碼token數(shù)量增加的GPU顯存消耗情況。

如圖所示,DF11壓縮顯著延長了token生成長度,與BF16模型相比,在達(dá)到GPU顯存限制前能解碼5.33至13.17倍的token數(shù)量。

圖片

結(jié)論

在這項(xiàng)工作中,研究人員提出了動(dòng)態(tài)長度浮點(diǎn)(DFloat)作為一種針對LLM權(quán)重的無損壓縮數(shù)據(jù)格式。DFloat是目前唯一一種既能減少顯存占用又兼容高效GPU推理的數(shù)據(jù)格式。

具體來說,他們使用11位的DFloat格式(DF11)評估了多個(gè)熱門LLM,并為此格式開發(fā)了定制的GPU內(nèi)核。

實(shí)驗(yàn)結(jié)果表明,基于DF11的壓縮顯著降低了服務(wù)LLM的硬件需求,而且在大多數(shù)實(shí)際應(yīng)用場景下,它所增加的額外計(jì)算負(fù)擔(dān)也是可以接受的。

責(zé)任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2023-09-10 12:37:38

模型英偉達(dá)

2024-07-19 09:59:31

2023-09-12 14:45:18

2021-01-27 11:50:07

Python優(yōu)化代碼

2024-01-24 13:11:00

AI模型

2025-04-21 09:07:00

2025-03-04 10:15:00

2024-04-07 14:28:48

邊緣計(jì)算LLM人工智能

2023-05-04 07:34:37

Rust代碼CPU

2024-07-08 13:04:01

2023-10-18 09:25:08

模型推理

2024-02-26 07:43:10

大語言模型LLM推理框架

2023-05-23 14:06:53

微軟研究

2024-11-21 10:21:06

2023-07-18 14:19:00

模型AI

2024-01-29 12:49:00

AI模型

2018-01-21 23:14:09

戴爾

2023-12-19 13:32:00

模型數(shù)據(jù)

2024-10-21 10:20:00

訓(xùn)練模型

2024-12-26 16:00:00

英特爾推理模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號