AWQ量化
本文介绍了使用AWQ进行模型量化的实践指南。主要内容包括:1)环境配置,需安装特定版本transformer(4.51.3)并设置单卡运行;2)代码示例展示如何加载Qwen3-0.6B模型,配置4bit量化参数,并执行量化过程;3)注意事项指出目前AWQ支持的模型有限,且需处理版本兼容性问题。量化过程支持自定义校准数据集,最终生成量化模型可保存至指定路径。该方案适用于需要模型轻量化的应用场景,但需
·
基础原理
环境配置
1、pip install autoawq
这里有个问题是目前最新版本不用autoawq, 后续代码使用的是awq
2、下载一个实验小模型,目前awq支持的模型不多,基本就是几个经典的模型,所以这依然
用nano-vllm里面的Qwen3-0.6B这个模型做实验
3、实际测试会遇到AttributeError: ‘Catcher’ object has no attribute ‘attention_type’, 可以把
transformers的版本回退到 transformers==4.51.3,此外还有多卡gpu机器好像有点问题,这
里我是直接export CUDA_VISIBLE_DEVICES=0设置为单卡就可以了,其他显存问题oom可
以参考这里
代码demo
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
# 模型路径(Hugging Face Hub 或本地路径)
model_path = "huggingface/Qwen3-0.6B" # 或 "Qwen/Qwen-7B-Chat" 等
quant_path = "./qwen-awq" # 保存路径
# 加载 tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
# 加载模型(仅 CPU 加载,节省显存)
model = AutoAWQForCausalLM.from_pretrained(model_path, trust_remote_code=True)
print(model)
# 量化配置
quant_config = {
"zero_point": True, # 是否使用零点(推荐 True)
"q_group_size": 128, # 分组大小(128 是标准)
"w_bit": 4, # 权重比特数
"version": "GEMM" # 使用 GEMM 内核(高效)
}
# 执行量化(需要 GPU!)
model.quantize(
tokenizer,
quant_config=quant_config,
# 可选:指定校准数据集(默认使用 pile-val-backup的前 128 个样本)
# calib_data="c4", # 或 "pile", "wikitext2"
n_parallel_calib_samples=1,
max_calib_seq_len=1024, # 从数据集中取出的每句话,转为token的时候最大长度不能超过1024
max_calib_samples=128 # 从数据集中取出128句话,可以理解为batch_size=128
)
# 保存量化模型
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)