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集成到他们的自然语言处理项目中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考