跳转至

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

  1. 详细信息请参阅 使用 AISBench。

  2. 执行完成后,您可以获取结果。

7.2 使用 Language Model Evaluation Harness

尚未测试。

8 性能评估

8.1 使用 AISBench

详细信息请参阅 使用 AISBench 进行性能评估。

8.2 使用 vLLM Benchmark

更多详细信息请参阅 vLLM 基准测试。

9 常见问题

  • 问:如何为 GLM-5.3-Flash 启用函数调用?

答:请在 vLLM 启动命令中添加以下配置

--tool-call-parser glm47 \
--reasoning-parser glm45 \
--enable-auto-tool-choice \
  • 问:GLM-5.3-Flash 是否支持 enable_thinking: false?

答:不支持,GLM-5.3-Flash 不支持 enable_thinking。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 vl/vllm-ascend