vllm
[toc]
前言
目前手上有几张 A100(80G) 显卡,驱动只支持 cuda 12.9;但是现在的大模型都不支持直接部署,需要社区适配,以及自己折腾一部分,故记录在此
部署 deepseek-v4-flash
资源:单机 8xA100
镜像
# 该镜像是基于 cuda 13.0 的
docker pull openguardrails/vllm-dsv4-0731-sm80:latest
# 我基于上述镜像修改适配 12.9
docker pull registry.cn-chengdu.aliyuncs.com/zcteo/vllm:deepseek-v4-sm80-cu129
部署命令
vllm serve /models/DeepSeek-V4-Flash-0731 \
--host 0.0.0.0 \
--port 8000 \
--served-model-name deepseek-v4-flash \
--trust-remote-code \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--kv-cache-dtype fp8 \
--block-size 256 \
--gpu-memory-utilization 0.90 \
--max-model-len 1048576 \
--max-num-batched-tokens 16384 \
--max-num-seqs 8 \
--enable-chunked-prefill \
--enable-auto-tool-choice \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--reasoning-parser deepseek_v4 \
--load-format auto \
--default-chat-template-kwargs '{"enable_thinking":true,"reasoning_effort":"high"}' \
--speculative-config '{"method":"dspark","num_speculative_tokens":5,"draft_sample_method":"greedy"}'
性能
- 1M 上下文最大并发:2.68x
- 单请求生成速度:170 tokens/s
部署 glm-5.2 glm-5.3
资源:双机 8xA100,共计 16xA100
镜像
docker pull openguardrails/vllm-glm52-sm80:764b6bfa0-pr47629-pr47644
# 上述镜像国内备份
docker pull registry.cn-chengdu.aliyuncs.com/zcteo/vllm:glm52-sm80-cu129
ray 配置
head
export NCCL_IB_DISABLE=0
export NCCL_SOCKET_IFNAME=eth2
export NCCL_IB_HCA=mlx5_1,mlx5_2,mlx5_3,mlx5_4
export GLOO_SOCKET_IFNAME=eth2
export VLLM_HOST_IP=$(ip -4 -br addr show eth2 | awk '{print $3}' | cut -d'/' -f1)
ray stop -f
killall -9 ray vllm
rm -rf /tmp/ray
ray start --head --port=6379 --node-ip-address=$VLLM_HOST_IP
worker
#!/bin/bash
if [ -z "$1" ]; then
echo "use $0 <head ip>"
exit 1
fi
export NCCL_IB_DISABLE=0
export NCCL_SOCKET_IFNAME=eth2
export NCCL_IB_HCA=mlx5_1,mlx5_2,mlx5_3,mlx5_4
export GLOO_SOCKET_IFNAME=eth2
export VLLM_HOST_IP=$(ip -4 -br addr show eth2 | awk '{print $3}' | cut -d'/' -f1)
ray stop -f
killall -9 ray vllm
rm -rf /tmp/ray
ray start --address="${1}:6379" --node-ip-address=$VLLM_HOST_IP
部署命令
在 head 节点执行
export RAY_ADDRESS="auto"
vllm serve /models/GLM-5.3-NVFP4 \
--served-model-name glm-5.3 \
--host 0.0.0.0 --port 8000 \
--trust-remote-code \
--enable-expert-parallel \
--pipeline-parallel-size 2 \
--tensor-parallel-size 8 \
--distributed-executor-backend ray \
--max-num-seqs 8 \
--dtype bfloat16 \
--kv-cache-dtype bfloat16 \
--max_model_len 524288 \
--block-size 128 \
--enable-auto-tool-choice \
--performance-mode balanced \
--gpu-memory-utilization 0.94 \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--load-format auto \
--default-chat-template-kwargs '{"enable_thinking":true,"reasoning_effort":"high"}'
性能
- 512K 上下文最大并发:1.83x
- 单请求生成速度:50 tokens/s
尝试过将 pp 和 tp 都设置为 4,可以支持 1M 上下文,但是单请求生成速度下降到 35 tokens/s
vllm-backport 镜像
资源:单机 8xA100
源码:https://github.com/wtdcode/vllm-backport
改镜像支持多个模型部署,下文只记录我实际试过的模型
# 该镜像是基于 cuda 13.0 的
docker pull lazymio/vllm-backport:latest-sm80
# 我基于上述镜像修改适配 12.9; flashinfer 版本g改为 0.6.15.post1,否则启动要报错
docker pull registry.cn-chengdu.aliyuncs.com/zcteo/vllm:backport-v0.13.0-sm80-cu129
部署 glm-5.3-flash
使用 v0.13.0 会一直思考不出结果,之前编译的 v0.12.0 可以正常使用;已确认有 bug issues#84
docker pull registry.cn-chengdu.aliyuncs.com/zcteo/vllm:backport-v0.12.0-sm80-cu129
命令
export VLLM_LOGGING_COLOR=1
vllm serve /models/GLM-5.3-Flash-NVFP4 \
--served-model-name glm-5.3-flash \
--host 0.0.0.0 --port 8000 \
--trust-remote-code \
--enable-expert-parallel \
--tensor-parallel-size 8 \
--max-num-seqs 8 \
--max_model_len 1048576 \
--block-size 128 \
--enable-auto-tool-choice \
--performance-mode balanced \
--gpu-memory-utilization 0.92 \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--load-format auto \
--default-chat-template-kwargs '{"enable_thinking":true,"reasoning_effort":"high"}' \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
性能
- 1M 上下文最大并发:3.39x
- 单请求生成速度:110 tokens/s
部署 qwen3.8-flash-next
命令
export VLLM_LOGGING_COLOR=1
export VLLM_USE_FLASHINFER_SAMPLER=0
export VLLM_ALLOW_LONG_MAX_MODEL_LEN=1
vllm serve /models/Qwen3.8-Flash-Next-FP8 \
--served-model-name qwen3.8-flash-next \
--host 0.0.0.0 --port 8000 \
--trust-remote-code \
--enable-expert-parallel \
--tensor-parallel-size 8 \
--max-num-seqs 8 \
--max_model_len 1048576 \
--enable-auto-tool-choice \
--performance-mode balanced \
--gpu-memory-utilization 0.90 \
--tool-call-parser qwen3_xml \
--reasoning-parser qwen3 \
--load-format auto \
--default-chat-template-kwargs '{"enable_thinking":true,"reasoning_effort":"medium"}' \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
性能
- 1M 上下文最大并发:3.23x
- 单请求生成速度:105 tokens/s
部署 deepseek-v4-flash-vision-exp
命令
vllm serve /models/DeepSeek-V4-Flash-Vision-Exp \
--host 0.0.0.0 \
--port 8000 \
--served-model-name deepseek-v4-flash-vision-exp \
--trust-remote-code \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--kv-cache-dtype fp8 \
--block-size 256 \
--gpu-memory-utilization 0.88 \
--max-model-len 1048576 \
--max-num-batched-tokens 16384 \
--max-num-seqs 8 \
--enable-chunked-prefill \
--enable-auto-tool-choice \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--reasoning-parser deepseek_v4 \
--load-format auto \
--default-chat-template-kwargs '{"enable_thinking":true,"reasoning_effort":"high"}' \
--speculative-config '{"method":"dspark","num_speculative_tokens":3,"draft_sample_method":"greedy"}'
性能
- 1M 上下文最大并发:3.13x
- 单请求生成速度:115 tokens/s
部署 deepseek-v4.1-flash
export VLLM_LOGGING_COLOR=1
export VLLM_MARLIN_USE_ATOMIC_ADD=1
vllm serve /models/DeepSeek-V4.1-Flash \
--host 0.0.0.0 \
--port 8000 \
--served-model-name deepseek-flash \
--trust-remote-code \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--kv-cache-dtype fp8_ds_mla \
--engram-config '{"cpu_offload": true}' \
--block-size 128 \
--gpu-memory-utilization 0.88 \
--max-model-len 1048576 \
--max-num-batched-tokens 32768 \
--max-num-seqs 8 \
--enable-chunked-prefill \
--enable-auto-tool-choice \
--tokenizer-mode deepseek_v41 \
--tool-call-parser deepseek_v41 \
--reasoning-parser deepseek_v41 \
--load-format auto \
--default-chat-template-kwargs '{"enable_thinking":true,"reasoning_effort":"high"}' \
--speculative-config '{"method":"dspark","num_speculative_tokens":5,"draft_sample_method":"greedy"}'
性能
- 1M 上下文最大并发:8.12x
- 单请求生成速度:110 tokens/s
由于个人水平有限,文中若有不合理或不正确的地方欢迎指出改正