三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统

LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统

LightCompress与VLLM集成教程:打造高效低延迟LLM推理系统

【免费下载链接】LightCompress[EMNLP 2024 & AAAI 2026] A powerful toolkit for compressing large models including LLMs, VLMs, and video generative models.项目地址: https://gitcode.com/gh_mirrors/ll/LightCompress

LightCompress是一款强大的大模型压缩工具包,支持LLMs、VLMs和视频生成模型的压缩。通过与VLLM后端集成,能够实现高效低延迟的LLM推理,为用户提供快速且准确的模型服务体验。

为什么选择LightCompress与VLLM集成?

LightCompress提供了多种先进的量化算法,如AWQ、GPTQ、RTN等,能够在保持模型精度的同时大幅减少模型体积。而VLLM作为高效的LLM推理后端,通过优化内存管理和计算效率,显著提升推理速度。两者结合,可在不牺牲精度的前提下实现推理加速和内存优化,非常适合需要高效处理大规模语言模型的场景。

LightCompress量化流程示意图,展示了从校准数据到量化配置再到转换和裁剪的完整过程

环境准备:快速搭建集成环境

要使用VLLM进行量化推理,首先需要安装和配置VLLM环境。打开终端,执行以下命令:

pip install vllm

此外,对于FP8量化,还需要安装QPyTorch库:

pip install qtorch

模型量化:选择适合的量化方案

LightCompress支持多种量化格式,以满足不同的性能和精度需求。以下是几种常见的量化方案:

W8A16量化:平衡性能与精度

在W8A16量化设置中,大型语言模型通常不会出现明显的精度下降。这种情况下,推荐使用简单的RTN(Round to Nearest)算法,它不需要额外的校准步骤,运行速度快。

配置文件路径:configs/quantization/backend/vllm/rtn_w8a16.yml

关键配置如下:

quant: method: RTN weight: bit: 8 symmetric: True granularity: per_group group_size: 128 need_pack: True

确保将need_pack参数设置为True,这会将8位权重打包成torch.int32格式,以便VLLM直接加载和推理。

W4A16量化:极致压缩与精度保障

在W4A16量化设置中,RTN算法无法保证精度,因此需要更高级的量化算法。推荐使用LightCompress中的AWQ算法。

配置文件路径:configs/quantization/backend/vllm/awq_w4a16.yml

如果AWQ无法满足精度要求,还可以使用AWQ + OmniQuant组合算法,配置文件路径:configs/quantization/backend/vllm/w4a16_combin

FP8量化:动态与静态的灵活选择

LightCompress支持FP8动态和静态量化。动态量化中权重按通道量化,激活按令牌动态量化;静态量化中权重按张量量化,激活按张量静态量化。推荐使用AWQ算法以获得更好的量化精度。

动态量化配置文件路径:configs/quantization/backend/vllm/fp8/awq_fp8.yml

静态量化配置文件路径:configs/quantization/backend/vllm/fp8/awq_fp8_static.yml

导出量化模型:为VLLM推理做准备

完成量化配置后,需要导出VLLM可直接加载的量化模型。在配置文件中添加以下保存设置:

save: save_vllm: True save_path: /path/to/save_for_vllm_quant_model/

确保将save_vllm设置为True。对于W4A16和W8A16量化,LightCompress会将权重导出为torch.int32格式;对于W8A8量化,会导出为torch.int8格式,同时导出相关的量化参数。

然后修改运行脚本中的配置文件路径并执行:

# scripts/run_llmc.sh llmc=llmc_path export PYTHONPATH=$llmc:$PYTHONPATH task_name=quant_for_vllm config=${llmc}/configs/quantization/backend/vllm/awq_w4a16.yml

运行完成后,真实的量化模型将存储在save.save_path指定的路径。

VLLM推理:快速部署与使用

离线批量推理

LightCompress提供了使用VLLM在数据集上执行离线批量推理的示例。示例路径:examples/backend/vllm/infer_with_vllm.py

只需将示例中的model_path替换为导出的量化模型路径,然后运行:

cd examples/backend/vllm python infer_with_vllm.py

示例代码片段:

from transformers import AutoTokenizer from vllm import LLM, SamplingParams model_path = '/path/to/save_for_vllm_awq_w4/real_quant_model' model = LLM(model_path) tokenizer = AutoTokenizer.from_pretrained(model_path) prompts = [ 'Hello, my name is', 'The president of the United States is', 'The capital of France is', 'The future of AI is', ] sampling_params = SamplingParams(temperature=0.8, top_p=0.95) outputs = model.generate(prompts, sampling_params) for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text print(f'Prompt: {prompt!r}, Generated text: {generated_text!r}')

部署推理服务

VLLM可以部署为实现OpenAI API协议的服务器,作为使用OpenAI API的应用程序的替代品。默认情况下,服务器启动在http://localhost:8000,可通过--host--port参数指定地址。

启动服务器:

vllm serve /path/to/save_for_vllm_awq_w4/real_quant_model

查询服务器:

curl http://localhost:8000/v1/completions -H "Content-Type: application/json" -d '{ "model": "/path/to/save_for_vllm_awq_w4/real_quant_model", "prompt": "What is the AI?", "max_tokens": 128, "temperature": 0 }'

总结:高效LLM推理的最佳实践

通过LightCompress与VLLM的集成,我们可以轻松实现高效低延迟的LLM推理系统。无论是离线批量推理还是在线服务部署,这种组合都能提供出色的性能和精度。根据具体需求选择合适的量化方案,并按照本文介绍的步骤进行配置和部署,即可快速搭建起自己的高效LLM推理系统。

更多详细信息,请参考官方文档:docs/en/source/backend/vllm.md

【免费下载链接】LightCompress[EMNLP 2024 & AAAI 2026] A powerful toolkit for compressing large models including LLMs, VLMs, and video generative models.项目地址: https://gitcode.com/gh_mirrors/ll/LightCompress

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

← 返回列表