OmniQuant简介
OmniQuant是一种针对大语言模型(LLMs)的简单而强大的量化技术。它提出了一种全方位校准的量化方法,可以在保持post-training量化的训练时间和数据效率的同时,实现接近量化感知训练的性能。
OmniQuant的主要特点包括:
- 支持权重量化(W4A16/W3A16/W2A16)和权重-激活量化(W6A6, W4A4)
- 提供了预训练的OmniQuant模型库,包括LLaMA-1&2、LLaMA-2-Chat、OPT等模型
- 利用MLC-LLM实现了在GPU和移动设备上运行量化后的LLaMA-2-Chat模型
相关资源
-
GitHub仓库: https://github.com/OpenGVLab/OmniQuant
这是OmniQuant的官方代码仓库,包含了完整的实现代码、使用说明和实验结果。
-
论文: OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models
详细介绍了OmniQuant的技术原理和实验结果。
-
HuggingFace模型库: https://huggingface.co/ChenMnZ/OmniQuant/tree/main
提供了预训练的OmniQuant模型参数下载。
-
MLC-LLM项目: https://github.com/mlc-ai/mlc-llm
OmniQuant利用MLC-LLM实现了量化模型在多种硬件后端的部署。
使用教程
- 安装
conda create -n omniquant python=3.10 -y
conda activate omniquant
git clone https://github.com/OpenGVLab/OmniQuant.git
cd OmniQuant
pip install --upgrade pip
pip install -e .
- 权重量化示例(以LLaMA-7B为例)
CUDA_VISIBLE_DEVICES=0 python main.py \
--model /PATH/TO/LLaMA/llama-7b \
--epochs 20 --output_dir ./log/llama-7b-w3a16 \
--eval_ppl --wbits 3 --abits 16 --lwc
- 权重-激活量化示例
CUDA_VISIBLE_DEVICES=0 python main.py \
--model /PATH/TO/LLaMA/llama-7b \
--epochs 20 --output_dir ./log/llama-7b-w4a4 \
--eval_ppl --wbits 4 --abits 4 --lwc --let \
--tasks piqa,arc_easy,arc_challenge,boolq,hellaswag,winogrande
- 使用MLC-LLM部署量化模型
详细教程见runing_quantized_models_with_mlc_llm.ipynb
实验结果
OmniQuant在权重量化和权重-激活量化上都达到了当前最优水平(SOTA)的性能。具体结果可以参考GitHub仓库中的结果展示部分。
OmniQuant为大语言模型的量化和部署提供了一个简单有效的解决方案。欢迎感兴趣的读者深入研究相关资源,尝试使用OmniQuant来压缩和加速您的语言模型。