[](https://github.com/intel/auto-round)
[](https://github.com/intel/auto-round/releases)
[](https://pypi.org/project/auto-round-nightly)
[](https://github.com/intel/auto-round/blob/main/LICENSE)
## 🚀 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)。
## 🆕 最新动态
* [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 有用,请为仓库 ⭐ 点亮星标并与您的社区分享!