最佳量子
尝试使用这个notebook来体验optimum-quanto + transformers!
🤗 optimum-quanto 库是一个多功能的pytorch量化工具包。使用的量化方法是线性量化。Quanto提供了几个独特的功能,例如:
- 权重量化 (
float8,int8,int4,int2) - 激活量化 (
float8,int8) - 模态无关(例如 CV, LLM)
- 设备无关(例如 CUDA, XPU, MPS, CPU)
- 与
torch.compile的兼容性 - 易于为特定设备添加自定义内核
- 支持量化感知训练
在开始之前,请确保已安装以下库:
pip install optimum-quanto accelerate transformers
现在你可以通过在from_pretrained()方法中传递QuantoConfig对象来量化模型。这适用于任何模态的任何模型,只要它包含torch.nn.Linear层。
与transformers的集成仅支持权重量化。对于更复杂的用例,如激活量化、校准和量化感知训练,您应该使用optimum-quanto库。
默认情况下,权重以全精度(torch.float32)加载,无论权重实际存储的数据类型是什么,例如torch.float16。设置torch_dtype="auto"以加载模型config.json文件中定义的数据类型,以自动加载内存最优的数据类型。
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, torch_dtype="auto", device_map="cuda:0", quantization_config=quantization_config)请注意,目前还不支持使用transformers进行序列化,但很快就会推出!如果你想保存模型,可以使用quanto库代替。
Optimum-quanto 库使用线性量化算法进行量化。尽管这是一种基本的量化技术,但我们得到了非常好的结果!请看以下基准测试(llama-2-7b 在困惑度指标上的表现)。你可以找到更多基准测试 这里

该库功能多样,足以兼容大多数PTQ优化算法。未来的计划是以尽可能无缝的方式集成最流行的算法(AWQ、Smoothquant)。
< > Update on GitHub