GPUStack × TileRT × B300:GLM-5.1 高速版复现,解码吞吐 500+ TPS
本文以单台 8×B300 服务器为例,演示如何在 GPUStack 中接入 TileRT 定制 vLLM 后端,完成 GLM-5.1 的 Prefill / Decode(PD)分离部署、路由配置与性能验证。
智谱近期向部分企业客户开放了 GLM-5.1 高速版 API(GLM-5.1-highspeed),官方数据显示其输出速度可达 400 tokens/s,刷新了当前全球大模型厂商API的速度上限。

过去,模型响应速度与模型能力之间往往存在取舍。GLM-5.1 高速版希望在旗舰模型能力基础上,进一步提供低生成延迟,**让速度不再是轻量级模型的专属。
根据公开介绍,GLM-5.1 高速版由智谱 GLM 团队与 TileRT 团队联合打造,并在推理引擎、调度系统和底层基础设施上进行了优化。相关技术细节可参阅 TileRT 官方技术博客。
本文以单台 8×B300 服务器为例,使用 GPUStack 编排 vLLM 与 TileRT,完成 GLM-5.1 的 Prefill、Decode 与 Router 部署,并记录 PD 分离服务的测试结果。文中实测数据仅对应本文环境与指标口径,不代表线上高速版的完整生产配置。
本文以单台 8×B300 服务器为例,使用 vLLM + TileRT 作为推理运行时,由 GPUStack 统一编排 Prefill、Decode 与 Router 三个组件,完成 GLM-5.1 的端到端 PD 分离服务,并给出一套可复用的高速推理部署与验证路径。本文实测结果用于说明该部署方案的性能表现,不代表线上高速版的完整生产配置。
实验环境
本文使用单台配置为 8 × B300 的服务器。部署前请确保 GPUStack Server、目标 Worker、NVIDIA 驱动、Docker 及 NVIDIA Container Toolkit 已正常运行,并且 Worker 能够拉取下文所使用的镜像。

本文中的
10.91.0.187为示例地址。请在所有命令和 GPUStack 配置中替换为实际的 Worker 管理网 IP。
准备 TileRT 推理镜像
PD 分离部署需要两个镜像:一个用于 Prefill 与 Router,另一个用于 Decode。
| 组件 | 镜像地址 |
|---|---|
| Prefill / Router | swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:tilert-pre-nightly |
| Decode | swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:tilert-nightly |
在网络受限环境中,建议提前在 Worker 节点拉取镜像,避免首次创建模型实例时因镜像下载延长启动时间。
添加自定义 vLLM-TileRT-PD 后端
GPUStack 支持可插拔推理后端。通过新增自定义后端,可以将同一套 TileRT 运行时分别暴露给 Prefill、Decode 和 Router 三类服务。
在 GPUStack 控制台的推理后端中新增自定义后端,名称可设为 vLLM-TileRT-PD-custom。切换至 YAML 配置模式后,导入以下内容:
backend_name: vLLM-TileRT-PD-custom
owner_principal_id: null
version_configs:
nightly-prefill:
image_name: swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:tilert-pre-nightly
run_command: '{{model_path}} --host {{worker_ip}} --port {{port}}'
entrypoint: vllm serve
custom_framework: cuda
env: {}
0.1.5-decode:
image_name: swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:tilert-nightly
run_command: '-m tilert.pd_vllm.decode_server --model-weights-dir {{model_path}}'
entrypoint: python3
custom_framework: cuda
env: {}
0.1.5-router:
image_name: swr.cn-south-1.myhuaweicloud.com/gpustack/vllm-openai:tilert-pre-nightly
run_command: >-
-m tilert.pd_vllm.pd_router --model-path {{model_path}} --host
{{worker_ip}} --port {{port}}
entrypoint: python3
custom_framework: cpu
env: {}
default_version: ''
default_backend_param: []
default_run_command: ''
default_entrypoint: ''
is_built_in: false
description: null
health_check_path: null
backend_source: custom
enabled: true
icon: null
default_env: null
parameter_format: null
common_parameters: null
built_in_version_configs: {}
framework_index_map:
cuda:
- nightly-prefill
- 0.1.5-decode
cpu:
- 0.1.5-router
导入后,确认 nightly-prefill 与 0.1.5-decode 使用 CUDA 框架,0.1.5-router 使用 CPU 框架。三者均可在后续创建模型部署时从该自定义后端中选择。
部署 GLM-5.1 Prefill 服务
首先创建 GLM-5.1 的 Prefill 部署,选择 vLLM-TileRT-PD-custom 后端和 nightly-prefill 版本,并将 8 张 B300 GPU 分配给该实例。


