GLM-5.3-Flash(实验版)¶
1 简介¶
GLM-5.3-Flash 是 GLM-5 系列中首个原生多模态模型。它基于 GLM 系列中首次结合稀疏注意力和线性注意力的混合架构构建,采用流形约束超连接(mHC),并在 30T token 的多模态预训练语料上训练。该模型总参数为 320B,激活参数仅 18B,在基准测试和真实工作负载中均优于 GLM-5.2,而成本仅为十分之一,同时在编码和智能体基准测试中接近 Claude Opus 4.8。GLM-5.3-Flash 还支持通过 reasoning_effort 参数(low、high、max)控制思考预算。
本文档将展示模型的主要验证步骤,包括支持的功能、功能配置、环境准备、单节点和多节点部署、精度和性能评估。
2 支持的功能¶
请参考支持的功能列表以获取模型支持的功能矩阵。
请参考功能指南以获取功能的配置。
3 前提条件¶
3.1 模型权重¶
GLM-5.3-Flash-w8a8-mxfp8 (950DT Products mxfp8 Quantized): 需要 1 个 950DT Products(96GB × 8)节点。下载模型权重。GLM-5.3-Flash-w8a8: 需要 1 个 Atlas 800 A3(128GB × 8)节点。下载模型权重。-
GLM-5.3-Flash-w8a8: 需要 2 个 Atlas 800 A2(64GB × 16)节点。下载模型权重。 -
您可以使用 msmodelslim 直接对模型进行量化。
建议将模型权重下载到多节点共享目录,例如 /root/.cache/
3.2 验证多节点通信(可选)¶
如果您要部署多节点环境,需要根据验证多节点通信环境验证多节点通信。
4 安装¶
4.1 Docker 镜像安装¶
在每个节点上启动 Docker 镜像。
export IMAGE=quay.io/ascend/vllm-ascend:glm-5.3-flash-a5-openeuler
export NAME=vllm-ascend
docker run --rm \
--name $NAME \
--net=host \
--shm-size=1g \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--device /dev/davinci4 \
--device /dev/davinci5 \
--device /dev/davinci6 \
--device /dev/davinci7 \
--device /dev/davinci_manager \
--device /dev/hisi_hdc \
--device /dev/ummu \
--device /dev/uburma \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /etc/hccl_rootinfo.json:/etc/hccl_rootinfo.json \
-v /etc/hixlep/:/etc/hixlep/ \
-v /root/.cache:/root/.cache \
-v /usr/local/sbin:/usr/local/sbin \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/bin/urma_admin:/usr/bin/urma_admin \
-v /lib/route.conf:/lib/route.conf \
-itd $IMAGE bash
在每个节点上启动 Docker 镜像。
export IMAGE=quay.io/ascend/vllm-ascend:glm-5.3-flash-a3
export NAME=vllm-ascend
# Run the container using the defined variables
# Note: If you are running bridge network with docker, please expose available ports for multiple nodes communication in advance
docker run --rm \
--name $NAME \
--net=host \
--shm-size=1g \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--device /dev/davinci4 \
--device /dev/davinci5 \
--device /dev/davinci6 \
--device /dev/davinci7 \
--device /dev/davinci8 \
--device /dev/davinci9 \
--device /dev/davinci10 \
--device /dev/davinci11 \
--device /dev/davinci12 \
--device /dev/davinci13 \
--device /dev/davinci14 \
--device /dev/davinci15 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-it $IMAGE bash
在每个节点上启动 Docker 镜像。
export IMAGE=quay.io/ascend/vllm-ascend:glm-5.3-flash
export NAME=vllm-ascend
docker run --rm \
--name $NAME \
--net=host \
--shm-size=500g \
--privileged \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--device /dev/davinci4 \
--device /dev/davinci5 \
--device /dev/davinci6 \
--device /dev/davinci7 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/local/sbin:/usr/local/sbin \
-v /etc/hccn.conf:/etc/hccn.conf:ro \
-v /root/.cache:/root/.cache \
-it $IMAGE bash
5 在线服务部署¶
Note
请勿为 GLM-5.3-Flash 设置 enable_thinking: false / thinking: false,否则输出质量可能会下降。
5.1 单节点在线部署¶
-
量化模型
GLM-5.3-Flash-w8a8-mxfp8可部署在 1 台 950DT 产品(96GB × 8)上。运行以下脚本以执行在线推理。
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True export HCCL_BUFFSIZE=1024 vllm serve Eco-Tech/GLM-5.3-Flash-w8a8-mxfp8 \ --host 0.0.0.0 \ --port 8000 \ --data-parallel-size 1 \ --tensor-parallel-size 8 \ --enable-expert-parallel \ --seed 1024 \ --quantization ascend \ --served-model-name glm \ --max-num-seqs 32 \ --max-model-len 132096 \ --max-num-batched-tokens 8192 \ --trust-remote-code \ --gpu-memory-utilization 0.9 \ --limit-mm-per-prompt '{"image": 1, "video": 0}' \ --compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY", "cudagraph_capture_sizes": [1,2,4,8,16,32,64,96,128]}' \ --speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp", "enforce_eager": true}'
- 量化模型
GLM-5.3-Flash-w8a8可部署在 1 台 A3(64GB × 16)上。
运行以下脚本以执行在线推理。
#!/bin/sh
source /usr/local/Ascend/cann-9.1.0/opp/vendors/custom_transformer/bin/set_env.bash
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_OP_EXPANSION_MODE="AIV"
export HCCL_BUFFSIZE=400
vllm serve Eco-Tech/GLM-5.3-Flash-w8a8 \
--host 0.0.0.0 \
--port 8000 \
--max-model-len 133120 \
--data-parallel-size 1 \
--tensor-parallel-size 16 \
--enable-expert-parallel \
--seed 1024 \
--served-model-name glm \
--safetensors-load-strategy prefetch \
--max-num-seqs 32 \
--max-num-batched-tokens 8192 \
--trust-remote-code \
--quantization ascend \
--limit-mm-per-prompt '{"image": 1, "video": 0}' \
--gpu-memory-utilization 0.85 \
--speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp", "enforce_eager": true}' \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY", "cudagraph_capture_sizes": [1,2,4,8,16,32,64,96,128]}' \
--api-server-count 1
关键参数说明¶
以下仅描述与本模型/场景相关的关键参数。max-model-len 和 max-num-seqs 需要根据实际使用场景进行设置。
模型特定参数:
--data-parallel-size 1:运行单个 DP rank。--tensor-parallel-size在 950DT 产品上为 8,在 Atlas 800 A3 上为 16。对于 w8a8 权重,推荐此布局以平衡内存容量和计算效率。--enable-expert-parallel:必须启用以支持 GLM-5.3-Flash 的 MoE 架构。--quantization ascend:为 w8a8 量化权重启用 Ascend 量化。--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}':仅对解码阶段启用图捕获,通过减少内核启动开销来提升解码性能。--limit-mm-per-prompt '{"image": 1, "video": 0}':对于纯文本部署,可以省略 --limit-mm-per-prompt。对于多模态部署,请根据实际请求形状配置此参数。例如,对于双图像请求,使用 --limit-mm-per-prompt '{"image":2,"video":0}';对于单视频请求,使用 --limit-mm-per-prompt '{"image":0,"video":1}'。--speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp", "enforce_eager": true}':使用 GLM-5.3-Flash 的 DeepSeek 风格 MTP 草稿头启用多 Token 预测(MTP)推测解码。num_speculative_tokens(3-5)控制每步推测的 Token 数量;由于 GLM-5.3-Flash 不支持图模式推测解码,因此需要enforce_eager: true。
5.2 多节点部署¶
- 量化模型
GLM-5.3-Flash-w8a8可部署在 2 台 Atlas 800 A2(64GB × 8)节点上,两个节点之间采用 DP2(每个节点一个 DP rank),每个节点内部采用 TP8。
分别在两个节点上运行以下脚本。
节点 0
# this obtained through ifconfig
# nic_name is the network interface name corresponding to local_ip of the current node
nic_name="xxxx"
local_ip="xx.xx.xx.1"
# The value of node0_ip must be consistent with the value of local_ip set in node0 (master node)
node0_ip="xx.xx.xx.1"
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_OP_EXPANSION_MODE=AIV
export HCCL_BUFFSIZE=1024
export VLLM_RPC_TIMEOUT=3600000
export VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS=3000
export HCCL_EXEC_TIMEOUT=3600
export HCCL_CONNECT_TIMEOUT=1200
export GLOO_SOCKET_IFNAME=$nic_name
export TP_SOCKET_IFNAME=$nic_name
export HCCL_SOCKET_IFNAME=$nic_name
export HCCL_IF_IP=$local_ip
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
vllm serve /path/to/GLM-5.3-Flash-w8a8 \
--host 0.0.0.0 \
--port 8000 \
--max-model-len 133120 \
--data-parallel-size 2 \
--data-parallel-size-local 1 \
--data-parallel-start-rank 0 \
--data-parallel-address $node0_ip \
--data-parallel-rpc-port 12321 \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--seed 1024 \
--served-model-name glm \
--safetensors-load-strategy prefetch \
--max-num-seqs 32 \
--max-num-batched-tokens 8192 \
--trust-remote-code \
--quantization ascend \
--limit-mm-per-prompt '{"image":1,"video":0}' \
--gpu-memory-utilization 0.85 \
--speculative-config '{"num_speculative_tokens":3,"method":"deepseek_mtp","enforce_eager":true}' \
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY","cudagraph_capture_sizes":[4,8,16,32,64,96,128]}' \
--api-server-count 1
节点 1
# this obtained through ifconfig
# nic_name is the network interface name corresponding to local_ip of the current node
nic_name="xxxx"
local_ip="xx.xx.xx.2"
# The value of node0_ip must be consistent with the value of local_ip set in node0 (master node)
node0_ip="xx.xx.xx.1"
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_OP_EXPANSION_MODE=AIV
export HCCL_BUFFSIZE=1024
export VLLM_RPC_TIMEOUT=3600000
export VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS=3000
export HCCL_EXEC_TIMEOUT=3600
export HCCL_CONNECT_TIMEOUT=1200
export GLOO_SOCKET_IFNAME=$nic_name
export TP_SOCKET_IFNAME=$nic_name
export HCCL_SOCKET_IFNAME=$nic_name
export HCCL_IF_IP=$local_ip
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
vllm serve /path/to/GLM-5.3-Flash-w8a8 \
--host 0.0.0.0 \
--port 8000 \
--headless \
--max-model-len 133120 \
--data-parallel-size 2 \
--data-parallel-size-local 1 \
--data-parallel-start-rank 1 \
--data-parallel-address $node0_ip \
--data-parallel-rpc-port 12321 \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--seed 1024 \
--served-model-name glm \
--safetensors-load-strategy prefetch \
--max-num-seqs 32 \
--max-num-batched-tokens 8192 \
--trust-remote-code \
--quantization ascend \
--limit-mm-per-prompt '{"image":1,"video":0}' \
--gpu-memory-utilization 0.85 \
--speculative-config '{"num_speculative_tokens":3,"method":"deepseek_mtp","enforce_eager":true}' \
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY","cudagraph_capture_sizes":[4,8,16,32,64,96,128]}'
关键参数说明¶
多节点网络与数据并行配置:
HCCL_IF_IP、GLOO_SOCKET_IFNAME、TP_SOCKET_IFNAME、HCCL_SOCKET_IFNAME:用于多节点通信的网络接口配置。将nic_name设置为网络接口名称(可通过ifconfig获取),并将local_ip设置为当前节点的 IP 地址。必须在每个节点上正确配置这些参数,才能实现多节点通信。--data-parallel-size 2 --data-parallel-size-local 1:在两个节点上运行两个 DP 秩,每个节点一个秩;每个秩在其节点内使用 TP8。--data-parallel-start-rank:当前节点的起始 DP 秩偏移。节点 0 使用0,节点 1 使用1。--data-parallel-address:数据并行主节点(节点 0)的 IP 地址。必须与主节点的local_ip一致。--data-parallel-rpc-port 12321:用于数据并行主节点通信的 RPC 端口。所有节点必须使用相同端口。--headless:表示非主节点(在节点 1 上使用)。请勿在节点 0 上使用。
6 功能验证¶
服务器启动后,您可以使用输入提示查询模型:
curl http://<node0_ip>:<port>/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "glm",
"prompt": "The future of AI is",
"max_completion_tokens": 50
}'
预期结果: 该请求的预期结果是一个 JSON 负载,其中包含模型生成的文本,格式为 text_completion。
{
"id": "cmpl-123abc",
"object": "text_completion",
"created": 1725444000,
"model": "glm",
"choices": [
{
"text": " incredibly promising, with rapid advancements in machine learning and autonomous systems.",
"index": 0,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 15,
"total_tokens": 20
}
}
7 精度评估¶
以下是两种精度评估方法。
7.1 使用 AISBench¶
-
详细信息请参阅 使用 AISBench。
-
执行完成后,您可以获取结果。
7.2 使用 Language Model Evaluation Harness¶
尚未测试。
8 性能评估¶
8.1 使用 AISBench¶
详细信息请参阅 使用 AISBench 进行性能评估。
8.2 使用 vLLM Benchmark¶
更多详细信息请参阅 vLLM 基准测试。
9 常见问题¶
- 问:如何为 GLM-5.3-Flash 启用函数调用?
答:请在 vLLM 启动命令中添加以下配置
- 问:GLM-5.3-Flash 是否支持
enable_thinking: false?
答:不支持,GLM-5.3-Flash 不支持 enable_thinking。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 vl/vllm-ascend