拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GLM-5-w4a8 量化模型在 Atlas 800T A3 上的 vLLM-ascend 部署与推理实战指南

GLM-5-w4a8 量化模型在 Atlas 800T A3 上的 vLLM-ascend 部署与推理实战指南

【免费下载链接】GLM-5-w4a8

GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发

项目地址:https://ai.gitcode.com/atomgit-ascend/GLM-5-w4a8
点击查看免费下载

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_typeglm_moe_dsa模型类型(MoE + DSA 索引结构)
architecturesGlmMoeDsaForCausalLM架构类名
num_hidden_layers78隐藏层数
hidden_size6144隐藏维度
n_routed_experts256路由专家数量
n_shared_experts1共享专家数量
num_experts_per_tok8每个 token 激活的专家数
moe_intermediate_size2048MoE 前馈中间维度
first_k_dense_replace3前 3 层为稠密层
topk_method / scoring_funcnoaux_tc / sigmoid专家选择与打分方式
routed_scaling_factor2.5路由缩放因子
num_attention_heads / head_dim64 / 64注意力头数及每头维度
qk_head_dim / qk_nope_head_dim / qk_rope_head_dim256 / 192 / 64注意力头维度拆分
q_lora_rank / kv_lora_rank2048 / 512MLA 风格低秩注意力参数
index_head_dim / index_n_heads / index_topk128 / 32 / 2048索引器(indexer)结构参数
max_position_embeddings202752最大序列长度
vocab_size154880词表大小
dtypebfloat16原始权重精度
num_nextn_predict_layers1next-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/--port0.0.0.0 / 8077服务监听地址与端口
--data-parallel-size1数据并行度,单节点为 1
--tensor-parallel-size16张量并行度,对应 16 个 davinci 设备
--enable-expert-parallel-启用专家并行,将 MoE 专家切分到不同设备
--max-num-seqs8最大并发序列数(batch 上限)
--max-model-len66600最大模型上下文长度
--max-num-batched-tokens4096单批次最大 token 数
--gpu-memory-utilization0.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-size22全局数据并行度(两个节点)
--data-parallel-size-local11本节点内的数据并行度(每节点一份模型副本)
--data-parallel-start-rank缺省(0)1从节点 DP rank 从 1 开始
--data-parallel-addressnode0_ipnode0_ip两端都必须指向主节点 IP
--data-parallel-rpc-port1289012890数据并行 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

  1. 详细步骤请参阅 vLLM-Ascend 官方文档 developer_guide 的「使用 AISBench 进行精度评估」章节;
  2. 按文档完成配置与执行后即可获得评估结果。

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推理优化,高效平衡性能与精度,助力智能应用开发

项目地址:https://ai.gitcode.com/atomgit-ascend/GLM-5-w4a8
点击查看免费下载

相关推荐

上一篇:Kazumi追番神器:打造你的个性化动漫资源库完全指南
下一篇:终极XCOM 2模组管理器:AML启动器完整使用指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表