单机单卡部署
1. 确保在 py312 环境
conda activate py312
2. 卸载冲突包
pip uninstall -y transformers tokenizers huggingface-hub accelerate vllm
3. 安装依赖,先基础包
pip install --upgrade pip
pip install huggingface-hub>=0.21.0
pip install tokenizers>=0.21.1
pip install transformers>=4.56.0,<5
pip install accelerate
pip install bitsandbytes
pip install vllm
使用官方AWQ量化后的模型部署
export HUGGINGFACE_HUB_TOKEN="你的token"
export CUDA_VISIBLE_DEVICES=0
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen-14B-AWQ \
--dtype float16 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9 \
--quantization awq
明白,你想弄清楚这两个参数 到底是解决什么问题,我来系统讲清楚,并把 vLLM 场景下的逻辑梳理出来。
1️⃣ 问题背景
Qwen-14B 这样的大模型:
-
FP16 权重 → 单卡 24GB 显存可能够,但:
- KV Cache 在推理时也占用大量显存
- 多并发 / 长上下文 时显存不足
-
FP32 权重 → 显存几乎肯定不够单卡加载
-
如果不量化:
- 推理显存大
- 并发吞吐低
- GPU 利用率可能不高
所以要解决的核心问题是:
“如何在单卡或有限显存下高吞吐、长上下文推理大模型”
2️⃣ --model Qwen/Qwen-14B-AWQ
-
作用:告诉 vLLM 使用 官方 AWQ 量化权重
-
解决的问题:
- 显存占用大 → AWQ 权重是 8bit,显存比 FP16 少一半
- 推理速度慢 → AWQ 权重经过激活感知优化,GPU kernel 可以高速运算
- 精度损失大 → AWQ 专门优化量化误差,精度接近 FP16
-
简单说:让 vLLM 能在有限显存上高吞吐推理大模型
3️⃣ --quantization awq
-
作用:告诉 vLLM 加载权重时采用 AWQ 量化解码方式
-
解决的问题:
-
vLLM 默认加载 FP16/FP32 权重 → 显存占用高
-
即使权重是 AWQ 模型,没有这个参数 vLLM 可能不会按 8bit kernel 优化执行
-
这个参数保证:
- KV Cache 量化
- 前向计算使用低精度 kernel
- 批量请求连续 batching 高效
-
核心:解决的是显存占用和推理吞吐效率问题,而不是微调或训练问题。
4️⃣ 总结逻辑
| 参数 | 作用 | 解决问题 |
|---|---|---|
--model Qwen/Qwen-14B-AWQ |
使用官方 AWQ 量化权重 | 减少模型显存占用、保证精度、支持大模型加载 |
--quantization awq |
用 AWQ kernel 方式加载权重 | KV cache 也量化、推理更快、更省显存、支持高吞吐 batching |
一句话理解:
这两个参数组合起来,就是为了解决“单卡显存有限,但要高吞吐推理大模型”的问题。
BitsAndBytes 量化后部署脚本
--model Qwen/Qwen-14B-AWQ+--quantization awq是专门针对官方 AWQ 权重的
如果你自己用 BitsAndBytes 做的 8bit 权重,这个参数就不适用。
1️⃣ 你需要做的修改
假设你用 BitsAndBytes 做了 LoRA 微调或单独量化,保存路径在 ./lora_8bit_qwen14b,那么 vLLM 启动命令改成:
export HUGGINGFACE_HUB_TOKEN="你的token"
export CUDA_VISIBLE_DEVICES=0
python -m vllm.entrypoints.openai.api_server \
--model ./lora_8bit_qwen14b \
--dtype float16 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9
✅ 修改点:
-
--model→ 改成你本地量化后的模型路径- 不再指向官方 AWQ 权重
-
移除
--quantization awq- 这是 vLLM 只识别官方 AWQ 权重的参数
- 你自己量化的权重 BitsAndBytes 不需要,也不能用这个参数
-
dtype=float16可以保留- 因为 BitsAndBytes 8bit 权重也兼容 FP16 计算
2️⃣ 补充说明
-
连续 batching / KV Cache
- 官方 AWQ 权重 +
--quantization awq会对 KV Cache 做 8bit 优化 - 你自己 BitsAndBytes 量化的权重,KV Cache 默认还是 FP16
- 所以吞吐可能比官方 AWQ 稍低,但仍比原 FP16 显存节省明显
- 官方 AWQ 权重 +
-
Hugging Face Token
- 如果你的量化模型保存在本地路径(
./lora_8bit_qwen14b),并且不是私有 repo,可以不用HUGGINGFACE_HUB_TOKEN - 只有下载官方模型或私有 repo 时才需要
- 如果你的量化模型保存在本地路径(
-
LoRA 微调
- 如果你微调后的模型保存了 LoRA adapter,也可以直接加载,vLLM 会自动处理
3️⃣ 总结
使用 BitsAndBytes 自己量化的模型,启动 vLLM 的核心变化:
--model指向本地量化路径- 去掉
--quantization awq- 保留其他参数(
dtype,max-model-len,gpu-memory-utilization)
如果你愿意,我可以帮你写一个 完整 vLLM shell 脚本模板,支持:
- 本地 BitsAndBytes 8bit 权重
- LoRA 微调权重加载
- 后台启动 + 日志
- GPU 显存占用控制
这样你直接运行就能压测吞吐。
你希望我直接写吗?

浙公网安备 33010602011771号