OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  AutoRound — 面向大模型部署的高效量化工具

AutoRound — 面向大模型部署的高效量化工具

 
  glue ·  2026-06-13 11:00:23 · 26 次点击  · 0 条评论  

AutoRound 概览

大语言模型的高级量化算法

[![python](https://img.shields.io/badge/python-3.10%2B-blue)](https://github.com/intel/auto-round) [![version](https://img.shields.io/badge/release-0.13.0-green)](https://github.com/intel/auto-round/releases) [![nightly](https://img.shields.io/badge/pypi-nightly-green)](https://pypi.org/project/auto-round-nightly) [![license](https://img.shields.io/badge/license-Apache%202-9C27B0)](https://github.com/intel/auto-round/blob/main/LICENSE) 模型检查点     [English](README.md) | 简体中文 [用户指南](./docs/step_by_step_CN.md) ---
## 🚀 AutoRound 是什么? AutoRound 是一款专为大型语言模型 (LLM) 和视觉语言模型 (VLM) 设计的高级量化工具包。它通过利用**符号梯度下降**,能在极低比特宽度(2-4 比特)下实现高精度,同时只需极少的调校,并提供广泛的硬件兼容性。更多详情请参见我们的论文 [SignRoundV1](https://arxiv.org/pdf/2309.05516) 和 [SignRoundV2](http://arxiv.org/abs/2512.04746)。使用说明请参考[用户指南](./docs/step_by_step_CN.md)。

AutoRound 概览

## 🆕 最新动态 * [2026/05] 我们为通过纯 RTN 模式进行的免校准量化提供**免费**设备;请访问 [Intel Low Bit Open LLM Leaderboard](https://huggingface.co/spaces/Intel/low_bit_open_llm_leaderboard) 了解更多详情。 * [2026/05] **无模型** 量化现已可用,`auto-round-rtn` 将默认使用无模型方法:[文档](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#model-free-mode)。 * [2026/03] **逐块 FP8** 量化已可用,推荐使用 `rtn` 模式。`auto-round-rtn --scheme FP8_BLOCK`。 * [2026/03] 该 [PR](https://github.com/intel/auto-round/pull/1526) 已支持 **MTP 层量化**。 * [2025/12] **SignRoundV2** 论文已发布。启用 `enable_alg_ext` 并使用 **AutoScheme** API 进行混合精度量化以复现结果:[*论文*](http://arxiv.org/abs/2512.04746),[*评估 LLaMA 模型的说明*](./docs/alg_202508.md)。 * [2025/11] AutoRound 已集成至 **LLM-Compressor**:[*用法*](https://github.com/vllm-project/llm-compressor/tree/main/examples/autoround/README.md),[*vLLM 博客*](https://blog.vllm.ai/2025/12/09/intel-autoround-llmc.html),[*RedHat 博客*](https://developers.redhat.com/articles/2025/12/09/advancing-low-bit-quantization-llms-autoround-x-llm-compressor),[*X 帖子*](https://x.com/vllm_project/status/1998710451312771532),[*Intel 博客*](https://community.intel.com/t5/Blogs/Products-and-Solutions/HPC/Advancing-Low-Bit-Quantization-for-LLMs-AutoRound-x-LLM/post/1729336),[*Linkedin*](https://www.linkedin.com/posts/vllm-project_advancing-lowbit-quantization-for-llms-activity-7404478053768441856-ru8f/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAapNW8BLnAdCAr57GOwSCJXjf76ZvOEOAg),[*微信*](https://mp.weixin.qq.com/s/l5WA-1_4ipffQN6GOH2Iqg),[*知乎*](https://zhuanlan.zhihu.com/p/1982167638315664412). * [2025/11] 通过 `--enable_alg_ext` 可使用**增强型 GGUF** 量化算法:[*精度*](./docs/gguf_alg_ext_acc.md)。 * [2025/10] AutoRound 已集成至 **SGLang**:[*用法*](https://docs.sglang.io/advanced_features/quantization.html#using-auto-round),[*LMSYS 博客*](https://lmsys.org/blog/2025-11-13-AutoRound/),[*X 帖子*](https://x.com/lmsysorg/status/1991977019220148650?s=20),[*Intel 博客*](https://community.intel.com/t5/Blogs/Tech-Innovation/Artificial-Intelligence-AI/AutoRound-Meets-SGLang-Enabling-Quantized-Model-Inference-with/post/1727196),[*Linkedin*](https://www.linkedin.com/feed/update/urn:li:activity:7397742859354857472). * [2025/10] 一种可在数分钟内生成量化方案的**混合精度**算法现已可用:[*用法*](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#autoscheme),[*精度*](./docs/auto_scheme_acc.md)。 * [2025/09] **MXFP4** 和 **NVFP4** 数据类型已可用:[*精度*](./docs/mxnv_acc.md)。 * [2025/08] 通过 `--enable_alg_ext` 可使用**改进的 INT2** 算法:[*精度*](./docs/alg_202508.md)。 * [2025/07] **GGUF** 格式已支持:[*用法*](./docs/step_by_step.md#gguf-format)。 * [2025/05] AutoRound 已集成至 **vLLM**:[*用法*](https://docs.vllm.ai/en/latest/features/quantization/inc/),[*Medium 博客*](https://medium.com/@NeuralCompressor/accelerating-vllm-and-sglang-deployment-using-autoround-45fdc0b2683e),[*小红书*](https://www.xiaohongshu.com/explore/69396bc6000000000d03e473?note_flow_source=wechat&xsec_token=CB6G3F_yM99q8XfusvyRlJqm8Db4Es2k0kYIHdIUiSQ9g=)。 * [2025/05] AutoRound 已集成至 **Transformers**:[*博客*](https://huggingface.co/blog/autoround)。 * [2025/03] INT2 混合精度的 **DeepSeek-R1** 模型 (~200GB) 保持了 97.9% 的精度:[*模型*](https://huggingface.co/OPEA/DeepSeek-R1-int2-mixed-sym-inc)。 ## ✨ 主要特性 ✅ **卓越精度** 即使在 2-3 比特下也能提供强劲性能 [示例模型](https://huggingface.co/collections/OPEA/2-3-bits-67a5f0bc6b49d73c01b4753b),并在 4 比特下取得领先结果 [基准测试](https://huggingface.co/spaces/Intel/low_bit_open_llm_leaderboard)。 ✅ **生态系统集成** 与 **Transformers、vLLM、SGLang** 等无缝协作。 ✅ **多种格式导出** 支持 **AutoRound、AutoAWQ、AutoGPTQ 和 GGUF**,以实现最大兼容性。详情见[导出格式](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#supported-export-formats)。 ✅ **快速混合比特/数据类型方案生成** 几分钟内自动配置,开销约为模型 BF16 RAM 大小的 1.1 到 1.5 倍。精度[结果](./docs/auto_scheme_acc.md)和[用户指南](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#autoscheme)。 ✅ **优化的就近舍入模式** 使用 `--iters 0` 进行快速量化,4 比特下精度略有下降。详情见[opt_rtn 模式](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#opt-rtn-mode)。 ✅ **经济的量化成本** 在单块 GPU 上约 10 分钟量化 7B 模型。详情见[量化成本](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#quantization-costs)。 ✅ **支持 10+ VLM** 开箱即用地量化 10 多种视觉语言模型 [示例模型](https://huggingface.co/collections/OPEA/vlms-autoround-675bc712fdd6a55ebaf11bfa),[支持矩阵](https://github.com/intel/auto-round/tree/main/auto_round/compressors/mllm#vlm-support-matrix)。 ✅ **多种方案** 从 `auto-round-best`、`auto-round`、`auto-round-light`、`auto-round-opt-rtn`(优化的 RTN)和 `auto-round-rtn`(纯 RTN,最快基线)中选择,以满足您的需求。详情见[量化方案](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#recipe-recommendation)。 ✅ **高级工具** 包括[多 GPU 量化](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#devicemulti-gpu-setting-in-quantization)、[多个校准数据集](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#default-dataset)以及对[10+ 运行时后端](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#specify-inference-backend)的支持。 ✅ **超越仅权重量化**。我们正在积极扩展对额外数据类型的支持,例如 **MXFP**、NVFP、W8A8 等。 ## 安装 ### 从 PyPI 安装
# CPU(Xeon)/GPU(CUDA)
pip install auto-round

# CPU(Xeon)/GPU(CUDA) 每日构建版
pip install auto-round-nightly

# HPU(Gaudi)
# 在 HPU Docker 容器内安装,例如 vault.habana.ai/gaudi-docker/1.23.0/ubuntu24.04/habanalabs/pytorch-installer-2.9.0:latest
pip install auto-round-hpu

# XPU(Intel GPU)
pip install torch --index-url https://download.pytorch.org/whl/xpu
pip install auto-round
从源码构建 ```bash # CPU(Xeon)/GPU(CUDA) pip install . # HPU(Gaudi) python setup.py install hpu # XPU(Intel GPU) pip install torch --index-url https://download.pytorch.org/whl/xpu pip install . ```
## 模型量化 (CPU/Intel GPU/Gaudi/CUDA) >如果在量化过程中遇到问题,请尝试使用纯 RTN 模式 (`iters=0`, `disable_opt_rtn=True`)。此外,建议使用 `group_size=32` 或混合比特以获得更好效果。 ### CLI 用法 在终端中调用 `auto-round -h` 可获得支持的参数完整列表。 > **支持从 ModelScope 下载模型,只需设置 `AR_USE_MODELSCOPE=1`**。
auto-round \
    --model Qwen/Qwen3-0.6B \
    --scheme "W4A16" \
    --format "auto_round" \
    --output_dir ./tmp_autoround
我们还提供了另外两种方案:`auto-round-best`(最佳精度)和 `auto-round-light`(更快速度)。详情如下。
其他方案 ```bash # 最佳精度,慢 3 倍,low_gpu_mem_usage 可节省约 20G 但慢约 30% auto-round-best \ --model Qwen/Qwen3-0.6B \ --scheme "W4A16" \ --low_gpu_mem_usage ``` ```bash # 2-3 倍加速,W4 时精度轻微下降,W2 时精度下降较大 auto-round-light \ --model Qwen/Qwen3-0.6B \ --scheme "W4A16" ``` ```bash # 优化的 RTN (iters=0, opt_rtn 启用); 快速基线 auto-round-opt-rtn \ --model Qwen/Qwen3-0.6B \ --scheme "W4A16" ``` ```bash # 纯 RTN (iters=0, 无 AutoRound 优化); 最快,内存需求最低 # 对于支持的 INT WOQ 方案,自动路由到无模型模式 auto-round-rtn \ --model Qwen/Qwen3-0.6B \ --scheme "W4A16" ```
总之,我们建议对 **W4A16 使用 auto-round**,对 **W2A16 使用带有 `enable_alg_ext` 的 auto-round-best**。不过,您可以根据自己的具体需求和可用资源调整配置。 ### API 用法
from auto_round import AutoRound

# 加载模型 (支持 FP8/BF16/FP16/FP32)
model_name_or_path = "Qwen/Qwen3-0.6B"

# 可用方案: "W2A16", "W3A16", "W4A16", "W8A16", "NVFP4", "MXFP4" (无实际内核), "GGUF:Q4_K_M", 等
ar = AutoRound(model_name_or_path, scheme="W4A16")

# 最高精度 (慢 4-5 倍)
# `low_gpu_mem_usage=True` 可节省约 20GB VRAM,但运行速度慢约 30%
# ar = AutoRound(model_name_or_path, nsamples=512, iters=1000, low_gpu_mem_usage=True)

# 更快的量化 (2-3 倍加速) 在 W4G128 时精度轻微下降
# ar = AutoRound(model_name_or_path, nsamples=128, iters=50, lr=5e-3)

# 支持格式: "auto_round" (默认), "auto_gptq", "auto_awq", "llm_compressor", "gguf:q4_k_m", 等
ar.quantize_and_save(output_dir="./qmodel", format="auto_round")
重要超参数 ##### 量化方案与配置 - **`scheme` (str|dict|AutoScheme)**: 预定义的量化键,例如 `W4A16`、`MXFP4`、`NVFP4`、`GGUF:Q4_K_M`。对于 MXFP4/NVFP4,建议导出为 LLM-Compressor 格式。 - **`bits` (int)**: 量化位数(默认为 `None`)。如果不为 None,将覆盖 scheme 设置。 - **`group_size` (int)**: 量化组大小(默认为 `None`)。如果不为 None,将覆盖 scheme 设置。 - **`sym` (bool)**: 是否使用对称量化(默认为 `None`)。如果不为 None,将覆盖 scheme 设置。 - **`layer_config` (dict)**: 逐层方案的配置(默认为 `None`),主要用于自定义混合方案。 ##### 算法设置 - **`enable_alg_ext` (bool)**: [实验性功能] 仅适用于 `iters>0`。为特定方案(例如 MXFP4/W2A16)启用可能带来显著改进的算法变体。默认为 `False`。 - **`disable_opt_rtn` (bool|None)**: 对特定方案(例如 GGUF 和 WOQ)使用纯 RTN 模式。默认为 `None`。如果为 None,大多数情况下默认为 `False` 以提高精度,但可能因已知问题而设置为 `True`。 ##### 调优过程参数 - **`iters` (int)**: 调优迭代次数(默认为 `200`)。常见值:0(RTN 模式),50(推荐与 `lr=5e-3` 一起使用),1000。更高的值可提高精度但会减慢调优速度。 - **`lr` (float)**: 舍入值的学习率(默认为 `None`)。当为 None 时,将自动设置为 `1.0/iters`。 - **`batch_size` (int)**: 训练的批次大小(默认为 `8`)。4 也常用。 - **`enable_deterministic_algorithms` (bool)**: 是否启用确定性算法以实现可复现性(默认为 `False`)。 ##### 校准数据集 - **`dataset` (str|list|tuple|torch.utils.data.DataLoader)**: 调优用的数据集(默认为 `"NeelNanda/pile-10k"`)。支持本地 JSON 文件和数据集的组合,例如 `"./tmp.json,NeelNanda/pile-10k:train,mbpp:train+validation+test"`。 - **`nsamples` (int)**: 调优用的样本数量(默认为 `128`)。 - **`seqlen` (int)**: 调优序列的数据长度(默认为 `2048`)。 ##### 设备/速度配置 - **`enable_torch_compile` (bool)**: 如果没有引发异常,通常建议将其设置为 `True` 以更快、更省资源地进行量化。 - **`low_gpu_mem_usage` (bool)**: 是否以增加约 20% 调优时间为代价将中间特征卸载到 CPU(默认为 `False`)。 - **`low_cpu_mem_usage` (bool)**: [实验性功能] 是否启用立即保存以减少 RAM 使用(默认为 `True`)。 - **`device_map` (str|dict|int)**: 调优使用的设备,例如 `auto`、`cpu`、`cuda`、`0,1,2`(默认为 `0`)。使用 `auto` 时,将尝试使用所有可用的 GPU。
### 支持的方案
> 灰色表示缺少内核或仅有低效/参考内核。BF16 主要用于 AutoScheme。 | 格式 | 支持的方案 | |:-----------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **auto_round** | W4A16(推荐), W2A16, W3A16, W8A16, W2A16G64, W2A16G32, `MXFP4`, `MXFP8`, `MXFP4_RCEIL`, `MXFP8_RCEIL`, `NVFP4`, `FPW8A16`, `FP8_STATIC`, `BF16` | | **auto_awq** | W4A16(推荐), BF16 | | **auto_gptq** | W4A16(推荐), W2A16, W3A16, W8A16, W2A16G64, W2A16G32, BF16 | | **llm_compressor**| NVFP4(推荐), `MXFP4`, `MXFP8`, `FPW8A16`, `FP8_STATIC`, `FP8_BLOCK`, `INT8`, `W4A16`, `W8A16` | | **gguf** | GGUF:Q4_K_M(推荐), GGUF:Q2_K_S, GGUF:Q3_K_S, GGUF:Q3_K_M, GGUF:Q3_K_L, GGUF:Q4_K_S, GGUF:Q5_K_S, GGUF:Q5_K_M, GGUF:Q6_K, GGUF:Q4_0, GGUF:Q4_1, GGUF:Q5_0, GGUF:Q5_1, GGUF:Q8_0 | | **fake** | `所有方案 (仅用于研究)` |
### 自适应方案 (实验性功能) AutoScheme 提供一种自动算法来生成自适应的混合比特/数据类型量化方案。有关 AutoScheme 的更多详情,请参见[用户指南](https://github.com/intel/auto-round/blob/main/docs/step_by_step.md#autoscheme)。
from auto_round import AutoRound, AutoScheme

model_name = "Qwen/Qwen3-8B"
avg_bits = 3.0
scheme = AutoScheme(avg_bits=avg_bits, options=("GGUF:Q2_K_S", "GGUF:Q4_K_S"), ignore_scale_zp_bits=True)
layer_config = {"lm_head": "GGUF:Q6_K"}

# 对于非 GGUF 方案,将 iters 改为 200
ar = AutoRound(model=model_name, scheme=scheme, layer_config=layer_config, iters=0)
ar.quantize_and_save()
AutoScheme 的重要超参数 ##### AutoScheme 超参数 - **`avg_bits` (float)**: 整个模型的目标平均比特宽度。仅量化层包含在平均比特计算中。 - **`options` (str | list[str] | list[QuantizationScheme])**: 可供选择的候选量化方案。可以是单个逗号分隔的字符串(例如 `"W4A16,W2A16"`)、字符串列表(例如 `["W4A16", "W2A16"]`),或 `QuantizationScheme` 对象的列表。 - **`ignore_scale_zp_bits` (bool)**: 仅在 API 使用中支持。决定是否在平均比特宽度计算中排除缩放因子和零点的位数(默认为 `False`)。 - **`shared_layers` (Iterable[Iterable[str]], optional)**: 仅在 API 使用中支持。定义共享量化设置的层组。 - **`batch_size` (int, optional)**: 仅在 API 使用中支持。可以设置为 `1` 以减少 VRAM 使用,但会增加调优时间。
### VLMs 的 API 用法
点击展开 **此功能是实验性的,可能会有所更改**。 默认情况下,AutoRound 仅量化 VLM 的文本模块,并使用 `NeelNanda/pile-10k` 进行校准。要量化整个模型,可以通过将 `quant_nontext_module` 设置为 `True` 来启用它,但对此功能的支持有限。更多信息请参见 AutoRound [README](auto_round/compressors/mllm/README.md)。
from auto_round import AutoRound

# 加载模型
model_name_or_path = "Qwen/Qwen2.5-VL-7B-Instruct"
# 量化模型
ar = AutoRound(model_name_or_path, scheme="W4A16")
output_dir = "./qmodel"
ar.quantize_and_save(output_dir)
## 模型推理 ### vLLM (CPU/Intel GPU/CUDA)
from vllm import LLM, SamplingParams

prompts = [
    "Hello, my name is",
]
sampling_params = SamplingParams(temperature=0.6, top_p=0.95)
model_name = "Intel/DeepSeek-R1-0528-Qwen3-8B-int4-AutoRound"
llm = LLM(model=model_name)

outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
### SGLang (Intel GPU/CUDA) **请注意,目前对 MoE 模型和视觉语言模型的支持有限。**
import sglang as sgl

llm = sgl.Engine(model_path="Intel/DeepSeek-R1-0528-Qwen3-8B-int4-AutoRound")
prompts = [
    "Hello, my name is",
]
sampling_params = {"temperature": 0.6, "top_p": 0.95}

outputs = llm.generate(prompts, sampling_params)
for prompt, output in zip(prompts, outputs):
    print(f"Prompt: {prompt}\nGenerated text: {output['text']}")
### Transformers (CPU/Intel GPU/Gaudi/CUDA) AutoRound 支持 10 多个后端,并根据已安装的库自动选择最佳可用后端,并在找到更好后端时提示用户安装额外的库。 **在推理过程中,请避免手动将量化模型移动到不同的设备**(例如 `model.to('cpu')`),因为这可能会导致意外异常。 对 Gaudi 设备的支持有限。
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Intel/DeepSeek-R1-0528-Qwen3-8B-int4-AutoRound"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", 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)[0]))
## 出版物与活动 [SignRoundV2: Closing the Performance Gap in Extremely Low-Bit Post-Training Quantization for LLMs](https://arxiv.org/abs/2512.04746) (2025.12 论文) [Optimize Weight Rounding via Signed Gradient Descent for the Quantization of LLM](https://aclanthology.org/2024.findings-emnlp.662/) (2023.09 论文) [TEQ: Trainable Equivalent Transformation for Quantization of LLMs](https://arxiv.org/abs/2310.10944) (2023.10 论文) [Effective Post-Training Quantization for Large Language Models](https://medium.com/intel-analytics-software/effective-post-training-quantization-for-large-language-models-with-enhanced-smoothquant-approach-93e9d104fb98) (2023.04 博客) 查看[完整出版物列表](./docs/publication_list.md)。 ## 致谢 特别感谢开源低精度库,如 AutoGPTQ、AutoAWQ、GPTQModel、Triton、Marlin 和 ExLLaMAV2,它们提供的低精度 CUDA 内核在 AutoRound 中得到了利用。 ## 🌟 支持我们 如果您觉得 AutoRound 有用,请为仓库 ⭐ 点亮星标并与您的社区分享!
26 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 16 ms
Developed with Cursor