AutoAWQ 技术文档

AutoAWQ 技术文档

AutoAWQ AutoAWQ implements the AWQ algorithm for 4-bit quantization with a 2x speedup during inference. AutoAWQ 项目地址: https://gitcode.com/gh_mirrors/au/AutoAWQ

AutoAWQ 是一个便捷的工具包,专为4位量化模型设计,旨在通过3倍的速度提升和内存占用减少3倍,优化大型语言模型(LLMs)的推理过程。它基于激活感知权重量化(Activation-aware Weight Quantization,简称AWQ)算法,是MIT原始工作的一个发展和改进版本。

安装指南

系统要求

  • NVIDIA GPU: 支持Compute Capability 7.5以上的显卡(如Turing架构及其后续),CUDA版本需为11.8或更高。
  • AMD GPU: ROCm版本需要5.6或以上。

安装步骤

从PyPi安装(推荐)

确保已安装CUDA 12.1后,可通过pip命令快速安装最新版本的AutoAWQ:

pip install autoawq
从源代码构建安装

对于特定版本的CUDA或ROCm,可以从发布页面下载预编译的whl文件,或者直接从Git仓库克隆并安装。

# 使用指定版本的whl文件安装(例如CUDA 11.8)
pip install autoawq@https://github.com/casper-hansen/AutoAWQ/releases/download/v0.2.0/autoawq-0.2.0+cu118-cp310-cp310-linux_x86_64.whl

# 直接从GitHub主分支安装
pip install autoawq@https://github.com/casper-hansen/AutoAWQ.git

# 或者克隆仓库本地安装
git clone https://github.com/casper-hansen/AutoAWQ
cd AutoAWQ
pip install -e .

安装时会自动获取适合您系统的内核,若系统不被官方支持,则需手动编译AutoAWQ_Kernels仓库中的内核,并再执行源码安装。

项目使用说明

AutoAWQ提供了模型量化、推理运行和性能基准测试等操作示例。在example目录可以找到详细演示。

模型量化

量化过程适用于转换模型为更高效的INT4量化形式,此过程依据模型大小可能耗时较长。

from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

model_path = 'lmsys/vicuna-7b-v1.5'
quant_path = 'vicuna-7b-v1.5-awq'
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}

# 加载模型和分词器
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

# 执行量化
model.quantize(tokenizer, quant_config=quant_config)

# 保存量化后的模型
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)

推理示例

以量化后的模型进行文本生成:

from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer, TextStreamer

quant_path = "TheBloke/zephyr-7B-beta-AWQ"
model = AutoAWQForCausalLM.from_quantized(quant_path, fuse_layers=True)
tokenizer = AutoTokenizer.from_pretrained(quant_path, trust_remote_code=True)
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

# 准备输入
prompt = "描述一只飞翔的鹰。"
input_tokens = tokenizer(prompt, return_tensors='pt').input_ids.cuda()

# 生成响应
output = model.generate(input_tokens, streamer=streamer)

API使用文档

  • AutoAWQForCausalLM.from_pretrained: 加载预训练模型。
  • AutoAWQForCausalLM.from_quantized: 加载已量化的模型,可选地启用融合层以提高性能。
  • model.quantize: 将模型量化至指定配置。
  • model.save_quantized: 保存量化后的模型到指定路径。
  • TextStreamer: 实时流式处理生成的文本。

总结

AutoAWQ通过其简洁的API和高效的量化技术,极大地简化了在大型语言模型中实施量化的过程,从而实现更快的推理速度和降低资源消耗。结合适当的系统配置和适当的选择(如GEMM或GEMV版本),用户能够根据其应用场景定制化地优化模型的效率与性能。通过遵循上述指南,开发者可以轻松地将AutoAWQ集成到他们的自然语言处理项目中。

AutoAWQ AutoAWQ implements the AWQ algorithm for 4-bit quantization with a 2x speedup during inference. AutoAWQ 项目地址: https://gitcode.com/gh_mirrors/au/AutoAWQ

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮跃兰Soldier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值