H20部署实战:DeepSeek-V4-Flash与GLM-5.1-FP8双模型推理配置

vLLM方式部署

显卡类型:NVIDIA H20-3e 141GB
驱动版本:595.45.04
cuda版本:13.2
镜像版本:vllm/vllm-openai:v0.22.1-cu129-ubuntu2404

vLLM简介

vLLM 是一个快速且易于使用的 LLM 推理和服务库。

vLLM(Very Large Language Model Serving)是由加州大学伯克利分校团队开发的高性能、低延迟的大语言模型(LLM)推理和服务框架。它专为大规模生产级部署设计,尤其擅长处理超长上下文(如8k+ tokens)和高并发请求,同时显著优化显存利用率,是当前开源社区中吞吐量最高的LLM推理引擎之一。

  • 高吞吐量:采用先进的服务器吞吐量技术。
  • 内存管理:通过PagedAttention高效管理注意力键和值内存。
  • 请求批处理:支持连续批处理传入请求。
  • 模型执行:利用CUDA/HIP图实现快速模型执行。
  • 量化技术:支持GPTQ、AWQ、INT4、INT8和FP8量化。
  • 优化内核:包括与FlashAttention和FlashInfer的集成。
  • 其他特性:支持推测解码、分块预填充。

推理故障排查

A800 不支持原生 FP8 计算,但后来已经支持在”不原生支持 FP8 计算”的显卡上,以兼容方式运行 FP8 模型——在运行时临时将 FP8 权重扩展到 BF16 再计算。会出现(Worker_TP7_EP7 pid=606) [rank7]:W0425 09:50:09.413000 606 torch/_higher_order_ops/triton_kernel_wrap.py:1026] ValueError("type fp8e4nv not supported in this architecture. The supported fp8 dtypes are ('fp8e4b15', 'fp8e5')")

--kv-cache-dtype 设置成 auto,会出现:(Worker_TP3_EP3 pid=409) ERROR 04-25 09:58:38 [multiproc_executor.py:879] AssertionError: DeepseekV4 only supports fp8 kv-cache format for now, got autoAmpere 架构下的 A100、A800 暂时是别想跑原生的 DeepSeek V4。

若出现torch._inductor.exc.InductorError: AssertionError,则应该是 PyTorch 在尝试对 DeepSeek V4 模型进行图优化时,因某些算子不兼容而导致失败。

加了 --enforce-eager 参数,暂时禁用了编译优化,能启动服务(很慢),去掉--compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE", "custom_ops":["all"]}'

transformers版本冲突升级后报ModuleNotFoundError或ImportError,大概率是transformers还停在v4。直接pip install transformers>=5.0解决。如果其他包依赖v4不想动,建新虚拟环境。

CUDA graph捕获失败v0.22对DeepSeek V4和Qwen3.5/3.6的CUDA graph做了大量改动,首次启动可能捕获失败。加上–enforce-eager参数跳过CUDA graph先用eager模式跑通,确认模型加载没问题后再去掉这个参数。

Model Runner V2回退警告v0.22默认对Qwen3密集模型使用MRv2,但部分特性(如某些LoRA适配器)还不支持,会自动回退到MRv1并打印警告。这不是错误,不影响使用,只是提示你某些功能走的旧路径。

DeepSeek-V4-Flash服务部署

生产环境需要考虑的因素:KV Cache、运行时 buffer、通信 buffer、并发余量、推理框架开销,长上下文、Think Max、多并发 Agent

img_01

InfiniBand 网卡生效

常见的命名有 eth0bond0eno1enp4s0

启动参数(InfiniBand 网卡生效)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
export VLLM_ENGINE_READY_TIMEOUT_S=3600

# ========== vLLM 基础运行优化(H20 必设) ==========
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export VLLM_WORKER_MULTIPROC_METHOD=spawn
export VLLM_USE_FLASHINFER=1
export VLLM_ENABLE_MLA_FUSED_KERNEL=1

# ========== NCCL 多卡通信优化(IB 环境) ==========
export NCCL_DEBUG=WARN
export NCCL_IB_DISABLE=0
export NCCL_P2P_DISABLE=0
# 请替换为你服务器实际业务网卡名(如 eth0/ens5)
export NCCL_SOCKET_IFNAME=bond0
export NCCL_NVLS_ENABLE=1
export NCCL_ALGO=Ring

