【免费下载链接】GLM-5-w4a8
GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发
GLM-5 采用混合专家(MoE)架构,面向复杂系统工程与长周期智能体任务设计。本文以 Atomgit-Ascend / GLM-5-w4a8 仓库的官方验证文档(README.md)为核心骨架,完整还原其在昇腾 Atlas 800T A3 上从环境准备、单节点/多节点部署到精度与性能评估的完整流程。读完本文,你将掌握 w4a8 量化 GLM-5 的vllm serve启动参数含义、数据并行(DP)+ 张量并行(TP)的多节点配置方法,以及基于 AISBench 的精度与性能评估入口,并能够结合仓库中的模型配置理解这些部署参数背后的架构依据。
1. 模型与仓库概览
1.1 基本信息
官方验证文档给出了以下关键信息:
| 项目 | 信息 |
|---|---|
| 原始模型名 | GLM-5 |
| 测试机型 | Atlas 800T A3 1 台 |
| 版本 | vllm-ascend:GLM5 |
| 链接 | quay.m.daocloud.io/ascend/vllm-ascend:GLM5 |
GLM-5 采用混合专家(MoE)架构,主要面向复杂系统工程和长周期智能体任务。本文档展示该模型的主要验证步骤,包括支持特性、特性配置、环境准备、单节点与多节点部署、精度评估及性能评估。
1.2 当前仓库构成
当前仓库即GLM-5-w4a8(无 MTP 的 w4a8 量化版本)的权重仓库,主要包含:
- 权重文件:99 个 safetensors 分片
quant_model_weights-00001-of-00099.safetensors至quant_model_weights-00099-of-00099.safetensors,以及分片索引 quant_model_weights.safetensors.index.json; - 模型配置:config.json(模型结构)、configuration.json(框架与任务类型为 Pytorch / text-generation);
- 量化说明:quant_model_description.json;
- 分词器:tokenizer.json 与 tokenizer_config.json;
- 对话模板:chat_template.jinja;
- 生成配置:generation_config.json。
1.3 从 config.json 理解模型结构
部署参数的选择与模型结构强相关。从 config.json 可以提取出 GLM-5 的 MoE 与注意力架构关键参数:
| 参数 | 值 | 含义 |
|---|---|---|
| model_type | glm_moe_dsa | 模型类型(MoE + DSA 索引结构) |
| architectures | GlmMoeDsaForCausalLM | 架构类名 |
| num_hidden_layers | 78 | 隐藏层数 |
| hidden_size | 6144 | 隐藏维度 |
| n_routed_experts | 256 | 路由专家数量 |
| n_shared_experts | 1 | 共享专家数量 |
| num_experts_per_tok | 8 | 每个 token 激活的专家数 |
| moe_intermediate_size | 2048 | MoE 前馈中间维度 |
| first_k_dense_replace | 3 | 前 3 层为稠密层 |
| topk_method / scoring_func | noaux_tc / sigmoid | 专家选择与打分方式 |
| routed_scaling_factor | 2.5 | 路由缩放因子 |
| num_attention_heads / head_dim | 64 / 64 | 注意力头数及每头维度 |
| qk_head_dim / qk_nope_head_dim / qk_rope_head_dim | 256 / 192 / 64 | 注意力头维度拆分 |
| q_lora_rank / kv_lora_rank | 2048 / 512 | MLA 风格低秩注意力参数 |
| index_head_dim / index_n_heads / index_topk | 128 / 32 / 2048 | 索引器(indexer)结构参数 |
| max_position_embeddings | 202752 | 最大序列长度 |
| vocab_size | 154880 | 词表大小 |
| dtype | bfloat16 | 原始权重精度 |
| num_nextn_predict_layers | 1 | next-token 预测(MTP)层数 |
几点值得注意:
- MoE 规模巨大:78 层中几乎每层都启用 MoE(
moe_layer_freq: 1),路由专家达 256 个、每 token 激活 8 个,这使得模型参数量远超稠密模型,也是单机必须依赖 w4a8 量化才能以 16 卡 TP 部署的直接原因。 - 注意力结构复杂:
q_lora_rank、kv_lora_rank以及qk_head_dim的三段拆分表明其采用 MLA(Multi-head Latent Attention)风格设计,KV 缓存占用相对可控。 - 与投机解码呼应:
num_nextn_predict_layers: 1表明基础模型保留了 next-token 预测(MTP)能力,与部署命令中的--speculative-config '{"method": "deepseek_mtp"}'配置相互印证。
此外,tokenizer_config.json 显示分词器采用[gMASK]<sop>开头、<|system|>/<|user|>/<|assistant|>/<|observation|>分段,并支持图片、视频、音频等多模态标记;chat_template.jinja 内置了 XML 格式的<tool_call>工具调用模板与<think>思维链输出逻辑,契合长周期智能体任务的定位。generation_config.json 的默认采样参数为 temperature=1.0、top_p=0.95。
2. 支持特性
GLM-5 在 vLLM-ascend 上的支持情况如下:
- 支持特性矩阵:可参考 vLLM-Ascend 官方文档 support_matrix 页面(supported_models)查看模型支持的特性矩阵;
- 特性配置说明:可参考 vLLM-Ascend 官方文档 support_matrix 页面(supported_features)获取特性配置说明。
vLLM 与 vLLM-ascend 仅在主分支支持 GLM-5,这一点在后续安装环节需要特别留意。
3. 环境准备
3.1 模型权重
部署前需要准备以下权重之一:
GLM-5(BF16 版本);GLM-5-w4a8(无 mtp 的量化版本,即当前仓库);- 如需自行量化,可使用 msmodelslim 工具对模型进行基础量化。
建议将模型权重下载至多节点共享目录,例如/root/.cache/,以保证各节点访问同一份权重。
3.2 基于 Docker 镜像安装
vLLM 与 vLLM-ascend 仅在主分支支持 GLM-5,推荐直接使用官方 Docker 镜像,并在容器内升级 vLLM 与 vLLM-ascend 后推理。启动容器的完整命令如下:
# 根据您的设备更新 --device(Atlas A3:/dev/davinci[0-15])。 # 根据您的环境更新 vllm-ascend 镜像。 # 注意:您需要提前将权重下载至 /root/.cache。 # 更新 vllm-ascend 镜像,glm5-a3 可替换为:glm5;glm5-openeuler;glm5-a3-openeuler export IMAGE=m.daocloud.io/quay.io/ascend/vllm-ascend:glm5-a3 export NAME=vllm-ascend # 使用定义的变量运行容器 # 注意:若使用 Docker 桥接网络,请提前开放可供多节点通信的端口 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要点说明:
- Atlas A3 机型共暴露 16 个计算设备(
/dev/davinci0~/dev/davinci15),同时还需挂载davinci_manager、devmm_svm、hisi_hdc等管理/调试设备; --net=host使用宿主机网络,便于多节点部署时直接复用节点 IP 通信;若改用 Docker 桥接网络,需提前开放可供多节点通信的端口;- 镜像标签
glm5-a3可替换为glm5、glm5-openeuler、glm5-a3-openeuler等变体,按自身环境选择; - 通过
-v /root/.cache:/root/.cache将权重目录挂载进容器,与前述共享目录建议一致。
3.3 从源码构建
若不想使用上述 Docker 镜像,也可从源码完整构建。vLLM-ascend 的源码安装可参考官方安装指南。要对GLM-5进行推理,需要将 vllm、vllm-ascend、transformers 全部升级至主分支(含指定 commit):
# 升级 vllm git clone https://github.com/vllm-project/vllm.git cd vllm git checkout 978a37c82387ce4a40aaadddcdbaf4a06fc4d590 VLLM_TARGET_DEVICE=empty pip install -v . # 升级 vllm-ascend git clone https://github.com/vllm-project/vllm-ascend.git cd vllm-ascend git checkout ff3a50d011dcbea08f87ebed69ff1bf156dbb01e git submodule update --init --recursive pip install -v . # 重新安装 transformers pip install git+https://github.com/huggingface/transformers.git需要特别说明:vLLM-ascend 安装时git submodule update --init --recursive是必做步骤;VLLM_TARGET_DEVICE=empty用于在无 GPU 设备的环境下仅编译 Python 侧组件。如需部署多节点环境,需要在每个节点上分别完成上述环境配置。
4. 单节点部署(A3 系列)
4.1 适用说明
- A2 系列:尚未测试;
- A3 系列:量化模型
glm-5-w4a8可部署于**单台 Atlas 800 A3(128G × 8)**上。
4.2 启动脚本
在容器内执行以下脚本进行在线推理:
export HCCL_OP_EXPANSION_MODE="AIV" export OMP_PROC_BIND=false export OMP_NUM_THREADS=10 export VLLM_USE_V1=1 export HCCL_BUFFSIZE=200 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True export VLLM_ASCEND_BALANCE_SCHEDULING=1 vllm serve /root/.cache/modelscope/hub/models/vllm-ascend/GLM5-w4a8 \ --host 0.0.0.0 \ --port 8077 \ --data-parallel-size 1 \ --tensor-parallel-size 16 \ --enable-expert-parallel \ --seed 1024 \ --served-model-name glm-5 \ --max-num-seqs 8 \ --max-model-len 66600 \ --max-num-batched-tokens 4096 \ --trust-remote-code \ --gpu-memory-utilization 0.95 \ --quantization ascend \ --enable-chunked-prefill \ --enable-prefix-caching \ --async-scheduling \ --additional-config '{"multistream_overlap_shared_expert":true}' \ --compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}' \ --speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp"}'4.3 关键参数说明
| 参数 | 值 | 说明 |
|---|---|---|
--host/--port | 0.0.0.0 / 8077 | 服务监听地址与端口 |
--data-parallel-size | 1 | 数据并行度,单节点为 1 |
--tensor-parallel-size | 16 | 张量并行度,对应 16 个 davinci 设备 |
--enable-expert-parallel | - | 启用专家并行,将 MoE 专家切分到不同设备 |
--max-num-seqs | 8 | 最大并发序列数(batch 上限) |
--max-model-len | 66600 | 最大模型上下文长度 |
--max-num-batched-tokens | 4096 | 单批次最大 token 数 |
--gpu-memory-utilization | 0.95 | 单卡显存利用率上限 |
--quantization ascend | - | 使用昇腾原生 w4a8 量化推理 |
--enable-chunked-prefill | - | 启用分块预填充,降低首 token 延迟与显存峰值 |
--enable-prefix-caching | - | 启用前缀缓存,复用公共前缀 KV |
--async-scheduling | - | 异步调度,非阻塞任务调度以提升并发与吞吐 |
--additional-config | {"multistream_overlap_shared_expert":true} | 多流叠加共享专家,提升解码并行度 |
--compilation-config | {"cudagraph_mode": "FULL_DECODE_ONLY"} | 仅对解码阶段启用图模式编译 |
--speculative-config | {"num_speculative_tokens": 3, "method": "deepseek_mtp"} | 使用 MTP 投机解码,一次预测 3 个 token |
环境变量说明:
HCCL_OP_EXPANSION_MODE="AIV":设置 HCCL 算子扩展模式为 AIV,适配昇腾集合通信实现;VLLM_USE_V1=1:显式启用 vLLM V1 执行器(GLM-5 仅主分支支持,需 V1 架构);HCCL_BUFFSIZE=200:HCCL 通信缓冲大小(MB),影响大规模 TP/EP 通信效率;PYTORCH_NPU_ALLOC_CONF=expandable_segments:True:启用可扩展内存段分配,降低显存碎片;VLLM_ASCEND_BALANCE_SCHEDULING=1:开启 vLLM-ascend 的负载均衡调度;OMP_PROC_BIND=false、OMP_NUM_THREADS=10:控制 CPU 线程绑定与线程数,避免与 NPU 通信争抢。
4.4 注意事项
- 对于单节点部署,低延迟场景下推荐使用
dp1tp16并关闭专家并行(即数据并行度 1、张量并行度 16); --async-scheduling(异步调度)是一种优化推理效率的技术,允许非阻塞的任务调度,以提高并发性和吞吐量,尤其在处理大规模模型时效果明显。
5. 多节点部署(A3 系列)
5.1 适用说明
- A2 系列:尚未测试;
- A3 系列:
glm-5-bf16至少需要 2 台 Atlas 800 A3(128G × 8)——BF16 版本因权重显存占用更大,单台 8 卡(16 设备)无法装下,必须借助数据并行跨节点扩展。
多节点方案采用「节点内 TP=16 + 节点间 DP=2」的组合:每个节点独立承担完整的张量并行切分,两个节点通过数据并行将不同的请求批次分发到两份模型副本上,从而在单机显存不足以承载完整模型时依然可服务。注意 BF16 版本需要在两个节点上分别执行启动脚本,且都要先按 3.2/3.3 完成环境配置。
5.2 节点 0(主节点)
# 通过 ifconfig 获取本机信息 # nic_name 为当前节点 local_ip 对应的网卡接口名称 nic_name="xxx" local_ip="xxx" # node0_ip 的值必须与节点0(主节点)中设置的 local_ip 一致 node0_ip="xxxx" export HCCL_OP_EXPANSION_MODE="AIV" export HCCL_IF_IP=$local_ip export GLOO_SOCKET_IFNAME=$nic_name export TP_SOCKET_IFNAME=$nic_name export HCCL_SOCKET_IFNAME=$nic_name export OMP_PROC_BIND=false export OMP_NUM_THREADS=10 export VLLM_USE_V1=1 export HCCL_BUFFSIZE=200 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True vllm serve /root/.cache/modelscope/hub/models/vllm-ascend/GLM5-bf16 \ --host 0.0.0.0 \ --port 8077 \ --data-parallel-size 2 \ --data-parallel-size-local 1 \ --data-parallel-address $node0_ip \ --data-parallel-rpc-port 12890 \ --tensor-parallel-size 16 \ --seed 1024 \ --served-model-name glm-5 \ --enable-expert-parallel \ --max-num-seqs 16 \ --max-model-len 8192 \ --max-num-batched-tokens 4096 \ --trust-remote-code \ --no-enable-prefix-caching \ --gpu-memory-utilization 0.95 \ --compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}' \ --speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp"}'5.3 节点 1(从节点)
# 通过 ifconfig 获取本机信息 # nic_name 为当前节点 local_ip 对应的网卡接口名称 nic_name="xxx" local_ip="xxx" # node0_ip 的值必须与节点0(主节点)中设置的 local_ip 一致 node0_ip="xxxx" export HCCL_OP_EXPANSION_MODE="AIV" export HCCL_IF_IP=$local_ip export GLOO_SOCKET_IFNAME=$nic_name export TP_SOCKET_IFNAME=$nic_name export HCCL_SOCKET_IFNAME=$nic_name export OMP_PROC_BIND=false export OMP_NUM_THREADS=10 export VLLM_USE_V1=1 export HCCL_BUFFSIZE=200 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True vllm serve /root/.cache/modelscope/hub/models/vllm-ascend/GLM5-bf16 \ --host 0.0.0.0 \ --port 8077 \ --headless \ --data-parallel-size 2 \ --data-parallel-size-local 1 \ --data-parallel-start-rank 1 \ --data-parallel-address $node0_ip \ --data-parallel-rpc-port 12890 \ --tensor-parallel-size 16 \ --seed 1024 \ --served-model-name glm-5 \ --enable-expert-parallel \ --max-num-seqs 16 \ --max-model-len 8192 \ --max-num-batched-tokens 4096 \ --trust-remote-code \ --no-enable-prefix-caching \ --gpu-memory-utilization 0.95 \ --compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}' \ --speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp"}'5.4 两节点差异与网络配置要点
| 配置项 | 节点 0 | 节点 1 | 说明 |
|---|---|---|---|
--headless | 无 | 有 | 从节点不对外提供 HTTP 服务,仅参与数据并行 |
--data-parallel-size | 2 | 2 | 全局数据并行度(两个节点) |
--data-parallel-size-local | 1 | 1 | 本节点内的数据并行度(每节点一份模型副本) |
--data-parallel-start-rank | 缺省(0) | 1 | 从节点 DP rank 从 1 开始 |
--data-parallel-address | node0_ip | node0_ip | 两端都必须指向主节点 IP |
--data-parallel-rpc-port | 12890 | 12890 | 数据并行 RPC 通信端口,两端一致 |
网络相关环境变量:
HCCL_IF_IP:本机用于 HCCL 集合通信的 IP(通过 ifconfig 确认,须与网卡一致);GLOO_SOCKET_IFNAME/TP_SOCKET_IFNAME/HCCL_SOCKET_IFNAME:GLOO、张量并行、HCCL 各自使用的网卡接口名,统一指向local_ip对应的网卡;node0_ip的值必须与节点 0(主节点)中设置的local_ip一致,这是两节点正确组网的前提。
与单节点配置相比,多节点场景还做了两处调整:--max-num-seqs提升到 16(双副本合计并发能力更大),并改用--no-enable-prefix-caching关闭前缀缓存(跨 DP 副本的前缀缓存一致性成本更高)。
6. 精度评估
精度评估提供两种方法,文档中 AISBench 途径已有完整步骤,另一途径标注为尚未测试。
6.1 使用 AISBench
- 详细步骤请参阅 vLLM-Ascend 官方文档 developer_guide 的「使用 AISBench 进行精度评估」章节;
- 按文档完成配置与执行后即可获得评估结果。
6.2 使用 Language Model Evaluation Harness
尚未测试。
7. 性能评估
7.1 使用 AISBench
详细步骤请参阅 vLLM-Ascend 官方文档 developer_guide 的「使用 AISBench 进行性能评估」章节(execute performance evaluation 一节),可得到吞吐、首 token 延迟等核心性能指标。
7.2 使用 vLLM 基准测试工具
更多信息可参考 vLLM 官方文档的 benchmark 章节,使用benchmark_throughput.py等脚本在已部署的 GLM-5 服务上做自定义负载压测。
8. 部署要点小结
- 单节点跑量化版:
glm-5-w4a8可在单台 Atlas 800 A3(128G × 8,16 设备)上以dp1tp16部署,w4a8 量化(--quantization ascend)是显存达标的关键; - 多节点跑 BF16 版:
glm-5-bf16至少需要 2 台 Atlas 800 A3,采用节点内 TP=16、节点间 DP=2 的架构,从节点必须带--headless与--data-parallel-start-rank 1; - 主分支强依赖:vLLM、vLLM-ascend、transformers 均需升级到支持 GLM-5 的主分支(含 README 中指定的 commit),并开启
VLLM_USE_V1=1; - 统一配置口径:多节点部署中
node0_ip、RPC 端口(12890)、网卡名(nic_name)三处必须在两端严格一致; - 评估入口:精度与性能评估均以 AISBench 为当前已验证的主路径,评估细节以 vLLM-Ascend 官方文档为准;
- 当前仓库的定位:本仓库即
glm-5-w4a8量化权重的载体(99 个 safetensors 分片 + config.json + tokenizer_config.json + chat_template.jinja),下载并放入共享目录/root/.cache/modelscope/hub/models/vllm-ascend/GLM5-w4a8后即可按第 4 节的命令直接启动服务。
【免费下载链接】GLM-5-w4a8
GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发
相关推荐
LMDeploy 昇腾(Ascend)快速上手:在 Atlas 800T A2/A3 与 300I Duo 上运行 LLM/VLM 推理与部署
LMDeploy 昇腾(Ascend)快速上手:在 Atlas 800T A2/A3 与 300I Duo 上运行 LLM/VLM 推理与部署 本篇技术指南聚焦
人工智能大模型模型推理服务推理引擎本地部署模型量化CANN cann-recipes-infer 实战:Qwen2.5/Qwen3 Dense 模型在 Atlas A2/A3 NPU 上的 BF16 与 W8A8 推理部署
CANN cann recipes infer 实战:Qwen2.5/Qwen3 Dense 模型在 Atlas A2/A3 NPU 上的 BF16 与 W8A
示例工程人工智能大模型模型推理服务模型优化模型量化CANNAscendcann-recipes-infer 实战:GLM-5.2 在 Atlas A3 上的推理优化与共享 Indexer KV Cache Offload 指南
cann recipes infer 实战:GLM 5.2 在 Atlas A3 上的推理优化与共享 Indexer KV Cache Offload 指南 本
示例工程人工智能大模型模型推理服务模型优化模型量化CANNAscend
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考