
用于大型语言模型和扩散模型的模型压缩工具箱
[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 倍。 3-8B,Qwen1.5-72B 的吞吐量提高 2.4 倍至 3.5 倍。
请参阅 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 ,庄和韩,宋},journal={arXiv 预印本 arXiv:2405.04532},年={2024}}@文章{
li2024svdquant,标题={SVDQuant:通过4位扩散模型的低阶分量吸收异常值},作者={Li*,Muyang和Lin*,Yujun和Zhang*,Zhekai和Cai,Tianle和Li,Xiuyu和Guo,俊贤和谢、恩泽和孟、陈林和朱、俊彦和韩、宋},journal={arXiv 预印本arXiv:2411.05007},年份={2024}}以下项目与 QServe 高度相关。我们团队为高效的大型模型开发了全栈应用-算法-系统-硬件支持,获得了9k+ GitHub star和超过 1M Huggingface 社区下载。
也欢迎您查看 MIT HAN 实验室,了解有关高效生成人工智能的其他令人兴奋的项目!
[系统] QServe:W4A8KV4量化实现高效的LLM服务
[系统] TinyChat:使用 AWQ 的高效轻量级聊天机器人
[应用] VILA:视觉语言模型的预训练
[算法] AWQ:LLM压缩和加速的激活感知权重量化
[算法] SmoothQuant:大型语言模型准确高效的训练后量化
[算法] DistriFusion:高分辨率扩散模型的分布式并行推理
[硬件] SpAtten:具有级联令牌和头部修剪的高效稀疏注意力架构
DeepCompressor 的灵感来自许多开源库,包括(但不限于)GPTQ、QuaRot 和 Atom。