feat(qat): add KV cache quantization support in QAT pipeline (#284)
简体中文 | English
✒️ TechnicalReport | 📖 Documentation | 🤗 Hugging Face | 🤖 ModelScope
💬 WeChat | 🫨 Discord
Hunyuan 0.5B/1.8B/4B/7B
Qwen2.5VL 3B/7B/32B/72B
DeepSeek-R1/V3
Kimi-K2
W4A8-FP8
Hunyuan 1.8B/4B/7B
Hunyuan/Qwen2.5/Qwen3/DeepSeek-R1-Distill-Qwen
Qwen3
推荐使用pip直接安装最新稳定版AngelSlim:
pip
AngelSlim
pip install angelslim
也可以选择克隆代码仓库后,以可编辑的方式从源代码安装:
cd AngelSlim && python setup.py install
更详细的安装说明以及不同平台的安装指引,可参考安装文档。
完成安装AngelSlim后,您可以通过以下脚本快速开始Eagle3训练:
Eagle3
# 启动vLLM server bash scripts/speculative/run_vllm_server.sh # 生成训练数据 bash scripts/speculative/generate_data_for_target_model.sh # 进行Eagle3模型的在线训练 bash scripts/speculative/train_eagle3_online.sh
全模态大模型的 Eagle3 训练与部署指南可参考:LLM | VLM | Audio(ASR) | Audio(TTS).
完成安装AngelSlim后,您可以通过以下脚本快速开始,完成Qwen3-1.7B模型的静态FP8量化:
Qwen3-1.7B
FP8
1、一键式启动
python3 tools/run.py -c configs/qwen3/fp8_static/qwen3-1_7b_fp8_static.yaml
该示例将会加载HugggingFace模型进行PTQ量化校准,最终量化产出模型权重.
HugggingFace
例如对Qwen3-1.7B完成动态FP8量化:
from angelslim.engine import Engine slim_engine = Engine() # Prepare model slim_engine.prepare_model(model_name="Qwen", model_path="Qwen/Qwen3-1.7B") # Initialize compressor slim_engine.prepare_compressor("PTQ", default_method="fp8_dynamic") # Compress model slim_engine.run() # Save compressed model slim_engine.save("./output")
详情请参考量化快速开始文档。
使用 scripts/diffusion/run_diffusion.py 脚本进行量化与推理:
scripts/diffusion/run_diffusion.py
# 在线量化并运行推理 python scripts/diffusion/run_diffusion.py \ --model-name-or-path black-forest-labs/FLUX.1-schnell \ --quant-type fp8-per-tensor \ --prompt "A cat holding a sign that says hello world" \ --height 1024 --width 1024 --steps 4 --guidance 0.0 --seed 0
更多量化推理方式请参考Diffusion模型量化文档。
AngelSlim 提供了一套基于元数据驱动的通用视觉 Token 剪枝与合并框架。你可以通过以下 Smoke Test 快速验证压缩策略(如 VisionZip):
python tools/test_universal_pruning.py \ --model_path "Qwen/Qwen2.5-VL-3B-Instruct" \ --config "configs/qwen2_5_vl/pruning/visionzip_r0.9.yaml"
关于如何新增自定义剪枝策略及算法实现细节,请参考 Token 压缩说明文档。
通过transformers加载量化模型进行离线推理。
transformers
python scripts/deploy/offline.py $MODEL_PATH "Hello, my name is"
其中 MODEL_PATH 为量化产出模型路径。
MODEL_PATH
支持通过 vLLM、SGLang推理框架部署 OpenAI 兼容的 API 服务。
vLLM
vLLM 服务启动脚本,建议版本vllm>=0.8.5.post1,部署MOE INT8量化模型需要vllm>=0.9.2。
vllm>=0.8.5.post1
vllm>=0.9.2
bash scripts/deploy/run_vllm.sh --model-path $MODEL_PATH --port 8080 -d 0,1,2,3 -t 4 -p 1 -g 0.8 --max-model-len 4096
其中-d为可见设备,-t为张量并行度,-p为流水线并行度,-g为显存使用率。
-d
-t
-p
-g
SGLang
SGLang 服务启动脚本,建议版本 sglang>=0.4.6.post1:
sglang>=0.4.6.post1
bash scripts/deploy/run_sglang.sh --model-path $MODEL_PATH --port 8080 -d 0,1,2,3 -t 4 -g 0.8
通过 OpenAI 格式 接口发起请求。
bash scripts/deploy/openai.sh -m $MODEL_PATH -p "Hello, my name is" --port 8080 --max-tokens 4096 --temperature 0.7 --top-p 0.8 --top-k 20 --repetition-penalty 1.05 --system-prompt "You are a helpful assistant."
其中-p为输入prompt
使用 lm-evaluation-harness 评估量化模型精度,建议版本lm-eval>=0.4.8
lm-eval>=0.4.8
bash scripts/deploy/lm_eval.sh -d 0,1 -t 2 -g 0.8 -r $RESULT_PATH -b "auto" --tasks ceval-valid,mmlu,gsm8k,humaneval -n 0 $MODEL_PATH
其中RESULT_PATH为测试结果保存目录,-b为batch size大小,--tasks为评测任务,-n为few-shot数量
RESULT_PATH
-b
--tasks
-n
详细操作指南请参阅部署文档。
我们使用vLLM在代码、数学、指令跟随、文本生成、多模态理解等任务上评测了AngelSlim所训练的Eagle3模型,设置num_speculative_tokens=2 or 4 下我们所训的模型加速和接收长度表现如下所示,接收长度在1.8-3.5,最高加速可达1.4-1.9倍。
我们使用vLLM(v0.11.2)评测了Qwen3系列Eagle3模型在MT-bench、 HumanEval、 GSM8K、Alpaca等数据集上的接收长度和吞吐。全部结果都是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=2, batch_size=1, output_len=1024。
我们使用(v0.12.0)评测了Qwen3-VL系列Eagle3模型在语言理解任务和多模态理解任务上的接收长度和吞吐。全部结果都是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
我们使用(v0.13.0)评测了HunyuanOCR Eagle3模型在OmniDocBench上的接收长度和吞吐。结果是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
我们使用(v0.12.0)评测了Qwen2-Audio Eagle3模型在LibriSpeech数据集上的接收长度和吞吐。结果是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
我们评测了Fun-CosyVoice3 Eagle3模型在LibriTTS数据集上的接收长度。结果是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
Adapted for Transformers backend inference, only displays accept length. vLLM speedup ~1.6×, estimated from baseline LLM speedup.
下面只展示了部分模型的效果测试情况,完整Benchmark可以参考Benchmark文档
Hunyuan-Instruct的BF16、FP8、INT4-GPTQ、INT4-AWQ在OlympiadBench、AIME 2024、DROP、GPQA-Diamond上的评测结果如下:
BF16
INT4-GPTQ
INT4-AWQ
OlympiadBench
AIME 2024
DROP
GPQA-Diamond
Qwen3系列模型的BF16、FP8-Static、FP8-Dynamic、INT8-Dynamic、INT4-GPTQ、INT4-AWQ在CEVAL、MMLU、GSM8K、HUMANEVAL上的评测结果如下:
FP8-Static
FP8-Dynamic
INT8-Dynamic
CEVAL
MMLU
GSM8K
HUMANEVAL
DeepSeek-R1-0528模型的FP8-Block-Wise、W4A8-FP8在GPQA Diamond、AIME 2024、SimpleQA、LiveCodeBench上的评测结果如下:
FP8-Block-Wise
GPQA Diamond
SimpleQA
LiveCodeBench
以上评测结果使用TRT-LLM框架部署测试5次求平均 评测时使用的超参如下:{ "top_k": 20, "top_p": 0.6, "temperature": 0.7, "output_seq_len": 32768, "max_input_seq_len": 16384 }
{ "top_k": 20, "top_p": 0.6, "temperature": 0.7, "output_seq_len": 32768, "max_input_seq_len": 16384 }
Qwen3-VL Benchmark
Qwen3VL系列模型的BF16、FP8-Static、FP8-Dynamic在MMMU_VAL、DocVQA_VAL、ChartQA_TEST上的评测结果如下:
MMMU_VAL
DocVQA_VAL
ChartQA_TEST
Qwen2.5VL系列模型的BF16、FP8-Static、FP8-Dynamic、INT4-GPTQ、INT4-AWQ在MMMU_VAL、DocVQA_VAL、ChartQA_TEST上的评测结果如下:
Qwen3-Omni Text to Text Benchmark
Qwen3-Omni系列模型的BF16、FP8-Static、FP8-Dynamic在aime25、gpqa_diamond、mmlu_redux上的评测结果如下:
aime25
gpqa_diamond
mmlu_redux
以上评测结果使用vllm框架部署测试5次求平均(vllm只支持thinker部分) 评测时使用的超参如下:{ "top_p": 0.95, "temperature": 0.6, "do_sample": true, "max-model-len 65536": 65536 }
{ "top_p": 0.95, "temperature": 0.6, "do_sample": true, "max-model-len 65536": 65536 }
其他模型比如GLM、Qwen2.5、Seed-OSS等模型利用FP8-Static、FP8-Dynamic、INT4-GPTQ、INT4-AWQ量化等策略在CEVAL、MMLU、GSM8K上进行了评测。
我们在 Qwen2.5-VL-3B-Instruct 模型上评估了多种视觉 Token 压缩策略(剪枝与合并)。你可以使用以下指令复现评测结果:
python tools/run_pruning_eval.py \ --model_path "Qwen/Qwen2.5-VL-3B-Instruct" \ --configs "configs/qwen2_5_vl/pruning/visionzip_r0.9.yaml" \ --tasks "textvqa" \ --output_dir "./results/visionzip_test"
本项目的代码依照 License for AngelSlim 协议开源。
@article{angelslim2026, title={AngelSlim: A more accessible, comprehensive, and efficient toolkit for large model compression}, author={Hunyuan AI Infra Team}, journal={arXiv preprint arXiv:2602.21233}, year={2026} }
AngelSlim是由腾讯混元AI Infra团队研发,新功能在持续迭代更新中,有问题或建议欢迎通过GitHub Issues给我们提issue,或者加入微信技术交流群。
⭐ 欢迎给这个仓库点Star来关注后续我们的更新。并且如果有兴趣加入团队进行实习或正式工作,可投递简历至邮箱:lucayu@tencent.com。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
简体中文 | English
致力于打造更易用、更全面和更高效的大模型压缩工具包
✒️ TechnicalReport | 📖 Documentation | 🤗 Hugging Face | 🤖 ModelScope
💬 WeChat | 🫨 Discord
📣最新进展
历史更新
Hunyuan 0.5B/1.8B/4B/7B和Qwen2.5VL 3B/7B/32B/72B的FP8、INT4量化,支持了DeepSeek-R1/V3和Kimi-K2模型的W4A8-FP8量化。我们还开源了Hunyuan 1.8B/4B/7B系列模型的Eagle3权重。Hunyuan/Qwen2.5/Qwen3/DeepSeek-R1-Distill-Qwen等模型的量化,包含INT8、FP8、INT4等算法。 我们还开源了Qwen3系列模型的Eagle3权重。🌟主要特性
💼技术概览
🛎️如何使用
1、安装 AngelSlim
推荐使用
pip直接安装最新稳定版AngelSlim:也可以选择克隆代码仓库后,以可编辑的方式从源代码安装:
更详细的安装说明以及不同平台的安装指引,可参考安装文档。
2、快速开始
2.1 投机采样
完成安装
AngelSlim后,您可以通过以下脚本快速开始Eagle3训练:全模态大模型的 Eagle3 训练与部署指南可参考:LLM | VLM | Audio(ASR) | Audio(TTS).
2.2 LLM/VLM模型量化
完成安装
AngelSlim后,您可以通过以下脚本快速开始,完成Qwen3-1.7B模型的静态FP8量化:1、一键式启动
该示例将会加载
HugggingFace模型进行PTQ量化校准,最终量化产出模型权重.2、源码启动
例如对
Qwen3-1.7B完成动态FP8量化:详情请参考量化快速开始文档。
2.3 Diffusion模型量化
使用
scripts/diffusion/run_diffusion.py脚本进行量化与推理:更多量化推理方式请参考Diffusion模型量化文档。
2.4 Token 压缩 (多模态/VLM)
AngelSlim 提供了一套基于元数据驱动的通用视觉 Token 剪枝与合并框架。你可以通过以下 Smoke Test 快速验证压缩策略(如 VisionZip):
关于如何新增自定义剪枝策略及算法实现细节,请参考 Token 压缩说明文档。
3、部署与测试
3.1 离线推理
通过
transformers加载量化模型进行离线推理。执行脚本细节
其中
MODEL_PATH为量化产出模型路径。3.2 服务部署
支持通过 vLLM、SGLang推理框架部署 OpenAI 兼容的 API 服务。
执行脚本细节
vLLM
vLLM 服务启动脚本,建议版本
vllm>=0.8.5.post1,部署MOE INT8量化模型需要vllm>=0.9.2。其中
-d为可见设备,-t为张量并行度,-p为流水线并行度,-g为显存使用率。SGLang
SGLang 服务启动脚本,建议版本
sglang>=0.4.6.post1:3.3 服务调用
通过 OpenAI 格式 接口发起请求。
执行脚本细节
其中
-p为输入prompt3.4 效果验证
使用 lm-evaluation-harness 评估量化模型精度,建议版本
lm-eval>=0.4.8执行脚本细节
其中
RESULT_PATH为测试结果保存目录,-b为batch size大小,--tasks为评测任务,-n为few-shot数量详细操作指南请参阅部署文档。
📈Benchmark
1、投机采样
我们使用vLLM在代码、数学、指令跟随、文本生成、多模态理解等任务上评测了AngelSlim所训练的Eagle3模型,设置num_speculative_tokens=2 or 4 下我们所训的模型加速和接收长度表现如下所示,接收长度在1.8-3.5,最高加速可达1.4-1.9倍。
1.1 Qwen3系列模型
我们使用vLLM(v0.11.2)评测了Qwen3系列Eagle3模型在MT-bench、 HumanEval、 GSM8K、Alpaca等数据集上的接收长度和吞吐。全部结果都是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=2, batch_size=1, output_len=1024。
1.2 多模态理解模型
1.2.1 Qwen3-VL系列模型
我们使用(v0.12.0)评测了Qwen3-VL系列Eagle3模型在语言理解任务和多模态理解任务上的接收长度和吞吐。全部结果都是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
1.2.2 HunyuanOCR模型
我们使用(v0.13.0)评测了HunyuanOCR Eagle3模型在OmniDocBench上的接收长度和吞吐。结果是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
1.3 语音模型
1.3.1 Qwen2-Audio模型
我们使用(v0.12.0)评测了Qwen2-Audio Eagle3模型在LibriSpeech数据集上的接收长度和吞吐。结果是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
1.3.2 Fun-CosyVoice3模型
我们评测了Fun-CosyVoice3 Eagle3模型在LibriTTS数据集上的接收长度。结果是在单张GPU上用以下设置测得:tp=1, ep=1, num_speculative_tokens=4, batch_size=1, output_len=1024。
2、量化
下面只展示了部分模型的效果测试情况,完整Benchmark可以参考Benchmark文档
2.1 Hunyuan系列模型
Hunyuan-Instruct的
BF16、FP8、INT4-GPTQ、INT4-AWQ在OlympiadBench、AIME 2024、DROP、GPQA-Diamond上的评测结果如下:2.2 Qwen3系列模型
Qwen3系列模型的
BF16、FP8-Static、FP8-Dynamic、INT8-Dynamic、INT4-GPTQ、INT4-AWQ在CEVAL、MMLU、GSM8K、HUMANEVAL上的评测结果如下:2.3 DeepSeek系列模型
DeepSeek-R1-0528模型的
FP8-Block-Wise、W4A8-FP8在GPQA Diamond、AIME 2024、SimpleQA、LiveCodeBench上的评测结果如下:备注
2.4 Qwen-VL 系列模型
Qwen3-VL Benchmark
Qwen3VL系列模型的
BF16、FP8-Static、FP8-Dynamic在MMMU_VAL、DocVQA_VAL、ChartQA_TEST上的评测结果如下:Qwen2.5VL Benchmark
Qwen2.5VL系列模型的
BF16、FP8-Static、FP8-Dynamic、INT4-GPTQ、INT4-AWQ在MMMU_VAL、DocVQA_VAL、ChartQA_TEST上的评测结果如下:2.5 Qwen-Omni 系列模型
Qwen3-Omni Text to Text Benchmark
Qwen3-Omni系列模型的
BF16、FP8-Static、FP8-Dynamic在aime25、gpqa_diamond、mmlu_redux上的评测结果如下:备注
2.6 其他模型
其他模型比如GLM、Qwen2.5、Seed-OSS等模型利用
FP8-Static、FP8-Dynamic、INT4-GPTQ、INT4-AWQ量化等策略在CEVAL、MMLU、GSM8K上进行了评测。Benchmark实验细节
3. Token 压缩 (多模态/VLM)
我们在 Qwen2.5-VL-3B-Instruct 模型上评估了多种视觉 Token 压缩策略(剪枝与合并)。你可以使用以下指令复现评测结果:
Token 压缩详细评测结果 (Qwen2.5-VL-3B-Instruct)
📝许可协议
本项目的代码依照 License for AngelSlim 协议开源。
🔗引用
💬技术交流
AngelSlim是由腾讯混元AI Infra团队研发,新功能在持续迭代更新中,有问题或建议欢迎通过GitHub Issues给我们提issue,或者加入微信技术交流群。
⭐ 欢迎给这个仓库点Star来关注后续我们的更新。并且如果有兴趣加入团队进行实习或正式工作,可投递简历至邮箱:lucayu@tencent.com。