SVDQuant:MIT 推出的扩散模型后训练的量化技术,能够将模型的权重和激活值量化至4位,减少内存占用并加速推理过程

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: SVDQuant是由MIT研究团队推出的扩散模型后训练量化技术,通过将模型的权重和激活值量化至4位,显著减少了内存占用并加速了推理过程。该技术引入了高精度的低秩分支来吸收量化过程中的异常值,支持多种架构,并能无缝集成低秩适配器(LoRAs),为资源受限设备上的大型扩散模型部署提供了有效的解决方案。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 量化压缩:将扩散模型的权重和激活值量化到4位,减少模型大小和内存占用。
  2. 加速推理:通过量化减少计算复杂度,提高模型在GPU上的推理速度。
  3. 低秩分支:引入低秩分支处理量化中的异常值,减少量化误差,提升图像质量。

正文(附运行示例)

SVDQuant 是什么

公众号: 蚝油菜花 - nunchaku

SVDQuant是由MIT研究团队推出的后训练量化技术,专门针对扩散模型进行优化。该技术通过将模型的权重和激活值量化至4位,显著减少了内存占用,并加速了推理过程。SVDQuant引入了一个高精度的低秩分支,用于吸收量化过程中的异常值,从而在保持图像质量的同时,实现了在16GB 4090 GPU上3.5倍的显存优化和8.7倍的延迟减少。

SVDQuant支持DiT和UNet架构,并能无缝集成现成的低秩适配器(LoRAs),无需重新量化。这为在资源受限的设备上部署大型扩散模型提供了有效的解决方案。

SVDQuant 的主要功能

  • 量化压缩:将扩散模型的权重和激活值量化到4位,减少模型大小,降低内存占用。
  • 加速推理:量化减少计算复杂度,提高模型在GPU上的推理速度。
  • 低秩分支吸收异常值:引入低秩分支处理量化中的异常值,减少量化误差。
  • 内核融合:设计推理引擎Nunchaku,基于内核融合减少内存访问,进一步提升推理效率。
  • 支持多种架构:兼容DiT和UNet架构的扩散模型。
  • LoRA集成:无缝集成低秩适配器(LoRAs),无需重新量化。

SVDQuant 的技术原理

  • 量化处理:对模型的权重和激活值进行4位量化,对保持模型性能构成挑战。
  • 异常值处理:用平滑技术将激活值中的异常值转移到权重上,基于SVD分解权重,将权重分解为低秩分量和残差。
  • 低秩分支:引入16位精度的低秩分支处理权重中的异常值,将残差量化到4位,降低量化难度。
  • Eckart-Young-Mirsky定理:移除权重中的主导奇异值,大幅减小权重的幅度和异常值。
  • 推理引擎Nunchaku:设计推理引擎,基于融合低秩分支和低比特分支的内核,减少内存访问和内核调用次数,降低延迟。

如何运行 SVDQuant

安装依赖

首先,创建并激活一个conda环境,然后安装所需的依赖包:

conda create -n nunchaku python=3.11
conda activate nunchaku
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121
pip install diffusers ninja wheel transformers accelerate sentencepiece protobuf
pip install huggingface_hub peft opencv-python einops gradio spaces GPUtil

安装 nunchaku

确保你已经安装了gcc/g++>=11。如果没有,可以通过Conda安装:

conda install -c conda-forge gxx=11 gcc=11

然后从源码构建并安装nunchaku包:

git clone https://github.com/mit-han-lab/nunchaku.git
cd nunchaku
git submodule init
git submodule update
pip install -e .

使用示例

example.py中,提供了一个运行INT4 FLUX.1-schnell模型的最小脚本:

import torch
from diffusers import FluxPipeline
from nunchaku.models.transformer_flux import NunchakuFluxTransformer2dModel

