LLM压缩器
llmcompressor
是一个易于使用的库,用于优化模型以便使用vllm
部署,包括:
- 全面的量化算法集,用于仅权重和激活量化
- 与Hugging Face模型和仓库无缝集成
- 基于
safetensors
的文件格式,与vllm
兼容 - 通过
accelerate
支持大型模型
✨ 在这里阅读公告博客! ✨
支持的格式
- 激活量化:W8A8(int8和fp8)
- 混合精度:W4A16,W8A16
- 2:4半结构化和非结构化稀疏性
支持的算法
- 简单PTQ
- GPTQ
- SmoothQuant
- SparseGPT
安装
pip install llmcompressor
入门
端到端示例
使用llmcompressor
应用量化:
用户指南
深入探讨llmcompressor
的高级用法:
快速浏览
让我们使用GPTQ
和SmoothQuant
算法将TinyLlama
量化为8位权重和激活。
请注意,模型可以替换为本地或远程的HF兼容检查点,recipe
可以更改以针对不同的量化算法或格式。
应用量化
通过选择算法并调用oneshot
API来应用量化。
from llmcompressor.modifiers.quantization import GPTQModifier
from llmcompressor.modifiers.smoothquant import SmoothQuantModifier
from llmcompressor.transformers import oneshot
# 选择量化算法。在这种情况下,我们:
# * 应用SmoothQuant使激活更容易量化
# * 使用GPTQ将权重量化为int8(每通道静态)
# * 将激活量化为int8(每个token动态)
recipe = [
SmoothQuantModifier(smoothing_strength=0.8),
GPTQModifier(scheme="W8A8", targets="Linear", ignore=["lm_head"]),
]
# 使用内置的open_platypus数据集应用量化。
# * 查看示例以了解如何传递自定义校准集的演示
oneshot(
model="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
dataset="open_platypus",
recipe=recipe,
output_dir="TinyLlama-1.1B-Chat-v1.0-INT8",
max_seq_length=2048,
num_calibration_samples=512,
)
使用vLLM进行推理
llmcompressor
创建的检查点可以在vllm
中加载和运行:
安装:
pip install vllm
运行:
from vllm import LLM
model = LLM("TinyLlama-1.1B-Chat-v1.0-INT8")
output = model.generate("我的名字是")