
用於大型語言模型和擴散模型的模型壓縮工具箱
[2024/11] ?我們最新的W4A4擴散模型量化工作SVDQuant演算法和Nunchaku系統公開發布!檢查我們的論文!
[2024/05] ?我們最新的W4A8KV4 LLM量化工作QoQ演算法和QServe系統公開發布! QoQ是quattuor-octō-quattuor的縮寫,拉丁文為 4-8-4。檢查我們的論文!
DeepCompressor是一個基於PyTorch的開源模型壓縮工具箱,用於大型語言模型和擴散模型。 DeepCompressor 目前支援 8 位元以內的任何整數和浮點資料類型的偽量化,例如 INT8、INT4 和 FP4_E2M1。以下是實現以下演算法的範例。
大型語言模型的訓練後量化:
環比 (W4A8KV4)
SmoothQuant (W8A8)
AWQ (W4A16)
GPTQ (W4A16)
僅權重量化
權重活化量化
權重激活和 KV 緩存量化
擴散模型的訓練後量化:
SVDQuant (W4A4)
權重活化量化
DeepCompressor 還包含與其他推理庫整合的範例。
使用 TinyChat 部署僅權重量化的 LLM
使用 QServe 部署量化 LLM
使用 Nunchaku 部署量化擴散模型
克隆此儲存庫並導航至 deepcompressor 資料夾
git clone https://github.com/mit-han-lab/deepcompressor cd deepcompressor
安裝包
conda env create -f environment.yml poetry install
[網站][論文][雙節棍推理系統]
擴散模型已被證明在生成高品質影像方面非常有效。然而,隨著這些模型變得越來越大,它們需要更多的記憶體並遭受更高的延遲,這給部署帶來了巨大的挑戰。在這項工作中,我們的目標是透過將擴散模型的權重和活化量化為 4 位元來加速擴散模型。在如此激進的層面上,權重和活化都非常敏感,大型語言模型的傳統訓練後量化方法(例如平滑)變得不夠。為了克服這個限制,我們提出了SVDQuant ,一種新的 4 位元量化範例。與在權重和活化之間重新分配異常值的平滑不同,我們的方法使用低秩分支來吸收這些異常值。我們首先透過將異常值從活化轉移到權重來合併異常值,然後採用高精度低秩分支透過奇異值分解(SVD)來取得權重異常值。這個過程簡化了雙方的量化。然而,由於激活的額外資料移動,獨立運行低秩分支會產生大量開銷,從而抵消了量化加速。為了解決這個問題,我們共同設計了一個推理引擎Nunchaku ,它將低位分支的內核融合到低位分支的內核中,以切斷冗餘的記憶體存取。它還可以無縫支援現成的低階適配器 (LoRA),無需重新量化。在 SDXL、PixArt-Σ 和 FLUX.1 上進行的大量實驗驗證了 SVDQuant 在維持影像品質方面的有效性。我們將12B FLUX.1 模型的記憶體使用量減少了3.5 倍,與16GB 筆記型電腦4090 GPU 上的4 位元僅權重量化基線相比,實現了3.0 倍的加速,為PC 上更多互動式應用程式鋪平了道路。