# ========== 系统内存/缓存优化 ==========
export PYTHONUNBUFFERED=1


vllm serve deepseek-ai/DeepSeek-V4-Flash \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--expert-parallel-size 8 \
--dtype fp8 \
--kv-cache-dtype fp8 \
--max-model-len 262144 \
--gpu-memory-utilization 0.88 \
--block-size 256 \
--max-num-batched-tokens 8192 \
--max-num-seqs 2048 \
--enable-chunked-prefill \
--chunked-prefill-size 2048 \
--request-timeout 300 \
--trust-remote-code \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--enable-auto-tool-choice \
--reasoning-parser deepseek_v4 \
--host 0.0.0.0 \
--port 8000 \
--log-level info \
--disable-log-requests


# 其它启动命令
vllm serve deepseek-ai/DeepSeek-V4-Flash \
--trust-remote-code \
--kv-cache-dtype fp8 \
--served-model-name deepseek-v4-flash \
--block-size 256 \
--enable-expert-parallel \
--tensor-parallel-size 8 \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--enable-auto-tool-choice \
--reasoning-parser deepseek_v4 \
--host 0.0.0.0 \
--port 8000 \
--max-model-len 262144


# 待定
--default-chat-template-kwargs '{"thinking": true, "reasoning_effort": "high"}'

InfiniBand 网卡无效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
export VLLM_ENGINE_READY_TIMEOUT_S=3600

# ========== vLLM 基础运行优化(H20 必设) ==========
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export VLLM_WORKER_MULTIPROC_METHOD=spawn
export VLLM_USE_FLASHINFER=1
export VLLM_ENABLE_MLA_FUSED_KERNEL=1

# ========== NCCL 多卡通信优化(纯 PCIe 环境) ==========
export NCCL_DEBUG=WARN
export NCCL_IB_DISABLE=1
export NCCL_P2P_DISABLE=0
export NCCL_P2P_LEVEL=LOC
export NCCL_ALGO=Ring

# ========== 系统内存/缓存优化 ==========
export PYTHONUNBUFFERED=1



docker run -d \
--name vllm-deepseek-v4-flash-fp8 \
--gpus all \
--shm-size=32g \
-p 8000:8000 \
-v /data2/models/DeepSeek-V4-Flash:/models/DeepSeek-V4-Flash \
-e VLLM_ENGINE_READY_TIMEOUT_S=3600 \
-e CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
-e VLLM_WORKER_MULTIPROC_METHOD=spawn \
-e VLLM_USE_FLASHINFER=1 \
-e VLLM_ENABLE_MLA_FUSED_KERNEL=1 \
-e NCCL_DEBUG=WARN \
-e NCCL_IB_DISABLE=0 \
-e NCCL_P2P_DISABLE=0 \
-e NCCL_SOCKET_IFNAME=bond0 \
-e NCCL_NVLS_ENABLE=1 \
-e NCCL_ALGO=Ring \
-e PYTHONUNBUFFERED=1 \
harbor-cmp.zoomlion.com/library/vllm/vllm-openai:v0.22.0-cu129-ubuntu2404 \
/models/DeepSeek-V4-Flash \
--served-model-name deepseek-v4-flash \
--block-size 256 \
--enable-expert-parallel \
--tensor-parallel-size 8 \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 \
--enable-auto-tool-choice \
--reasoning-parser deepseek_v4 \
--port 8000 \
--max-model-len 262144 \
--host 0.0.0.0

参数调优:vllm serve - vLLM - vLLM 文档豆包mp.weixin.qq.commp.weixin.qq.com

GLM-5.1-FP8服务部署

生产环境需要考虑的因素:KV Cache、运行时 buffer、通信 buffer、并发余量、推理框架开销,长上下文、Think Max、多并发 Agent