在部署参数中填写:
--served-model-name glm5.1 \
--port 8000 \
--tensor-parallel-size 8 \
--enforce-eager \
--trust-remote-code \
--return-tokens-as-token-ids \
--gpu-memory-utilization 0.5 \
--kv-cache-dtype fp8_ds_mla \
--speculative-config '{"method": "mtp", "num_speculative_tokens": 1}' \
--kv-transfer-config '{
"kv_connector": "TileRTConnector",
"kv_connector_module_path": "tilert.pd_vllm.prefill_connector",
"kv_role": "kv_producer",
"kv_connector_extra_config": {
"tilert_host": "[10.91.0.187]",
"tilert_ctrl_port": 5556,
"tilert_model": "glm5",
"tilert_max_seq_len": 202752
}
}'
其中 tilert_host 必须替换为本机管理网 IP;tilert_ctrl_port、模型名和最大序列长度则需与后续 Decode 服务保持一致。
部署 GLM-5.1 Decode 服务
创建第二个模型部署,选择自定义后端的 0.1.5-decode 版本,并指定与 Prefill 相同的 GLM-5.1 权重路径。


在部署参数中填写:
--engine tilert --model glm5 \
--with-mtp --max-seq-len 202752 \
--kv-cache-dtype fp8 \
--ctrl-port 5556 --http-port 5557
这里的 --model glm5、--max-seq-len 202752 与控制端口 5556 必须与 Prefill 中 kv_connector_extra_config 的配置一致;5557 为 Decode HTTP 服务端口。
部署 TileRT Router 服务
最后创建 Router 部署,选择 0.1.5-router 版本。Router 不需要 GPU,但必须能够访问 Prefill 的服务端口以及 Decode 的控制、HTTP 端口。


部署参数示例如下:
--vllm-url http://10.91.0.187:40029
--decode 10.91.0.187:5556:5557
请将 --vllm-url 中的 IP 和端口替换为 Prefill 部署对外暴露的实际地址;--decode 依次为 Decode 所在主机 IP、控制端口和 HTTP 端口。Router 部署成功后,对外提供 OpenAI 兼容接口。
模型测试与性能观察
下面的命令向 Router 的 /v1/chat/completions 接口发送请求,并分别输出生成 token 数、端到端吞吐(E2E TPS)与 Decode 阶段吞吐。
RESP=$(curl -s -w '\n%{time_total}' http://10.91.0.187:40034/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "glm5.1",
"stream": false,
"messages": [{"role": "user", "content": "nihao"}]
}')
BODY=$(echo "$RESP" | sed '$d')
SEC=$(echo "$RESP" | tail -n1)
TOK=$(echo "$BODY" | python3 -c "import sys,json; print(json.load(sys.stdin)['usage']['completion_tokens'])")
DEC=$(echo "$BODY" | python3 -c "import sys,json; d=json.load(sys.stdin).get('pd_timing_ms') or {}; print((d.get('decode') or 0)/1000)")
python3 - <<EOF
tok=$TOK; sec=float("$SEC"); dec=float("$DEC")
print(f"completion_tokens={tok}")
print(f"wall_time={sec:.3f}s e2e_tps={tok/sec:.2f}")
print(f"decode_time={dec:.3f}s decode_tps={tok/dec:.2f}" if dec>0 else "decode_tps=N/A")
EOF

结论
在单台 8 × B300 环境中,基于 GPUStack 编排 vLLM 与 TileRT 的 PD 分离方案,在单并发测试下达到约 528 TPS,相较未拆分部署的基线可获得约 5~10 倍的吞吐提升。
实际性能会受到模型版本、提示词长度、输出长度、并发度、GPU 频率与网络拓扑等因素影响。建议在生产环境按目标请求分布进行压测,并重点核对 Prefill、Decode 与 Router 的端口连通性以及模型、上下文长度等一致性配置。
更多推荐


所有评论(0)