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 transformers
pip install accelerate
pip install auto-gptq
import torch
from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
# 指定模型名称
model_name_or_path = "gpt2"
# 定义量化配置
quantize_config = BaseQuantizeConfig(
bits=4, # 量化到4-bit
group_size=128, # 分组大小,通常为128或None
desc_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,希望我的分享能对你的学习有一点帮助。
好文章,需要你的鼓励
OpenAI CEO描绘了AI温和变革人类生活的愿景,但现实可能更复杂。AI发展将带来真正收益,但也会造成社会错位。随着AI系统日益影响知识获取和信念形成,共同认知基础面临分裂风险。个性化算法加剧信息茧房,民主对话变得困难。我们需要学会在认知群岛化的新地形中智慧生存,建立基于共同责任而非意识形态纯洁性的社区。
杜克大学等机构研究团队通过三种互补方法分析了大语言模型推理过程,发现存在"思维锚点"现象——某些关键句子对整个推理过程具有决定性影响。研究表明,计划生成和错误检查等高层次句子比具体计算步骤更重要,推理模型还进化出专门的注意力机制来跟踪这些关键节点。该发现为AI可解释性和安全性研究提供了新工具和视角。
传统数据中心基础设施虽然对企业至关重要,但也是预算和房地产的重大负担。模块化数据中心正成为强有力的替代方案,解决企业面临的运营、财务和环境复杂性问题。这种模块化方法在印度日益流行,有助于解决环境问题、满足人工智能的电力需求、降低成本并支持新一代分布式应用。相比传统建设需要数年时间,工厂预制的模块化数据中心基础设施可在数周内部署完成。
法国索邦大学团队开发出智能医学文献管理系统Biomed-Enriched,通过AI自动从PubMed数据库中识别和提取高质量临床案例及教育内容。该系统采用两步注释策略,先用大型AI模型评估40万段落质量,再训练小型模型处理全库1.33亿段落。实验显示该方法仅用三分之一训练数据即可达到传统方法效果,为医学AI发展提供了高效可持续的解决方案。