Quanto
使用此 notebook 试用 Quanto + transformers!
🤗 Quanto 库是一个通用的 PyTorch 量化工具包。使用的量化方法是线性量化。Quanto 提供了一些独特的特性,例如:
- 权重量化 (
float8
、int8
、int4
、int2
) - 激活量化 (
float8
、int8
) - 模态无关 (例如 CV、LLM)
- 设备无关 (例如 CUDA、MPS、CPU)
- 与
torch.compile
兼容 - 易于为特定设备添加自定义内核
- 支持量化感知训练
在开始之前,请确保安装以下库:
pip install quanto accelerate transformers
现在,您可以通过在 from_pretrained() 方法中传递 QuantoConfig 对象来量化模型。只要模型包含 torch.nn.Linear
层,此方法适用于任何模态的任何模型。
与 transformers 的集成仅支持权重量化。对于更复杂的用例(例如激活量化、校准和量化感知训练),您应该使用 quanto 库。
from transformers import AutoModelForCausalLM, AutoTokenizer, QuantoConfig
model_id = "facebook/opt-125m"
tokenizer = AutoTokenizer.from_pretrained(model_id)
quantization_config = QuantoConfig(weights="int8")
quantized_model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cuda:0", quantization_config=quantization_config)
请注意,transformers 暂不支持序列化,但很快就会支持!如果您想保存模型,可以使用 quanto 库。
Quanto 库使用线性量化算法进行量化。即使这是一种基本的量化技术,我们也获得了非常好的结果!请查看以下基准测试(llama-2-7b 在困惑度指标上的结果)。您可以在 此处 找到更多基准测试。
该库足够通用,可以与大多数 PTQ 优化算法兼容。未来的计划是以尽可能无缝的方式集成最流行的算法 (AWQ、Smoothquant)。
< > GitHub 更新