AQLM技术博客:持续更新的开发者学习资源

AQLM技术博客:持续更新的开发者学习资源

【免费下载链接】AQLM Official Pytorch repository for Extreme Compression of Large Language Models via Additive Quantization https://arxiv.org/pdf/2401.06118.pdf 【免费下载链接】AQLM 项目地址: https://gitcode.com/GitHub_Trending/aq/AQLM

你是否还在为大语言模型(LLM)的高内存占用和缓慢推理速度而困扰?AQLM(Additive Quantization for Language Models)通过创新的加法量化技术,实现了LLM的极致压缩,在保持性能的同时显著降低资源需求。本文将带你快速掌握AQLM的核心功能、使用方法和最新进展,成为模型压缩领域的实践者。

读完本文,你将能够:

  • 理解AQLM的核心原理与技术优势
  • 快速部署预量化模型进行高效推理
  • 掌握模型量化与PV-Tuning微调全流程
  • 利用 benchmark 工具评估模型性能
  • 获取持续更新的学习资源与社区支持

AQLM项目概览

AQLM是一个基于PyTorch的开源项目,专注于通过加法量化(Additive Quantization)技术实现大语言模型的极致压缩。其核心论文《Extreme Compression of Large Language Models via Additive Quantization》已被ICML 2024接收,后续提出的PV-Tuning微调算法更是被NeurIPS 2024选为口头报告。

项目主要特点:

  • 超高压缩率:支持1-2bit量化,模型体积减少8-16倍
  • 性能损失小:1bit量化的Llama-2-7b模型在WikiText2上PPL仅为7.85
  • 多场景支持:提供GPU/CPU推理方案,支持vLLM部署与流式输出
  • 持续更新:2025年4月发布v1.1.7版本,新增8维码本支持与1bit模型精度提升

项目结构清晰,主要包含以下模块:

快速开始:模型推理实战

安装AQLM推理库

AQLM提供了便捷的Python包,支持GPU和CPU两种推理场景:

pip install aqlm[gpu,cpu]

如需使用最新特性,可从源码安装:

git clone https://gitcode.com/GitHub_Trending/aq/AQLM
cd AQLM
pip install -r requirements.txt
pip install .[gpu,cpu]

加载预量化模型

AQLM与Hugging Face Transformers库无缝集成,可直接使用.from_pretrained()方法加载量化模型:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "ISTA-DASLab/Llama-2-7b-AQLM-1Bit-1x8-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    trust_remote_code=True,
    torch_dtype="auto"
).cuda()

