llm-awq

llm-awq

激活感知权重量化技术实现大语言模型高效压缩与加速

AWQ是一种高效的大语言模型低比特权重量化技术,支持INT3/4量化,适用于指令微调和多模态模型。它提供预计算模型库、内存高效的4位线性层和快速推理CUDA内核。AWQ使TinyChat可在边缘设备上实现大模型高效本地推理。该技术已被Google、Amazon等采用,并获MLSys 2024最佳论文奖。

AWQLLM模型量化视觉语言模型边缘设备Github开源项目

AWQ: 用于LLM压缩和加速的激活感知权重量化

[论文][幻灯片][视频]

高效且精确的LLM低位权重量化(INT3/4),支持指令微调模型和多模态语言模型。

概览

当前版本支持:

  • 用于精确量化的AWQ搜索。
  • LLM预计算AWQ模型库(Llama-1/2/3, OPT, CodeLlama, StarCoder, Vicuna, VILA, LLaVA; 加载生成量化权重)。
  • PyTorch中内存高效的4位线性层。
  • 高效CUDA内核实现,用于快速推理(支持上下文和解码阶段)。
  • 指令微调模型(Vicuna)和多模态LM(VILA)的4位推理示例。

借助AWQ,TinyChat能通过4位推理为LLM/VLM聊天机器人提供更高效的响应。

  • RTX 4090上的TinyChat(比FP16快3.4倍):

RTX 4090上的TinyChat: W4A16比FP16快3.4倍

  • Jetson Orin上的TinyChat(比FP16快3.2倍):

Orin上的TinyChat: W4A16比FP16快3.2倍

TinyChat还支持视觉语言模型(如VILA, LLaVA)的推理。在以下示例中,使用TinyChat启动了VILA系列的W4A16量化模型。

  • RTX 4090上使用VILA-13B的TinyChat(支持多图像输入):

4090上使用VILA的TinyChat

  • Jetson Orin上使用VILA-7B/13B的TinyChat:

Orin上使用VILA的TinyChat

查看TinyChat,它为在资源受限的边缘平台设备本地推理LLM和VLM提供了一站式解决方案。使用TinyChat,现在可以在小型低功耗设备上高效运行大型模型,甚至无需互联网连接!

新闻

  • [2024/05] 🏆 AWQ获得MLSys 2024最佳论文奖。🎉
  • [2024/05] 🔥 具有视频理解功能的VILA-1.5模型系列现已在AWQ和TinyChat中得到支持。查看由TinyChat提供支持的在线演示。示例在这里
  • [2024/05] 🔥 AMD采用AWQ来提高LLM服务效率。
  • [2024/04] 🔥 我们发布了对Llama-3模型系列的AWQ和TinyChat支持!查看我们的示例在这里
  • [2024/02] 🔥 AWQ已被接受参加MLSys 2024
  • [2024/02] 🔥 我们在AWQ和TinyChat中支持了VILA视觉语言模型!查看我们最新的多图像输入演示!
  • [2024/02] 🔥 我们在TinyChat中发布了新版本的量化GEMM/GEMV内核,在NVIDIA Jetson Orin上实现了每秒38个token的推理速度!
  • [2024/01] 🔥 AWQ已被Google Vertex AI集成!
  • [2023/11] 🔥 AWQ已被Amazon Sagemaker Containers集成!
  • [2023/11] 🔥 我们为CodeLlama、StarCoder、StableCode模型添加了AWQ支持和预计算搜索结果。查看我们的模型库在这里
  • [2023/11] 🔥 AWQ现在通过from_pretrained在Hugging Face transformers中原生集成。您可以从Hub加载量化模型或自己的HF量化模型。
  • [2023/10] AWQ已集成到NVIDIA TensorRT-LLM
  • [2023/09] AWQ已集成到Intel Neural CompressorFastChatvLLMHuggingFace TGILMDeploy中。
  • [2023/09] ⚡ 查看我们最新的TinyChat,在Orin上比首次发布快约2倍!
  • [2023/09] ⚡ 查看AutoAWQ,这是一个第三方实现,使AWQ更容易扩展到新模型、提高推理速度并集成到Huggingface中。
  • [2023/07] 🔥 我们发布了TinyChat,一个基于AWQ的高效轻量级聊天机器人界面。TinyChat能在云端和边缘GPU上进行高效的LLM推理。支持Llama-2-chat模型!查看我们的实现在这里
  • [2023/07] 🔥 我们为Llama-2模型(7B和13B)添加了AWQ支持和预计算搜索结果。查看我们的模型库在这里
  • [2023/07] 我们扩展了对更多LLM模型的支持,包括MPT、Falcon和BLOOM。

