GPTQ (Gradient-based Post-training Quantization) 是一种针对大规模预训练模型的高效后量化算法 (Post-Training Quantization, PTQ)。其主要目标是在不重新训练模型的情况下,将大模型模型权重量化到低比特(如4-bit或更低),同时尽可能保持模型的性能。

GPTQ 的核心思想是通过最小化量化引入的输出误差,实现高精度低比特量化。具体来说,GPTQ 在后量化过程中,针对每一层的权重矩阵,利用一小部分校准数据,最小化量化前后模型输出的差异。其量化算法的基本步骤如下:

为了降低计算复杂度,GPTQ 采用了逐列优化的方法。将权重矩阵 W 的列表示为 wi,对每一列进行量化,同时考虑之前列量化引入的误差累积。逐列量化的具体步骤如下:

在量化过程中,GPTQ 可以采用多种量化策略,如对称量化、非对称量化、均匀量化等。同时,量化器需要满足硬件的限制,确保量化后的值在表示范围内。



逐列优化的主要优势在于:
BNB 主要实现了8-bit和4-bit的量化,支持在GPU上高效运行,BNB 采用了定点量化的方法,将浮点数映射到低比特的整数表示。其不足点主要体现在下面两点:
AWQ 量化考虑了激活值对权重量化的影响,通过联合优化权重和激活函数,实现更精细的量化。但其复杂度高:联合优化权重和激活函数,增加了实现和调试的复杂度。
下面展示使用 GPTQ 对模型进行量化的示例代码。
pip install transformerspip install acceleratepip install auto-gptq
import torchfrom transformers import AutoTokenizerfrom auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig# 指定模型名称model_name_or_path = "gpt2"# 定义量化配置quantize_config = BaseQuantizeConfig(bits=4, # 量化到4-bitgroup_size=128, # 分组大小,通常为128或Nonedesc_act=False, # 是否禁用激活函数的量化)# 加载模型并进行量化model = AutoGPTQForCausalLM.from_pretrained(model_name_or_path,quantize_config=quantize_config,use_triton=False # 如果安装了triton加速器,可设为True)# 加载分词器tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=True)# 保存量化后的模型save_directory = "gpt2-quantized"model.save_quantized(save_directory)tokenizer.save_pretrained(save_directory)
# 加载量化后的模型model_quantized = AutoGPTQForCausalLM.from_quantized(save_directory,use_safetensors=True,device="cuda:0" if torch.cuda.is_available() else "cpu",use_triton=False,)# 加载分词器tokenizer = AutoTokenizer.from_pretrained(save_directory, use_fast=True)# 准备输入input_text = "今天天气如何?"inputs = tokenizer(input_text, return_tensors="pt")# 将输入移动到模型设备inputs =# 生成输出with torch.no_grad():output_ids = model_quantized.generate(**inputs,max_new_tokens=50,do_sample=True,temperature=0.7,)# 解码输出output_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)print(output_text)
其中:
bits、group_size 等参数;需要注意的是,某些大型模型(如Llama系列)使用了自定义的模型结构,需要在加载时设置 trust_remote_code=True。
好了,以上分享了 解读大模型量化算法之 GPTQ,希望我的分享能对你的学习有一点帮助。
好文章,需要你的鼓励
英国国家医疗服务(NHS)正将无人机纳入常规医疗物流体系。自今年2月起,无人机每天在雷恩斯公园和圣乔治医院之间运送血液等诊断样本,飞行仅需3分钟,比公路运输快约85%,且碳排放减少高达98%。目前已有逾2000名患者受益。NHS计划将该服务扩展至圣赫利尔、克罗伊登等多家医院,最终惠及约180万名患者。该网络由英国医疗初创公司Apian与谷歌旗下Wing合作运营。
AgentLens是Explyt公司联合俄罗斯学术机构开发的AI编程助手评测基准,通过分析完整人机交互轨迹而非仅看最终结果,从五个维度评估代码智能体的真实表现。
边缘AI计算厂商Aetina宣布,将在其DeviceEdge AIE-KT风冷系列和新款AIE-PT无风扇平台上支持英伟达全新Jetson T3000和T2000模块。T3000基于Blackwell GPU,最高提供865 FP4 TFLOPS算力,功耗70W;T2000则提供400 FP4 TFLOPS,面向视觉AI代理和自主移动机器人等场景。两款模块预计2027年第一季度上市,支持Nemotron、Cosmos 3等英伟达AI软件生态。
韩国梨花女子大学提出Splash框架,通过识别AI模型中的"休眠参数"并只在其中训练触觉能力,让小型多模态AI在学会感知材质触感的同时,完整保留原有视觉语言推理能力。