Transformers 文档
AutoRound
并获得增强的文档体验
开始使用
AutoRound
AutoRound 是一种先进的量化算法,即使在 2 位精度下也能提供强大的准确性。它利用符号梯度下降在仅仅 200 步内微调舍入值和最小-最大裁剪阈值。它设计用于广泛的兼容性,无缝支持各种大型语言模型(LLM),并正在积极扩展以涵盖更多的视觉语言模型(VLM)。它还支持跨多个硬件平台进行量化和推理,包括 CPU、XPU 和 CUDA。
AutoRound 还提供各种实用功能,包括混合位调优和推理、lm-head 量化、支持导出为 GPTQ/AWQ/GGUF 等格式,以及灵活的调优方案。有关全面的概述和最新更新,请查阅 AutoRound 的 README。
AutoRound 最初是作为 Intel Neural Compressor 的一部分开发的,作为深度学习的通用模型压缩库。此后,它演变为一个独立的库,专门专注于大型语言模型(LLM)的低精度优化。AutoRound 仍与 Intel Neural Compressor 完全集成,您可以浏览存储库了解更多详情。
安装
pip install auto-round
支持的量化配置
AutoRound 支持多种量化配置:
- Int8 仅权重
- Int4 仅权重
- Int3 仅权重
- Int2 仅权重
- 混合位仅权重
硬件兼容性
支持 CPU、XPU 和 CUDA 进行量化和推理。
量化和序列化(离线)
目前,仅支持离线模式生成量化模型。
命令行用法
auto-round \ --model facebook/opt-125m \ --bits 4 \ --group_size 128 \ --output_dir ./tmp_autoround
AutoRound 还提供了另外两种方案,`auto-round-best` 和 `auto-round-light`,分别旨在提供最佳准确性和提高速度。对于 2 位量化,我们建议使用 `auto-round-best` 或 `auto-round`。
W4G128 13 项任务(mmlu-pro、if_eval、gsm8k 等)的平均准确率和时间消耗结果(测试在 Nvidia A100 80G 上进行,使用 PyTorch 2.6.0 版本,并启用了 `torch_compile`)
模型 | Qwen2.5-0.5B-Instruct | Falcon3-3B | Qwen2.5-7B-Instruct | Meta-Llama-3.1-8B-Instruct | Falcon3-10B | Qwen2.5-72B-Instruct |
---|---|---|---|---|---|---|
16比特 | 0.4192 | 0.5203 | 0.6470 | 0.6212 | 0.6151 | 0.7229 |
最佳 | 0.4137(7分钟) | 0.5142(23分钟) | 0.6426(58分钟) | 0.6116(65分钟) | 0.6092(81分钟) | 0.7242(575分钟) |
默认 | 0.4129(2分钟) | 0.5133(6分钟) | 0.6441(13分钟) | 0.6106(13分钟) | 0.6080(18分钟) | 0.7252(118分钟) |
轻量级 | 0.4052(2分钟) | 0.5108(3分钟) | 0.6453(5分钟) | 0.6104(6分钟) | 0.6063(6分钟) | 0.7243(37分钟) |
推理
AutoRound 会根据已安装的库自动选择最佳可用后端,并在找到更好的后端时提示用户安装额外的库。
CPU
支持 2、4 和 8 位。我们建议使用 intel-extension-for-pytorch (IPEX) 进行 4 位推理。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "OPEA/Qwen2.5-1.5B-Instruct-int4-sym-inc"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
text = "There is a girl who likes adventure,"
inputs = tokenizer(text, return_tensors="pt").to(model.device)
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=50, do_sample=False)[0]))
问题
如果您在使用 transformers 集成时遇到任何问题,请在 transformers 仓库中提出问题。
如果您在使用 auto-round 时遇到任何问题,请在 AutoRound 仓库中提出问题。
致谢
特别感谢 AutoGPTQ、AutoAWQ、GPTQModel、Triton、Marlin 和 ExLLaMAV2 等开源低精度库,它们提供了 AutoRound 中利用的低精度 CUDA 内核。
贡献
欢迎并非常感谢对 AutoRound 的贡献!无论是修复 bug、改进文档、添加新功能还是提出改进建议,您的帮助都非常宝贵。
< > 在 GitHub 上更新