vLLM 是一个开源的,专注于大模型的推理和部署服务框架,无缝集成 [[HuggingFace]],而且兼容 [[OpenAI API]] 格式接口。
部署
通过 [[docker]] 部署:
docker run --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ -p 8000:8000 \ --ipc=host \ vllm/vllm-openai:nightly \ --model Qwen/Qwen3.5-9B--gpus all: 使用所有 GPU-v ~/.cache/huggingface:/root/.cache/huggingface: 挂载 HuggingFace 缓存-p 8000:8000: 映射端口--ipc=host: 使用主机 IPCvllm/vllm-openai:nightly: 使用 vLLM 镜像--model Qwen/Qwen3.5-9B: 使用 Qwen3.5-9B 模型
也可以通过 [[docker-compose]] 进行部署:
services: vllm: container_name: vllm image: vllm/vllm-openai:nightly runtime: nvidia ports: - "8000:8000" volumes: - ~/.cache/huggingface:/root/.cache/huggingface environment: - CUDA_VISIBLE_DEVICES=0,1,2,3 ipc: hostQwen3.5 部署
通过 vLLM 部署 Qwen3.5 模型:
services: qwen: container_name: qwen image: vllm/vllm-openai:nightly runtime: nvidia ports: - "8000:8000" volumes: - ~/.cache/huggingface:/root/.cache/huggingface environment: - HF_HUB_OFFLINE=1 - CUDA_VISIBLE_DEVICES=0,1,2,3 command: - Qwen/Qwen3.5-9B - --tensor-parallel-size=4 - --api-key=${VLLM_API_KEY} - --reasoning-parser=qwen3 - --enable-prefix-caching - --enable-auto-tool-choice - --tool-call-parser=qwen3_coder - --max-model-len=65536 - --gpu-memory-utilization=0.90 - --mm-encoder-tp-mode=data - --mm-processor-cache-type=shm - --served-model-name=Qwen3.5-9B ipc: host shm_size: "16gb"environment:
- HF_HUB_OFFLINE=1: 离线模式
- CUDA_VISIBLE_DEVICES=0,1,2,3: 使用 4 个 GPU
command:
- Qwen/Qwen3.5-9B: 要运行的模型,无须前缀
- —tensor-parallel-size=4: 张量并行数,等于使用的 GPU 数量。
- —api-key=${VLLM_API_KEY}: 使用模型时的 OpenAI API 密钥
- —reasoning-parser=qwen3: 使用 Qwen3 解析器
- —enable-prefix-caching: 启用前缀缓存
- —enable-auto-tool-choice: 启用自动工具选择
- —tool-call-parser=qwen3_coder: 使用 Qwen3 工具调用解析器
- —max-model-len=65536: 最大上下文长度(Token 数)
- —gpu-memory-utilization=0.90: GPU 显存使用比例上限,剩余的留给系统和 CUDA 本身使用
- —mm-encoder-tp-mode=data: 设置 MM 编码器 TP 模式
- —mm-processor-cache-type=shm: 多模态(图片/视频)特征缓存类型
- shm: 共享内存
- —served-model-name=Qwen3.5-9B: 对外的模型名称
参数
gpu-memory-utilization
表示 vLLM 最多用掉每张 GPU 显存的比例,范围在 (0 ~ 1 之间)。
- 值越大
- 可用于 KV cache 的显存更多
- 支持更高的并发、上下文和吞吐量(同时处理的 Token 增多)
这个值不会影响模型权重,但是必须要高于 模型权重 / 显存。
显存使用:
- 模型权重
- KV Cache = 显存 * gpu-memory-utilization - 模型权重 - (CUDA + 多模态视觉编码 + 缓存等)
- CUDA + 多模态视觉编码 + 缓存等
max-model-len
max-model-len 表示单次请求允许的最长上下文,也就是 token 上限。
- 128K: 131072
- 256K: 262144
- 1M: 1000000