transformer = NunchakuFluxTransformer2dModel.from_pretrained("mit-han-lab/svdq-int4-flux.1-schnell")
pipeline = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-schnell", transformer=transformer, torch_dtype=torch.bfloat16
).to("cuda")
image = pipeline("A cat holding a sign that says hello world", num_inference_steps=4, guidance_scale=0).images[0]
image.save("example.png")

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
7月前
|
编解码 并行计算 算法
除了NMS参数,还有哪些因素会影响YOLOv3模型的检测性能?
除了NMS参数,还有哪些因素会影响YOLOv3模型的检测性能?
|
7月前
|
机器学习/深度学习 自然语言处理 测试技术
SUPRA:无须额外训练,将Transformer变为高效RNN,推理速度倍增
`Transformers`模型因其在多种任务上的优秀性能而广泛采用,但其内存需求和推理成本随词元数量指数增长。为解决这一问题,论文《Linearizing Large Language Models》提出`SUPRA`方法,将预训练的`Transformers`转换为递归神经网络(RNN),实现有效推理并降低训练成本至原来的5%。`SUPRA`通过将注意力机制线性化并用`GroupNorm`替代`softmax`,保持预训练模型的优势。经过微调,转换后的模型在标准语言理解和长上下文任务中保持高性能,展示了在长序列处理方面的潜力,但仍有改进空间。
155 2
|
6月前
偏微分方程有了基础模型:样本需求数量级减少,14项任务表现最佳
【6月更文挑战第16天】研究人员提出Poseidon模型,减少求解偏微分方程(PDEs)的样本需求,提升效率。在15个挑战任务中,该模型在14项表现最优。基于scOT的多尺度架构, Poseidon降低了计算成本,但仍有泛化和资源限制。[论文链接](https://arxiv.org/pdf/2405.19101)**
94 4
|
6月前
|
机器学习/深度学习 决策智能
**批量归一化(BN)**是2015年提出的深度学习优化技术,旨在解决**内部协变量偏移**和**梯度问题**。
【6月更文挑战第28天】**批量归一化(BN)**是2015年提出的深度学习优化技术,旨在解决**内部协变量偏移**和**梯度问题**。BN通过在每个小批量上执行**标准化**,然后应用学习到的γ和β参数,确保层间输入稳定性,加速训练,减少对超参数的敏感性,并作为隐含的正则化手段对抗过拟合。这提升了模型训练速度和性能,简化了初始化。
58 0
|
7月前
|
存储 机器学习/深度学习 算法
如何准确的估计llm推理和微调的内存消耗
最近发布的三个大型语言模型——Command-R+ (104B参数), Mixtral-8x22b (141B参数的MoE模型), 和 Llama 3 70b (70.6B参数)——需要巨大的内存资源。推理时,Command-R+需193.72GB GPU RAM,Mixtral-8x22B需262.63GB,Llama 370b需131.5GB。激活的内存消耗根据序列长度、批大小等因素变化。文章详细介绍了计算这些模型内存需求的方法,并探讨了如何通过量化、优化器优化和梯度检查点减少内存使用,以适应微调和推理。
750 0
|
7月前
|
机器学习/深度学习
YOLOv8改进 | Conv篇 | 利用轻量化PartialConv提出一种全新的结构CSPPC (参数量下降约100W)
YOLOv8改进 | Conv篇 | 利用轻量化PartialConv提出一种全新的结构CSPPC (参数量下降约100W)
1139 0
|
机器学习/深度学习
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(二)
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(二)
337 0
|
机器学习/深度学习 存储 边缘计算
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(一)
部署技巧之PAGCP剪枝 | Yolov5/ResNet参数降低50%速度翻倍精度不减(一)
1172 0
|
自然语言处理 测试技术
模型越大,表现越差?谷歌收集了让大模型折戟的任务,还打造了一个新基准
模型越大,表现越差?谷歌收集了让大模型折戟的任务,还打造了一个新基准
188 0
|
机器学习/深度学习 编解码 人工智能
稠密检索新突破:华为提出掩码自编码预训练模型,大幅刷新多项基准
稠密检索新突破:华为提出掩码自编码预训练模型,大幅刷新多项基准
265 0

热门文章

最新文章