AngelSlim
腾讯开源的大模型压缩工具包,支持 PTQ/QAT/投机解码,覆盖 Qwen/DeepSeek/混元等
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
腾讯开源的大模型压缩工具包,支持 PTQ/QAT/投机解码,覆盖 Qwen/DeepSeek/混元等
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
场景切入: 你花了几十万元训练了一个 70B 参数的 Qwen 大模型,精度很满意,但部署到服务器上跑推理时,显存爆炸、延迟感人,API 调用费用更是让人倒吸一口凉气。这时候,你的 CTO 走过来说:「能不能压缩一下?成本太高了。」你面对的是业界经典困境——如何在保持模型能力的前提下,把体积、显存和推理成本打下来?
腾讯 AI 实验室开源的 AngelSlim(大模型压缩工具包)正是为解决这个问题而生。它不是一个新模型,而是一整套模型压缩工具链,覆盖从训练时量化(QAT)到推理部署的全流程,让研究者和工程师可以用统一的 Python 接口,对主流大模型进行各类压缩操作,而不必在十几个不同的工具之间来回折腾。
图1:AngelSlim 整体架构,支持多阶段量化流程
大模型的「军备竞赛」在 2023–2026 年间愈演愈烈。从 GPT-4 到 Qwen3,从 DeepSeek 到 Gemini,模型参数规模从百亿走向万亿。但这些庞然大物带来的问题是实打实的:单卡 A100 80GB 也装不下一个 70B FP16 模型,需要多卡并行,推理成本每千 token 可能高达几分钱。这对商业化部署来说是致命的。
模型压缩的三大核心技术路线是:
AngelSlim 对这三条路线均有深度支持,尤其在量化方向做到了业界领先水准。## 腾讯出手:一个工具覆盖所有主流压缩算法
AngelSlim 由腾讯 AI 实验室开发和维护,Star 数 1300+,是腾讯在 AI 基础设施领域的重要开源贡献。项目托管在 GitHub,同时在 HuggingFace 和 ModelScope 上同步发布预压缩模型。
项目的设计哲学非常明确:一个 Engine,统一接口,覆盖所有压缩方法。无论你是要用 AWQ 量化 Qwen,还是要训练 EAGLE 投机解码的草稿模型,核心调用方式都是 Engine 类贯穿始终。这大大降低了学习成本——学一次,到处用。
支持的压缩方法包括:
| 压缩方法 | 说明 | 适用阶段 |
|---|---|---|
| FP8 Static/Dynamic | 浮点 8 位量化 | PTQ(训练后量化) |
| INT8 Dynamic | 整数 8 位动态量化 | PTQ |
| INT4 AWQ | Activation-Aware Weight Quantization | PTQ |
| INT4 GPTQ | GPTQ 在线校准量化 | PTQ |
| W4A8 FP8 | 权重 INT4 + 激活 FP8 混合精度 | PTQ |
| QAT(量化感知训练) | 训练时注入量化节点 | 训练时 |
| FP4/NVFP4 | 极致低位宽量化(1.25-bit 等) | PTQ |
| EAGLE/DFlare/D-Cut | 投机解码加速 | 推理时 |
| Stem | 稀疏注意力加速长上下文 | 推理时 |
| DeepCache/TaylorCache/TeaCache | 扩散模型缓存加速 | 扩散模型 |
这份清单的广度令人印象深刻——几乎涵盖了 2022–2026 年大模型压缩领域所有主流技术。## 核心技术:深入量化引擎设计
AngelSlim 的核心是 Engine 类,这是用户交互的统一入口。典型的使用流程:
from angelslim import Engine
engine = Engine()
engine.prepare_model(model_name="Qwen", model_path="/path/to/Qwen2.5-7B")
engine.prepare_dataloader(dataset_path="data.jsonl")
engine.set_compress_type("int4_awq")
engine.compress() # 执行量化
engine.save("/output/path")
Engine 内部通过 CompressorFactory 工厂模式动态加载具体的量化实现,用户不需要关心底层是 AWQ 还是 GPTQ,只需要指定压缩类型。这种工厂模式 + 策略模式的组合是教科书级的设计范式。
核心量化逻辑在 angelslim/compressor/quant/ 目录,包含:
ptq.py,训练后量化主流程modules/awq/,实现 Activation-Aware Weight Quantization,自动搜索最佳缩放因子modules/gptq/,在线校准式 GPTQ 量化modules/fp8/fp8.py,支持静态/动态 FP8 两种模式core/quant_func.py + quant_func_torch.py,底层实现在 Torch 上的 int4/int8/FP8 算子modules/w4a8int8/w4a8int8.py,权重 4-bit + 激活 8-bit 混合方案modules/nvfp4/nvfp4.py,FP4/NVFP4 量化实现特别值得关注的是 core/vllm_calibrate_utils/ 子目录(54KB),包含 vLLM 推理引擎的量化校准工具,支持自动搜索最优量化参数并生成 vLLM 可直接加载的量化模型。这是 AngelSlim 与生产推理链路打通的关键桥梁,也是许多学术量化工具缺失的能力。
图2:FP8 量化分析工具,可视化权重分布和尺度因子
compressor/qat/ 是量化感知训练(Quantization-Aware Training)模块,包含:
qat.py:QAT 主流程modules/quantizer.py(28KB):多种可学习的量化器实现,支持 STE(Straight-Through Estimator)梯度传递modules/special_quantizer.py:特殊量化器(如 DoReFa、LSQ 等经典 QAT 方法)trainers/:三种训练策略(End2End、BlockWise、Factory),支持 DeepSpeed FSDP 分布式训练QAT 的核心难点在于梯度传递:量化操作不可导,需要用近似梯度(如 STE)绕过。AngelSlim 实现了完整的量化器抽象层,用户可以自定义量化策略并通过 plugin_manager.py 注册,扩展性很强。
compressor/speculative/ 是推理加速模块:
这些模块不只是算法实现,还包含完整的 Benchmark 框架(PyTorch 和 vLLM 两个后端),可以对比加速效果。train/configs/ 下有 20+ 预置配置文件,覆盖 Qwen、DeepSeek、Hunyuan 等主流模型。## 技术栈与代码质量
主要技术栈: Python + PyTorch + Triton(GPU kernel)+ Transformers + Ray(分布式训练)
AngelSlim 对 PyTorch 版本要求较高(torch>=2.6.0),反映了它对新版 PyTorch 特性(如 torch.compile、新量化 API)的依赖。Triton 用于编写 GPU kernel,在量化权重时做高效矩阵运算。Transformers 用于加载 HuggingFace 格式模型,Ray 用于 QAT 分布式训练。
支持的模型家族极为广泛:
支持的模型覆盖了国内主流大模型生态(腾讯混元、阿里通义、DeepSeek、智谱、月之暗面),这是 AngelSlim 区别于海外同类工具的核心优势——它是目前对国内模型支持最全面的压缩工具包。
代码质量评估: 高度模块化,目录结构清晰,__init__.py 统一导出,Factory 模式管理组件扩展。requirements/ 有独立依赖管理,tests/ 有测试目录(但测试覆盖率需进一步验证)。文档通过 Sphinx 构建,托管在 ReadTheDocs,文档质量高(中文/英文双语)。## 核心功能实战:从安装到量化 Qwen
pip install angelslim
# 或从源码安装
git clone https://github.com/Tencent/AngelSlim.git
cd AngelSlim && pip install -e .
安装需要 CUDA 环境,建议 Python 3.10+。最核心的依赖是 PyTorch 2.6+ 和 Transformers 5.2+。
from angelslim import Engine
engine = Engine()
# 1. 加载模型
engine.prepare_model(
model_name="Qwen",
model_path="Qwen/Qwen2.5-7B-Instruct",
torch_dtype="auto",
device_map="auto"
)
# 2. 准备校准数据
engine.prepare_dataloader(dataset_path="data.jsonl")
# 3. 设置压缩类型并执行
engine.set_compress_type("int4_awq")
engine.compress()
# 4. 保存
engine.save("./qwen2.5-7b-awq")
量化后的模型可以直接用 transformers 加载,或通过 vLLM 部署到生产环境。AngelSlim 还提供了与 llama.cpp 的集成(STQ_0 内核已向 llama.cpp 提交 PR),支持在本地推理部署。
from angelslim.compressor.speculative import EAGLE3SpeculativeDecoder
decoder = EAGLE3SpeculativeDecoder(
target_model=target_llm,
draft_model=draft_llm,
backend="vllm"
)
# 推理时自动加速
output = decoder.generate(input_text)
DFlare 相比 EAGLE3 更进一步,通过块扩散机制在更长的 token 序列上做投机,5.52× 的加速比在端到端生成场景中非常有吸引力。## 局限与挑战
AngelSlim 并非银弹,使用时需要注意以下问题:
1. 显存门槛仍然较高。 虽然量化能降低显存需求,但校准过程(收集激活值分布、搜索缩放因子)本身需要加载 FP16 原模型。对于超大模型(如 72B+),校准阶段可能需要多卡。建议准备至少 24GB 显存的 GPU(A6000 或同等以上)。
2. 量化精度有损。 任何有损量化都会带来精度损失。INT4 量化在某些任务上可能掉分严重,需要用 QAT 微调来补偿。AngelSlim 支持 QAT,但 QAT 的训练成本不可忽视——你要么有充足的训练数据,要么有足够的 GPU 时间。
3. vLLM 集成需要额外配置。 虽然工具本身支持生成 vLLM 格式的量化模型,但实际部署时需要确保 vLLM 版本兼容。vLLM 本身也在快速迭代,某些新量化方法的支持可能滞后于 AngelSlim 的实现。
4. 文档更新频率挑战。 2026 年 6 月刚发布了 Stem 和 DFlare,这些新功能可能还没有足够多的用户反馈和最佳实践积累。早期采用者需要做好踩坑的心理准备。
5. 腾讯生态绑定。 对腾讯混元(Hunyuan)系列的支持最为深入,对其他厂商模型虽然也支持,但部分特性可能没有针对混元的优化那么完善。## 总结:当前大模型压缩的最优选择之一
AngelSlim 的定位非常清晰:对标微软 Olive、AMD MIGraphDB 等企业级模型压缩平台,但专门针对国内大模型生态做深度优化。它不是学术玩具,而是可以用于生产环境的工具包。
核心优势总结:
适合谁用:
不适合谁:
总的来说,如果你正在为「模型太大跑不动」而发愁,AngelSlim 值得一试。它不一定是唯一的工具,但绝对是目前对国内开发者最友好、功能最全面的选择之一。