前言

vLLM 是目前开源大模型推理框架中性能最优秀的方案之一,支持 PagedAttention、Tensor Parallelism、Speculative Decoding 等特性。本文介绍如何使用 vLLM 部署 Qwen3.6-27B 模型,并配置多卡推理和推测解码。

环境要求

  • GPU显存:至少 48GB(建议 4 卡 A100/A800 32GB 单卡,或单卡 80GB)
  • 系统:Linux
  • Docker:已安装
  • 模型:Qwen3.6-27B(FP8 量化版)

快速部署

使用 Docker 单命令启动

docker run -d \
  --name vllm \
  --gpus '"device=6,7,8,9"' \
  -p 8000:8000 \
  -v /path/to/Qwen3.6-27B-FP8:/Qwen3.6-27B-FP8 \
  --shm-size=32gb \
  vllm/vllm-openai:latest \
  --model /Qwen3.6-27B-FP8 \
  --tensor-parallel-size 4 \
  --kv_cache_dtype fp8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --enable-prefix-caching \
  --gpu-memory-utilization 0.95

关键参数说明

参数 说明
--model 模型路径(本地目录或 HuggingFace ID)
--tensor-parallel-size 张量并行度,设为 GPU 数量
--kv_cache_dtype KV Cache 精度,FP8 可节省约 50% 显存
--max-model-len 最大上下文长度(262144 ≈ 256K)
--reasoning-parser 启用 Qwen3 思维链解析
--gpu-memory-utilization GPU 显存利用率,设为 0.95 预留应急空间

使用 Docker Compose 部署

version: '3.8'

services:
  vllm:
    image: vllm/vllm-openai:latest
    ports:
      - "8000:8000"
    volumes:
      - ./Qwen3.6-27B-FP8:/Qwen3.6-27B-FP8
    deploy:
      resources:
        reservations:
          cpus: 16
          memory: 32GB
          devices:
            - capabilities: [gpu]
              device_ids: ['6','7','8','9']
              driver: nvidia
    command:
      - --model
      - /Qwen3.6-27B-FP8
      - --tensor-parallel-size
      - "4"
      - --kv_cache_dtype
      - "fp8"
      - --max-model-len
      - "262144"
      - --reasoning-parser
      - qwen3
      - --enable-auto-tool-choice
      - --tool-call-parser
      - qwen3_coder
      - --enable-prefix-caching
      - --gpu-memory-utilization
      - "0.95"
    shm_size: '32gb'

推测解码配置

vLLM 支持 Speculative Decoding(推测解码),通过小模型预测后续 Token,加速推理:

--speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":4}'

参数说明

  • method: 推测方法,qwen3_next_mtp 适合 Qwen3 系列
  • num_speculative_tokens: 每次推测的 Token 数量,建议 4-8

API 调用示例

启动服务后,使用 OpenAI 兼容 API:

# 测试服务
curl http://localhost:8000/v1/models

# 基础对话
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "/Qwen3.6-27B-FP8",
    "messages": [
      {"role": "user", "content": "你好,请介绍一下自己"}
    ]
  }'

启用思维链

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "/Qwen3.6-27B-FP8",
    "messages": [
      {"role": "user", "content": "计算 234 * 567 = ?"}
    ],
    "extra_body": {
      "thinking": true
    }
  }'

性能优化建议

1. 批量处理

--max-num-seqs 32

调整批次最大并发数,提高吞吐。值越大吞吐越高,但显存占用也越大。

2. 启用 Prefix Caching

--enable-prefix-caching

对于重复前缀的请求(如系统提示词),可以复用计算结果,显著降低延迟。

3. 显存优化

  • --kv_cache_dtype fp8:FP8 量化,节省约 50% 显存
  • --gpu-memory-utilization 0.95:预留 5% 显存防止 OOM

4. 共享内存

--shm-size=32gb

增加共享内存大小,避免大模型推理时的内存不足问题。

常见问题排查

1. CUDA 驱动问题

RuntimeError: No CUDA GPUs are available or driver not installed

确保已安装 NVIDIA 驱动和 nvidia-container-toolkit:

nvidia-smi

2. 显存不足(OOM)

  • 降低 --gpu-memory-utilization(如 0.85)
  • 使用更激进的量化(如 FP8)
  • 减少 --max-num-seqs
  • 确保 --shm-size 足够大

3. 模型加载失败

检查模型路径是否正确,模型文件是否完整:

ls -la /path/to/Qwen3.6-27B-FP8/

性能基准测试

配置 并发数 吞吐量
4 卡 A100 + FP8 32 ~500 tokens/s
4 卡 A100 + FP16 32 ~350 tokens/s
8 卡 A100 + FP8 64 ~900 tokens/s

数据为参考值,实际性能取决于模型大小和请求模式。

总结

使用 vLLM 部署大模型非常方便,官方 Docker 镜像开箱即用。通过合理的参数配置,可以获得优秀的推理性能。关键点:

  1. 使用官方镜像 vllm/vllm-openai:latest
  2. 根据 GPU 数量设置 --tensor-parallel-size
  3. 使用 FP8 量化节省显存
  4. 启用推测解码提升吞吐
  5. 配置足够的共享内存和显存预留