目录

有用的链接

安装

  1. 克隆此仓库并进入AWQ文件夹
git clone https://github.com/mit-han-lab/llm-awq
cd llm-awq
  1. 安装包
conda create -n awq python=3.10 -y
conda activate awq
pip install --upgrade pip  # 启用 PEP 660 支持
pip install -e .
  • 对于 边缘设备 如 Orin,在运行上述命令之前,请:

    1. 修改 pyproject.toml,注释掉这一行
    2. 这一行设置为 transformers==4.32.0。
    3. NVIDIA 手动安装预编译的 PyTorch 二进制文件(>=2.0.0)。
    4. 为 conda 环境设置适当的 Python 版本(例如,对于 JetPack 5,使用 conda create -n awq python=3.8 -y)。
  1. 安装高效的 W4A16(4 位权重,16 位激活)CUDA 内核和优化的 FP16 内核(如 layernorm、位置编码)。
cd awq/kernels
python setup.py install
  1. 为了使用 VILA-1.5 模型系列运行 AWQ 和 TinyChat,请安装 VILA:
git clone git@github.com:Efficient-Large-Model/VILA.git cd VILA pip install -e .

AWQ 模型库

我们为多个模型系列提供了预计算的 AWQ 搜索结果,包括 LLaMA、OPT、Vicuna 和 LLaVA。要获取预计算的 AWQ 搜索结果,请运行:

# git lfs install # 如果尚未安装,请安装 git lfs git clone https://huggingface.co/datasets/mit-han-lab/awq-model-zoo awq_cache

详细支持列表:

模型大小INT4-g128INT3-g128
VILA-1.53B/8B/13B/40B
Llama38B/70B
VILA7B/13B
Llama27B/13B/70B
LLaMA7B/13B/30B/65B
OPT125m/1.3B/2.7B/6.7B/13B/30B
CodeLlama7B/13B/34B
StarCoder15.5B
Vicuna-v1.17B/13B
LLaVA-v013B

注意:我们在上表中只列出了我们已准备好 AWQ 搜索结果 的模型。AWQ 还支持如 LLaVA-v1.5 7B 等模型,您可能需要自行运行 AWQ 搜索 来量化这些模型。

示例

由于 AWQ 具有良好的泛化能力,它可以轻松应用于各种语言模型,包括指令调优模型和多模态语言模型。它为减少大型语言模型的服务成本提供了一种易用的工具。

这里我们在 ./examples 目录下提供了两个 AWQ 应用示例:Vicuna-7B(聊天机器人)和 LLaVA-13B(视觉推理)。AWQ 可以轻松减少模型服务的 GPU 内存使用并加快 token 生成速度。它提供准确的量化,产生推理输出。在使用 4 位权重运行模型时,您应该能够观察到 内存节省

请注意,尽管我们在多模态输入上运行,但我们只使用文本校准数据进行 AWQ。详情请参阅 ./examples

概览

使用方法

我们提供了几个示例脚本来运行 AWQ(请参阅 ./scripts)。这里我们以 Llama3-8B 为例。

  1. 执行 AWQ 搜索并保存搜索结果(我们已经为您完成了这一步):
