vLLM 速查表
快速查找 vLLM 常用命令、参数和代码片段。
安装命令
# pip 安装
pip install vllm
# 开发版本
pip install vllm --pre --extra-index-url https://wheels.vllm.ai/nightly
# Docker
docker pull vllm/vllm-openai:latest
启动服务
# 基本启动
vllm serve MODEL_NAME
# 完整参数
vllm serve MODEL_NAME \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.9 \
--max-model-len 4096 \
--quantization awq
Python API
基础推理
from vllm import LLM, SamplingParams
llm = LLM(model="MODEL_NAME")
sampling_params = SamplingParams(temperature=0.7, max_tokens=100)
outputs = llm.generate(["prompt"], sampling_params)
print(outputs[0].outputs[0].text)
采样参数
SamplingParams(
n=1, # 生成结果数
temperature=0.7, # 温度
top_p=0.95, # 核采样
top_k=-1, # Top-k 采样
max_tokens=100, # 最大 token 数
presence_penalty=0.0, # 存在惩罚
frequency_penalty=0.0, # 频率惩罚
stop=None, # 停止词
)
LLM 初始化参数
LLM(
model="MODEL_NAME",
tensor_parallel_size=1, # 张量并行
pipeline_parallel_size=1, # 流水线并行
gpu_memory_utilization=0.9, # GPU 显存利用率
max_model_len=4096, # 最大模型长度
quantization=None, # 量化类型
dtype="auto", # 数据类型
max_num_seqs=256, # 最大并发序列数
enable_prefix_caching=False, # 前缀缓存
)
HTTP API
Completions
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"prompt": "PROMPT",
"max_tokens": 100,
"temperature": 0.7
}'
Chat Completions
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"messages": [{"role": "user", "content": "MESSAGE"}],
"max_tokens": 100
}'
Python 客户端
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
# Completions
response = client.completions.create(
model="MODEL_NAME",
prompt="PROMPT",
max_tokens=100
)
# Chat
response = client.chat.completions.create(
model="MODEL_NAME",
messages=[{"role": "user", "content": "MESSAGE"}]
)
量化选项
| 类型 | 命令 | 说明 |
|---|---|---|
| FP16 | --dtype float16 | 默认 |
| BF16 | --dtype bfloat16 | 推荐 |
| FP8 | --quantization fp8 | Hopper GPU |
| INT8 | --quantization awq | 通用 |
| GPTQ | --quantization gptq | 4-bit |
| AWQ | --quantization awq | 4-bit |
并行配置
# 张量并行 (TP)
--tensor-parallel-size 4
# 流水线并行 (PP)
--pipeline-parallel-size 2
# 混合并行
--tensor-parallel-size 2 --pipeline-parallel-size 2
性能优化参数
# 启用前缀缓存
--enable-prefix-caching
# 启用 chunked prefill
--enable-chunked-prefill
# 推测解码
--speculative-model MODEL_NAME --num-speculative-tokens 5
# 调整批处理
--max-num-seqs 512 --max-num-batched-tokens 16384
常见问题
显存不足
llm = LLM(
model="MODEL_NAME",
gpu_memory_utilization=0.7,
max_model_len=2048,
quantization="awq"
)
模型下载
# 设置镜像
export HF_ENDPOINT=https://hf-mirror.com
# 手动下载
huggingface-cli download MODEL_NAME --local-dir ./models
多 GPU 启动
# 2 卡
CUDA_VISIBLE_DEVICES=0,1 vllm serve MODEL_NAME --tensor-parallel-size 2
# 4 卡
CUDA_VISIBLE_DEVICES=0,1,2,3 vllm serve MODEL_NAME --tensor-parallel-size 4