关注

Qwen3-VL LoRA 微调后的量化部署实录:方案对比与几个真实踩坑(vLLM + GPTQ W4A16)

起因

之前用 LoRA 微调了 Qwen3-VL-8B,做工地场景的图像理解与安全风险分析。微调完了要部署,目标是 vLLM 的 OpenAI 兼容 API server。把主流方案都过了一遍,最后落在 GPTQ W4A16 + LLM Compressor 上。中间踩了几个不算明显的坑,写下来给后面要做同样事情的人省点时间。


几个主流量化方案

先把目前能用在 Qwen3-VL 上的方案大致捋一遍。

GPTQ:基于二阶 Hessian 信息逐层校准量化,对 Qwen 系列适配很好。vLLM 原生支持,配合 Marlin INT4 kernel 推理速度非常快。需要校准数据但量不大,几百条够用。8-bit 几乎无损,4-bit 在领域微调场景下能压住 1–3 个点的精度损失。

AWQ:Activation-aware Weight Quantization。低比特下比 GPTQ 略稳,尤其是 3-bit。vLLM 同样支持。我没选它主要是因为 Qwen3-VL 的 AWQ 工具链成熟度暂时不如 GPTQ,社区 issue 反馈也多一些。

FP8(W8A8):LLM Compressor 已经支持 Qwen3-VL 的 FP8,而且有 data-free 路径——不需要校准集,几分钟就能压完,精度几乎无损。但前提是 GPU 得有 FP8 Tensor Core,意味着 Ada Lovelace 或 Hopper 架构(H100、H20、L40S、4090、6000 Ada、5880 Ada 这些)。

bitsandbytes(NF4 / INT8):最简单的方案,load_in_4bit=True 一行搞定。开发阶段用没问题,但 vLLM 对它的支持有限,性能远不如 GPTQ/AWQ。生产部署直接 pass。

GGUF:llama.cpp 的格式,Ollama / LM Studio 用的就是这个。不是 vLLM 的菜,而且 Qwen3-VL 的视觉部分在 llama.cpp 里支持情况要看具体版本。

SmoothQuant:是个量化前的预处理技术,把激活的离群点"摊"到权重上,让后续的 W8A8 更稳。一般不单独用,是 GPTQ/AWQ 的辅助手段。

简单对比:

方案 压缩比 精度损失 vLLM 支持 需要校准 适用硬件
GPTQ W4A16 ~4x 1–3 点 原生 通用
AWQ W4A16 ~4x 1–2 点 原生 通用
FP8 W8A8 ~2x <1 点 原生 Ada / Hopper
BnB NF4 ~4x 2–4 点 通用

完整流程

整个 pipeline 就四步:

  1. LoRA adapter 合并回 base model
  2. 准备图文校准数据
  3. LLM Compressor 跑 GPTQ oneshot
  4. vLLM 加载部署

环境版本:

llmcompressor>=0.8.0
transformers>=4.57
peft>=0.13
qwen-vl-utils>=0.0.10
vllm>=0.10

第一步:合并 LoRA

量化前必须先把 LoRA 合并进 base。否则量化器只动 base weights,LoRA 那部分还是 bf16,既不能完全压缩,部署时还得额外加载 adapter,没意义。

from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
from peft import PeftModel
import torch

model = Qwen3VLForC

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2301_78703432/article/details/161147757

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--