inputs = tokenizer("AQLM is an amazing model compression technique because", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

推理内核选择

AQLM针对不同硬件环境优化了多种推理内核,可根据实际场景选择:

内核码本数量每个码本位数精度加速比GPU支持CPU支持
TritonKN-~0.7x
CUDA116最佳~1.3x
CUDA28良好~3.0x
NumbaK8优秀~4.0x

表:AQLM推理内核对比,数据来源README.md

模型量化全流程

准备工作

量化前需安装依赖并准备校准数据:

# 安装依赖
pip install -r requirements.txt

# 下载校准数据(以RedPajama为例)
python -c "from huggingface_hub import hf_hub_download; hf_hub_download(repo_id='Vahe1994/AQLM', filename='data/red_pajama_n=1024_4096_context_length.pth', repo_type='dataset', local_dir='./data')"

执行量化

使用main.py脚本进行模型量化,以下是Llama-2-7b模型1bit量化的示例命令:

export CUDA_VISIBLE_DEVICES=0
export MODEL_PATH=meta-llama/Llama-2-7b-hf
export DATASET_PATH=./data/red_pajama_n=1024_4096_context_length.pth
export SAVE_PATH=./llama-2-7b-aqlm-1bit

python main.py $MODEL_PATH $DATASET_PATH \
  --nsamples=1024 \
  --val_size=128 \
  --num_codebooks=1 \
  --nbits_per_codebook=256 \  # 1bit量化特殊设置
  --in_group_size=8 \
  --relative_mse_tolerance=0.01 \
  --finetune_batch_size=32 \
  --finetune_max_epochs=10 \
  --offload_activations \
  --save $SAVE_PATH

关键参数说明:

  • --num_codebooks:码本数量,1bit量化时设为1
  • --nbits_per_codebook:每个码本的位数,1bit量化时设为256(2^8)
  • --in_group_size:量化分组大小,通常设为8
  • --relative_mse_tolerance:MSE误差容忍度,值越小精度越高但量化时间越长

转换为Hugging Face格式

量化完成后,使用convert_to_hf.py将模型转换为标准格式:

python convert_to_hf.py \
  meta-llama/Llama-2-7b-hf \
  ./llama-2-7b-aqlm-1bit \
  ./llama-2-7b-aqlm-1bit-hf \
  --save_safetensors

PV-Tuning微调优化

AQLM的PV-Tuning(Product of Vectors Tuning)技术能有效提升量化模型性能,其核心思想是同时优化量化码本和量化参数。

准备微调数据

首先使用finetune.py预处理微调数据:

TARGET_MODEL=meta-llama/Llama-2-7b-hf
SEQLEN=4096
DATASET=togethercomputer/RedPajama-Data-1T-Sample
OUTPUT_PATH=./redpajama_tokenized_llama2

CUDA_VISIBLE_DEVICES=0 torchrun --master-port 3456 --nproc-per-node=1 finetune.py \
  --base_model $TARGET_MODEL \
  --quantized_model ./doesnt_matter \
  --dtype bfloat16 \
  --block_type LlamaDecoderLayer \
  --dataset_name=$DATASET \
  --split train \
  --dataset_config_name plain_text \
  --model_seqlen=$SEQLEN \
  --preprocessing_num_workers=64 \
  --save_dataset_and_exit $OUTPUT_PATH

执行PV-Tuning微调

NUM_GPUS=4
MODEL_PATH=meta-llama/Llama-2-7b-hf
QUANTIZED_WEIGHTS_PATH=./llama-2-7b-aqlm-1bit
TOKENIZED_DATASET_PATH=./redpajama_tokenized_llama2
SAVE_PATH=./llama-2-7b-aqlm-1bit-pv-tuned

torchrun --nproc-per-node=$NUM_GPUS finetune.py \
  --base_model $MODEL_PATH \
  --quantized_model $QUANTIZED_WEIGHTS_PATH \
  --model_seqlen=4096 \
  --block_type LlamaDecoderLayer \
  --load_dtype bfloat16 \
  --amp_dtype bfloat16 \
  --code_dtype uint16 \
  --dataset_name=$TOKENIZED_DATASET_PATH \
  --split none \
  --update_codes \
  --update_codebooks_and_scales \
  --update_non_quantized_parameters \
  --lamb \
  --lr 3e-4 \
  --batch_size=128 \
  --max_epochs 1 \
  --gradient_checkpointing \
  --save $SAVE_PATH

PV-Tuning关键参数:

  • --update_codes:更新量化编码
  • --update_codebooks_and_scales:更新码本和缩放因子
  • --update_non_quantized_parameters:更新非量化参数
  • --lamb:使用LAMB优化器

性能评估与基准测试

AQLM提供了完善的性能评估工具,位于benchmark/目录下,支持矩阵乘法性能测试和生成式任务基准测试。

矩阵乘法性能测试

# GPU矩阵乘法测试
python benchmark/matmul_benchmark.py

# CPU矩阵乘法测试
python benchmark/matmul_benchmark_cpu.py

生成式任务性能测试

python benchmark/generate_benchmark.py \
  --model_path ISTA-DASLab/Llama-2-7b-AQLM-1Bit-1x8-hf \
  --prompt "The future of AI is" \
  --num_tokens 100 \
  --num_runs 10

预量化模型性能指标

AQLM团队发布了多种预量化模型,性能指标如下:

模型量化方案WikiText-2 PPL模型大小 (GB)
Llama-2-7b1x16g85.682.4
Llama-2-7b1x8g87.851.34
Llama-3-8b1x16g86.994.1
Mistral-7B1x16g85.222.51
Phi-3-mini-4k-instruct1x16g86.631.4

表:AQLM PV-Tuning模型性能,数据来源README.md

进阶应用与工具

vLLM部署加速

AQLM支持vLLM推理引擎,可大幅提升生成速度。使用notebooks/aqlm_vllm.ipynb教程,实现高性能部署:

from vllm import LLM, SamplingParams

model_name = "ISTA-DASLab/Llama-2-7b-AQLM-2Bit-1x16-hf"
sampling_params = SamplingParams(temperature=0.7, top_p=0.95, max_tokens=100)
llm = LLM(model=model_name, tensor_parallel_size=1, gpu_memory_utilization=0.9)

prompts = ["What is AQLM?", "How does model compression work?"]
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    print(output.prompt, output.text)

流式输出与CUDA图优化

AQLM支持流式生成和CUDA图优化,进一步提升推理速度。相关示例可参考:

学习资源与社区

官方文档与教程

常见问题解答

Q: AQLM支持哪些模型架构?
A: 当前主要支持LLaMA、Mistral、Mixtral、Gemma和Phi-3系列模型,详见模型列表

Q: 量化需要多少计算资源?
A: 7B模型量化约需1张A100 GPU,耗时1天左右;70B模型建议使用多GPU并行量化。

Q: 如何贡献代码?
A: 请先打开issue讨论,提交PR前需运行black . && isort .格式化代码。

持续更新与版本历史

  • 2025.04:v1.1.7发布,支持任意8维码本,提升1bit模型精度
  • 2024.11:PV-Tuning被NeurIPS 2024接收为口头报告
  • 2024.06:发布PV-Tuning技术与模型集合
  • 2024.05:AQLM被ICML 2024接收

总结与展望

AQLM通过创新的加法量化技术,在模型压缩领域取得了突破性进展,使大语言模型能够在资源受限的设备上高效运行。本文介绍的推理、量化、微调流程和性能评估方法,为开发者提供了全面的实践指南。

随着硬件技术的发展和算法的优化,我们有理由相信AQLM将在以下方向持续进步:

  • 更高压缩率:探索亚1bit量化技术
  • 更广泛支持:适配更多模型架构和应用场景
  • 更优性能:进一步降低量化损失,提升推理速度

立即行动:

  1. Star并收藏本项目:git clone https://gitcode.com/GitHub_Trending/aq/AQLM
  2. 尝试量化自己的第一个模型,使用main.py脚本
  3. 关注项目更新,参与社区讨论,贡献你的想法和代码

AQLM正在改变大语言模型的部署方式,期待你的加入,共同推动模型压缩技术的发展!

【免费下载链接】AQLM Official Pytorch repository for Extreme Compression of Large Language Models via Additive Quantization https://arxiv.org/pdf/2401.06118.pdf 【免费下载链接】AQLM 项目地址: https://gitcode.com/GitHub_Trending/aq/AQLM

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

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

抵扣说明:

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

余额充值