InfiniBand 网卡生效(常见的命名有 eth0bond0eno1enp4s0 等)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
docker run -d \
--name vllm-glm5.1-fp8 \
--gpus all \
--shm-size=32g \
-p 8000:8000 \
-v /data2/models/GLM-5.1-FP8:/models/GLM-5.1-FP8 \
-e VLLM_ENGINE_READY_TIMEOUT_S=3600 \
-e CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
-e VLLM_WORKER_MULTIPROC_METHOD=spawn \
-e VLLM_USE_FLASHINFER=1 \
-e VLLM_ENABLE_MLA_FUSED_KERNEL=1 \
-e NCCL_DEBUG=WARN \
-e NCCL_IB_DISABLE=0 \
-e NCCL_P2P_DISABLE=0 \
-e NCCL_SOCKET_IFNAME=bond0 \
-e NCCL_NVLS_ENABLE=1 \
-e NCCL_ALGO=Ring \
-e PYTHONUNBUFFERED=1 \
harbor-cmp.zoomlion.com/library/vllm/vllm-openai:v0.22.0-cu129-ubuntu2404 \
/models/GLM-5.1-FP8 \
--trust-remote-code \
--served-model-name glm-5.1 \
--chat-template-content-format=string \
--tensor-parallel-size 8 \
--max-num-batched-tokens 8192 \
--max-num-seqs 256 \
--max-model-len 128000 \
--tool-call-parser glm47 \
--enable-auto-tool-choice \
--reasoning-parser glm45 \
--speculative-config.method mtp \
--speculative-config.num_speculative_tokens 3 \
--api-key 032a87e3e383fee677c06e822c11e252 \
--host 0.0.0.0

InfiniBand 网卡无效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
docker run -d \
--name vllm-glm5.1-fp8 \
--gpus all \
--shm-size=32g \
-p 8000:8000 \
-v /data2/models/GLM-5.1-FP8:/models/GLM-5.1-FP8 \
-e VLLM_ENGINE_READY_TIMEOUT_S=3600 \
-e CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
-e VLLM_WORKER_MULTIPROC_METHOD=spawn \
-e VLLM_USE_FLASHINFER= \
-e VLLM_ENABLE_MLA_FUSED_KERNEL=1 \
-e NCCL_DEBUG=WARN \
-e NCCL_IB_DISABLE=1 \
-e NCCL_P2P_DISABLE=0 \
-e NCCL_P2P_LEVEL=LOC \
-e NCCL_ALGO=Ring \
-e PYTHONUNBUFFERED=1 \
harbor-cmp.zoomlion.com/library/vllm/vllm-openai:v0.22.0-cu129-ubuntu2404 \
/models/GLM-5.1-FP8 \
--trust-remote-code \
--served-model-name glm-5.1 \
--chat-template-content-format=string \
--tensor-parallel-size 8 \
--max-num-batched-tokens 8192 \
--max-num-seqs 256 \
--max-model-len 128000 \
--tool-call-parser glm47 \
--enable-auto-tool-choice \
--reasoning-parser glm45 \
--speculative-config.method mtp \
--speculative-config.num_speculative_tokens 3 \
--api-key 032a87e3e383fee677c06e822c11e252 \
--host 0.0.0.0

参数调优参考:vllm serve - vLLM - vLLM 文档豆包mp.weixin.qq.commp.weixin.qq.com

SGLang方式部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
docker run -d \
--name sglang-deepseek-v4-flash-fp8 \
--gpus all \
--shm-size=32g \
-p 8000:8000 \
-v /data2/models/DeepSeek-V4-Flash:/models/DeepSeek-V4-Flash \
-e SGLANG_ENABLE_SPEC_V2=1 \
-e NCCL_DEBUG=WARN \
-e NCCL_IB_DISABLE=1 \
-e NCCL_P2P_DISABLE=0 \
-e NCCL_P2P_LEVEL=LOC \
-e NCCL_ALGO=Ring \
-e PYTHONUNBUFFERED=1 \
-e SGLANG_JIT_DEEPGEMM_PRECOMPILE=0 \
harbor-cmp.zoomlion.com/library/sglang:v0.5.12.post1-cu130 \
sglang serve \
--model-path /models/DeepSeek-V4-Flash \
--served-model-name deepseek-v4-flash \
--tp 8 \
--mem-fraction-static 0.85 \
--trust-remote-code \
--context-length 128000 \
--chunked-prefill-size 4096 \
--max-prefill-tokens 4096 \
--max-running-requests 64 \
--cuda-graph-max-bs 64 \
--speculative-algo EAGLE \
--speculative-num-steps 3 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 4 \
--enable-torch-compile \
--tool-call-parser deepseekv4 \
--reasoning-parser deepseek-v4 \
--attention-backend flashinfer \
--disable-flashinfer-autotune \
--host 0.0.0.0 \
--port 8000

DeepSeek-V4 - SGLang Documentation

本文结束 感谢您的阅读