以下是使用 MJHQ-30K 資料集中的 5000 個樣本評估的品質和相似性。 IR 表示圖像獎勵。我們的 4 位結果優於其他 4 位基線,有效保留了 16 位模型的視覺品質。
| 模型 | 精確 | 方法 | 火焰離子偵測器( | 紅外線( | LPIPS( | 峰值信噪比( |
|---|---|---|---|---|---|---|
| FLUX.1-dev(50 步驟) | BF16 | -- | 20.3 | 0.953 | -- | -- |
| INT W8A8 | 我們的 | 20.4 | 0.948 | 0.089 | 27.0 | |
| W4A16 | 核因子4 | 20.6 | 0.910 | 0.272 | 19.5 | |
| INT W4A4 | 我們的 | 19.86 | 0.932 | 0.254 | 20.1 | |
| FP W4A4 | 我們的 | 21.0 | 0.933 | 0.247 | 20.2 | |
| FLUX.1-schnell(4 個步驟) | BF16 | -- | 19.2 | 0.938 | -- | -- |
| INT W8A8 | 我們的 | 19.2 | 0.966 | 0.120 | 22.9 | |
| W4A16 | 核因子4 | 18.9 | 0.943 | 0.257 | 18.2 | |
| INT W4A4 | 我們的 | 18.4 | 0.969 | 0.292 | 17.5 | |
| FP W4A4 | 我們的 | 19.9 | 0.956 | 0.279 | 17.5 | |
| FP16 | -- | 16.6 | 0.944 | -- | -- | |
| 原相西格瑪(20 個步驟) | INT W8A8 | ViDiT-Q | 15.7 | 0.944 | 0.137 | 22.5 |
| INT W8A8 | 我們的 | 16.3 | 0.955 | 0.109 | 23.7 | |
| INT W4A8 | ViDiT-Q | 37.3 | 0.573 | 0.611 | 12.0 | |
| INT W4A4 | 我們的 | 20.1 | 0.898 | 0.394 | 16.2 | |
| FP W4A4 | 我們的 | 18.3 | 0.946 | 0.326 | 17.4 |
[網站][論文][QoQ演算法程式碼][QServe GPU系統]
量化可以加速大型語言模型 (LLM) 推理。除了 INT8 量化之外,研究界正在積極探索更低精度的量化,例如 INT4。儘管如此,最先進的 INT4 量化技術只能加速小批量、邊緣 LLM 推理,無法在大量、基於雲端的 LLM 服務中提供效能提升。我們發現了一個關鍵問題:在 GPU 上對權重或部分和進行反量化時,現有的 INT4 量化方法會遭受巨大的運行時開銷 (20-90%)。為了應對這項挑戰,我們引入了QoQ ,一種具有 4 位元權重、8 位元活化和 4 位元 KV 快取的 W4A8KV4 量化演算法。 QoQ 代表quattuor-octo-quattuor ,在拉丁語中代表 4-8-4。 QoQ 由QServe推理庫實現,可實現測量加速。驅動 QServe 的關鍵洞察是,在 GPU 上服務的 LLM 的效率受到低吞吐量 CUDA 核心上的營運的嚴重影響。基於這個見解,我們在 QoQ 演算法中引入了漸進式量化,可以在 W4A8 GEMM 中實現較低的反量化開銷。此外,我們開發了 SmoothAttention 來有效緩解 4 位元 KV 量化所帶來的精確度下降。在 QServe 系統中,我們執行計算感知權重重新排序,並利用暫存器級並行性來減少反量化延遲。我們也利用 KV4 量化帶來的效能增益,使融合注意力受到記憶體限制。因此,QServe 將 Llama-3-8B 的最大可實現服務吞吐量在 A100 上提高了1.2 倍,在 L40S 上提高了 1.4 倍;與 TensorRT-LLM 相比,Qwen1.5-72B 在 A100 上提高了2.4 倍,在 L40S 上提高了3.5 倍。


以下是使用 2048 序列長度評估的 WikiText2 困惑度。越低越好。
| 方法 | 精確 | 美洲駝-3.1 70B | 羊駝-3.1 8B | 美洲駝-3 70B | 美洲駝-3 8B | 美洲駝-2 7B | 美洲駝2 13B | 美洲駝2 70B | 羊駝7B | 羊駝13B | 美洲駝30B | 米斯特拉爾7B | 伊34B |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FP16 | 2.81 | 6.24 | 2.85 | 6.14 | 5.47 | 4.88 | 3.32 | 5.68 | 5.09 | 4.10 | 5.25 | 4.60 | |
| 平滑量 | W8A8 | 3.23 | 6.38 | 3.14 | 6.28 | 5.54 | 4.95 | 3.36 | 5.73 | 5.13 | 4.23 | 5.29 | 4.69 |
| GPTQ-R | W4A16 G128 | 3.46 | 6.64 | 3.42 | 6.56 | 5.63 | 4.99 | 3.43 | 5.83 | 5.20 | 4.22 | 5.39 | 4.68 |
| 加權平均質量 | W4A16 G128 | 3.22 | 6.60 | 3.20 | 6.54 | 5.60 | 4.97 | 3.41 | 5.78 | 5.19 | 4.21 | 5.37 | 4.67 |
| 誇羅特 | W4A4 | 5.97 | 8.32 | 6.75 | 8.33 | 6.19 | 5.45 | 3.83 | 6.34 | 5.58 | 4.64 | 5.77 | 南 |
| 原子 | W4A4 g128 | - | - | 4.33 | 7.78 | 6.12 | 5.31 | 3.73 | 6.25 | 5.52 | 4.61 | 5.76 | 4.97 |
| 季季 | W4A8KV4 | 3.69 | 6.91 | 3.65 | 6.84 | 5.75 | 5.11 | 3.51 | 5.92 | 5.27 | 4.32 | 5.45 | 4.73 |
| 季季 | W4A8KV4 g128 | 3.54 | 6.80 | 3.51 | 6.73 | 5.68 | 5.05 | 3.46 | 5.88 | 5.23 | 4.27 | 5.41 | 4.73 |
* SmoothQuant 透過每張量靜態 KV 快取量化進行評估。
當在 L40S 和 A100 GPU 上服務大型語言模型 Llama-3-8B 和 Qwen1.5-72B 時,QServe 表現出卓越的性能,與領先的行業解決方案 TensorRT-LLM 相比,吞吐量提高了1.2 倍至1.4倍。
請參閱 QServe GPU 推理系統中有關基準測試設定的詳細資訊。
| L40S(48G) | 駱駝-3-8B | 駱駝-2-7B | 米斯特拉爾-7B | 駱駝-2-13B | 美洲駝-30B | 翼34B | 駱駝-2-70B | Qwen-1.5-72B |
|---|---|---|---|---|---|---|---|---|
| TRT-LLM-FP16 | 1326 | 第444章 | 第1566章 | 92 | OOM | OOM | OOM | OOM |
| TRT-LLM-W4A16 | 第1431章 | 第681章 | 第1457章 | 第368章 | 148 | 313 | 119 | 17 號 |
| TRT-LLM-W8A8 | 2634 | 第1271章 | 2569 | 第440章 | 123 | 第364章 | OOM | OOM |
| 原子-W4A4 | -- | 2120 | -- | -- | -- | -- | -- | -- |
| QuaRot-W4A4 | -- | 805 | -- | 第413章 | 133 | -- | -- | 15 |
| QServe-W4A8KV4 | 3656 | 2394 | 3774 | 第1327章 | 504 | 第869章 | 第286章 | 59 |
| 吞吐量增加* | 1.39倍 | 1.13倍 | 1.47倍 | 3.02倍 | 3.41倍 | 2.39倍 | 2.40倍 | 3.47倍 |
| A100(80G) | 駱駝-3-8B | 駱駝-2-7B | 米斯特拉爾-7B | 駱駝-2-13B | 美洲駝-30B | 翼34B | 駱駝-2-70B | Qwen-1.5-72B |
|---|---|---|---|---|---|---|---|---|
| TRT-LLM-FP16 | 2503 | 第1549章 | 2371 | 第488章 | 80 | 145 | OOM | OOM |
| TRT-LLM-W4A16 | 2370 | 第1549章 | 2403 | 第871章 | 第352章 | 第569章 | 第358章 | 143 |
| TRT-LLM-W8A8 | 2396 | 2334 | 2427 | 第1277章 | 第361章 | 第649章 | 235 | 53 |
| 原子-W4A4 | -- | 1160 | -- | -- | -- | -- | -- | -- |
| QuaRot-W4A4 | -- | 第1370章 | -- | 第289章 | 第267章 | -- | -- | 68 |
| QServe-W4A8KV4 | 3005 | 2908 | 2970 | 1741 | 第749章 | 803 | 第419章 | 340 |
| 吞吐量增加* | 1.20倍 | 1.25倍 | 1.22倍 | 1.36倍 | 2.07倍 | 1.23倍 | 1.17倍 | 2.38倍 |
QServe 和基準系統的絕對令牌產生吞吐量(單位:令牌/秒--表示不支援)。所有實驗都是在相同的設備記憶體預算下進行的。 QServe 的吞吐量增加是根據每列中的最佳基線計算的。
如果您發現deepcompressor對您的研究有用或相關,請引用我們的論文:
@article{lin2024qserve, title={QServe: W4A8KV4 量化和系統協同設計,實現高效的LLM 服務},作者={Lin*、Yujun 和Tang*、Haotian 和Yang*、Shang 和張、Zhekai 和Shaw、Guangxuan 和Gan ,莊韓宋},期刊={arXiv預印本arXiv:2405.04532},年份={2024}}@article{
li2024svdquant,標題={SVDQuant:透過4位擴散模型的低階分量吸收異常值},作者={Li*,Muyang和Lin*,Yujun和Zhang*,Zhekai和Cai,Tianle和Li,Xiuyu和Guo,謝俊賢和謝、恩澤和孟、陳林和朱、俊彥和韓、宋},journal={arXiv 預印本arXiv:2411.05007},year={2024}}以下項目與 QServe 高度相關。我們團隊為高效的大型模型開發了全端應用-演算法-系統-硬體支持,獲得了9k+ GitHub star和超過 1M Huggingface 社群下載。
也歡迎您查看 MIT HAN 實驗室,以了解有關高效生成人工智慧的其他令人興奮的項目!
[系統] QServe:W4A8KV4量化實現高效率的LLM服務
[系統] TinyChat:使用 AWQ 的高效能輕量級聊天機器人
[應用] VILA:視覺語言模型的預訓練
[演算法] AWQ:LLM壓縮和加速的激活感知權重量化
[演算法] SmoothQuant:大型語言模型準確且有效率的訓練後量化
[演算法] DistriFusion:高解析度擴散模型的分散式平行推理
[硬體] SpAtten:具有級聯令牌和頭部修剪的高效稀疏注意力架構
DeepCompressor 的靈感來自許多開源程式庫,包括(但不限於)GPTQ、QuaRot 和 Atom。