文档首页/ AI开发平台ModelArts/ 最佳实践/ GLM-5模型推理部署/ GLM-5模型基于ModelArts轻量算力节点适配NPU推理指导
更新时间:2026-02-13 GMT+08:00
分享

GLM-5模型基于ModelArts轻量算力节点适配NPU推理指导

方案概览

本文主要介绍如何在ModelArts的轻量算力节点环境中,部署GLM-5模型并使用NPU卡Snt9b23进行推理。

GLM-5是智谱AI发布的新一代开源旗舰大模型,主打复杂系统工程与长程智能体任务,在编程与Agent能力上获得开源SOTA表现。

获取镜像

表1 获取镜像

分类

名称

获取路径

基础镜像

Snt9b23:西南-贵阳一:

swr.cn-southwest-2.myhuaweicloud.com/com-huaweicloud-mastudio/vllm-ascend:ascend-vllm_glm5-a3-v20.20260213001022.127106045

从SWR拉取。

约束限制

  • 确保容器可以访问公网。

步骤一:准备环境

  1. 请参考轻量算力节点资源开通,购买轻量算力节点资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。

    当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据

  2. SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
    npu-smi info                    # 在每个实例节点上运行此命令可以看到NPU卡状态
    npu-smi info -l | grep Total    # 在每个实例节点上运行此命令可以看到总卡数

    如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。

  3. 检查docker是否安装。
    docker -v   #检查docker是否安装

    如尚未安装,运行以下命令安装docker。

    yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
  4. 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。
    sysctl -p | grep net.ipv4.ip_forward
    如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。
    sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf
    sysctl -p | grep net.ipv4.ip_forward

步骤二:获取基础镜像

建议使用官方提供的镜像部署服务。镜像地址{image_url}参见表1

docker pull {image_url}

步骤三:启动容器镜像

  1. Snt9b23启动容器镜像。启动前请先按照参数说明修改${}中的参数。
    export work_dir="自定义挂载的工作目录"
    export container_work_dir="自定义挂载到容器内的工作目录"
    export container_name="自定义容器名称"
    export image_name="镜像名称或ID"
    // 启动一个容器去运行镜像 
    docker run -itd --shm-size=500g \
        --net=host \
        --privileged=true \
        -u root \
        -w /home/models \
        --device=/dev/davinci_manager \
        --device=/dev/hisi_hdc \
        --device=/dev/devmm_svm \
        --entrypoint=bash \
        -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
        -v /usr/local/dcmi:/usr/local/dcmi \
        -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
        -v /etc/ascend_install.info:/etc/ascend_install.info \
        -v /usr/local/sbin:/usr/local/sbin \
        -v /etc/hccn.conf:/etc/hccn.conf \
        -v /usr/bin/hccn_tool:/usr/bin/hccn_tool \
        -v ${work_dir}:${container_work_dir} \
        --name ${container_name} \
        ${image_name}

    参数说明:

    • -v ${work_dir}:${container_work_dir}:代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下可存放项目所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。

      driver及npu-smi需同时挂载至容器。

    • --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。
    • ${image_name}:容器镜像的名称,获取地址参见表1
  2. Snt9b23需要使用root权限进入容器中。
    docker exec -itu root ${container_name} bash

步骤四:下载模型权重

下载模型权重

如下图所示,下载GLM-5-w4a8权重下所有文件。在步骤三的${work_dir}目录下创建GLM5-w4a8目录,并下载权重到GLM5-w4a8目录,容器启动时使用${container_work_dir}目录加载权重。
图1 下载GLM-5-w4a8模型权重

步骤五:启动GLM5推理服务

调用推理服务请在服务器端通过命令行调用。
# 挂载到的容器中的工作目录,,具体配置值以挂载到容器的工作目录为准
container_work_dir="/xxx/"

# 环境变量配置
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
export VLLM_LOGGING_CONFIG_PATH=//home/ma-user/AscendCloud/logging_config.json
export VALIDATORS_CONFIG_PATH=/home/ma-user/AscendCloud/validator_without_gd.json

# 启动推理服务
vllm serve ${container_work_dir}/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 131072 \
--max-num-batched-tokens 4096 \
--trust-remote-code \
--gpu-memory-utilization 0.95 \
--quantization ascend \
--enable-chunked-prefill \
--enable-prefix-caching \
--tool-call-parser glm47 \
--reasoning-parser glm45 \
--async-scheduling \
--enable-auto-tool-choice \
--middleware vllm.entrypoints.middleware.param_check.ValidateSamplingParams \
--additional-config '{"multistream_overlap_shared_expert":true}' \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}' \
--speculative-config '{"num_speculative_tokens": 3, "method": "deepseek_mtp"}'

参数解释如下:

  • model_path:模型权重路径,当前设置为 ${container_work_dir}/GLM5-w4a8
  • served-model-name:模型名称
  • max-model-len:模型支持的最大长度

步骤六:查看GLM5推理结果

通过以下命令可以请求服务推理

curl http://127.0.0.1:8077/v1/chat/completions -H "Content-Type: application/json" -d '{"messages": [{"role": "user", "content": "我想去洗车,洗车店距离我家50米,你说我应该开车过去还是走过去?"}], "model": "glm-5"}' | jq
图2 查看推理结果

相关文档