文档首页/
AI开发平台ModelArts/
最佳实践/
LLM大语言模型训练推理/
主流开源大模型基于Server适配PyTorch NPU推理指导(6.3.911)/
推理模型量化/
使用GPTQ量化
更新时间:2024-12-17 GMT+08:00
使用GPTQ量化
当前版本使用GPTQ量化仅支持W8A16 perchannel的量化形式,使用W8A16的量化不仅可以保证精度在可接受的范围内,同时也有一定的性能收益。
GPTQ W8A16量化支持的模型请参见表3。
本章节介绍如何在GPU的机器上使用开源GPTQ量化工具GPTQ (huggingface.co)量化模型权重,然后在NPU的机器上实现推理量化。
具体操作如下:
- 开始之前,请确保安装了以下库:
pip install auto-gptq pip install --upgrade accelerate optimum transformers
- 设置GPTQConfig的参数,并且创建一个数据集用于校准量化的权重,以及一个tokenizer用于准备数据集。
from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig model_id = "meta-llama/CodeLlama-34b-hf" tokenizer = AutoTokenizer.from_pretrained(model_id) gptq_config = GPTQConfig(bits=8, dataset="c4", tokenizer=tokenizer, group_size=-1, damp_percent=0.01, desc_act=False, sym=True, use_exllama=False)
- 您也可以将自己的数据集作为字符串列表传递,但强烈建议使用GPTQ论文中的相同数据集。
dataset = ["auto-gptq is an easy-to-use model quantization library with user-friendly apis, based on GPTQ algorithm."] gptq_config = GPTQConfig(bits=8, dataset=dataset, tokenizer=tokenizer, group_size=-1, damp_percent=0.01, desc_act=False, sym=True, use_exllama=False)
- 加载要量化的模型,并将gptq_config传递给from_pretrained()方法。
quantized_model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", quantization_config=gptq_config)
- 您还可以使用save_pretrain()方法在本地保存您的量化模型。如果模型是用device_map参数量化的,请确保在保存之前将整个模型移动到GPU或CPU。例如,要将模型保存在CPU上。
quantized_model.save_pretrained("CodeLlama-34b-hf") tokenizer.save_pretrained("CodeLlama-34b-hf") # if quantized with device_map set quantized_model.to("cpu") quantized_model.save_pretrained("CodeLlama-34b-hf")
父主题: 推理模型量化