H20部署GLM-5.1-FP8实战:vLLM与SGLang双框架、128k上下文配置与推理故障排查

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')")

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

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方式部署

InfiniBand 网卡无效,200k上下文

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

128k上下文

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
docker run -d \
--name sglang-glm5.1-fp8 \
--gpus all \
--shm-size=32g \
-p 8000:8000 \
-v /data2/models/GLM-5.1-FP8:/models/GLM-5.1-FP8 \
-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 \
harbor-cmp.zoomlion.com/library/sglang:v0.5.12.post1-cu130 \
sglang serve \
--model-path /models/GLM-5.1-FP8 \
--served-model-name glm-5.1 \
--tp 8 \
--mem-fraction-static 0.88 \
--trust-remote-code \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--speculative-algorithm EAGLE \
--speculative-num-steps 2 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 2 \
--max-running-requests 32 \
--chunked-prefill-size 8192 \
--context-length 128000 \
--api-key 032a87e3e383fee677c06e822c11e252 \
--host 0.0.0.0 \
--port 8000

64k上下文

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
docker run -d \
--name sglang-glm5.1-fp8 \
--gpus all \
--shm-size=32g \
-p 8000:8000 \
-v /data2/models/GLM-5.1-FP8:/models/GLM-5.1-FP8 \
-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 \
harbor-cmp.zoomlion.com/library/sglang:v0.5.12.post1-cu130 \
sglang serve \
--model-path /models/GLM-5.1-FP8 \
--served-model-name glm-5.1 \
--tp 8 \
--mem-fraction-static 0.90 \
--max-model-len 65536 \
--chunked-prefill-size 32768 \
--reasoning-parser glm45 \
--tool-call-parser glm47 \
--speculative-algorithm EAGLE \
--speculative-num-steps 3 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 4 \
--kv-cache-dtype fp8_e4m3 \
--host 0.0.0.0 \
--port 8000 \
--api-key 032a87e3e383fee677c06e822c11e252

参考:DeepSeek-V4 - SGLang Documentation

本文结束 感谢您的阅读