python -m awq.entry --model_path /PATH/TO/LLAMA3/llama3-8b \ --w_bit 4 --q_group_size 128 \ --run_awq --dump_awq awq_cache/llama3-8b-w4-g128.pt
  1. 在 WikiText-2 上评估 AWQ 量化模型(模拟伪量化)
python -m awq.entry --model_path /PATH/TO/LLAMA3/llama3-8b \ --tasks wikitext \ --w_bit 4 --q_group_size 128 \ --load_awq awq_cache/llama3-8b-w4-g128.pt \ --q_backend fake
  1. 生成实际量化权重(INT4)
mkdir quant_cache python -m awq.entry --model_path /PATH/TO/LLAMA3/llama3-8b \ --w_bit 4 --q_group_size 128 \ --load_awq awq_cache/llama3-8b-w4-g128.pt \ --q_backend real --dump_quant quant_cache/llama3-8b-w4-g128-awq.pt
  1. 加载并评估实际量化模型(现在您可以看到更小的 GPU 内存使用)
python -m awq.entry --model_path /PATH/TO/LLAMA3/llama3-8b \ --tasks wikitext \ --w_bit 4 --q_group_size 128 \ --load_quant quant_cache/llama3-8b-w4-g128-awq.pt

视觉语言模型(VILA-1.5)的结果

AWQ 也无缝支持大型多模态模型(LMMs)。我们展示了最近的 VILA-1.5 模型系列的结果。

VILA-1.5-3BVQA-v2GQAVizWizScienceQATextVQAPOPEMMEMMBenchMMBench-CNSEED
FP1680.461.553.569.060.485.91442.463.452.760.9
AWQ-INT480.061.153.867.860.485.91437.363.351.459.8
VILA-1.5-8BVQA-v2GQAVizWizScienceQATextVQAPOPEMMEMMBenchMMBench-CNSEED
FP1680.961.958.779.966.384.41577.0172.366.264.2
AWQ-INT480.361.759.379.065.482.91593.6571.064.964.0
VILA-1.5-13BVQA-v2GQAVizWizScienceQATextVQAPOPEMMEMMBenchMMBench-CNSEED
-----------:-----------------::-----------------::-------::-----------------::-----------------::-------::-------::-----------------::-------------::-------:
FP1682.864.362.680.165.086.31569.5574.966.365.1
AWQ-INT482.764.563.379.764.786.71531.3574.766.765.1
VILA-1.5-40BVQA-v2GQAVizWizScienceQATextVQAPOPEMMEMMBenchMMBench-CNSEED
FP1684.364.662.287.273.687.31726.8282.480.269.1
AWQ-INT484.164.461.386.773.288.21714.7983.279.668.9

推理速度(令牌/秒)

$~~~~~~$精度A1004090Orin
VILA1.5-3Bfp16104.6137.625.4
VILA1.5-3B-AWQint4182.8215.542.5
VILA1.5-3B-S2fp16104.3137.224.6
VILA1.5-3B-S2-AWQint4180.2219.340.1
Llama-3-VILA1.5-8Bfp1674.957.410.2
Llama-3-VILA1.5-8B-AWQint4168.9150.228.7
VILA1.5-13Bfp1650.9OOM6.1
VILA1.5-13B-AWQint4115.9105.720.6
VILA1.5-40Bfp16OOMOOM--
VILA1.5-40B-AWQint457.0OOM--

参考文献

如果您发现AWQ对您的研究有用或相关,请引用我们的论文:

@inproceedings{lin2023awq,
  title={AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration},
  author={Lin, Ji and Tang, Jiaming and Tang, Haotian and Yang, Shang and Chen, Wei-Ming and Wang, Wei-Chen and Xiao, Guangxuan and Dang, Xingyu and Gan, Chuang and Han, Song},
  booktitle={MLSys},
  year={2024}
}

相关项目

SmoothQuant: 大型语言模型的准确高效后训练量化

GPTQ: 生成式预训练Transformers的准确后训练压缩

Vicuna和FastChat

LLaVA: 大型语言和视觉助手

VILA: 视觉语言模型的预训练

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多