更新时间:2025-08-27 GMT+08:00
分享

准备推理环境

前提条件

  • 已准备Lite Server资源,具体参考资源规格要求。推荐使用“西南-贵阳一”Region上的Lite Server和昇腾Ascend Snt9b和Snt9b23资源。
  • 安装过程需要连接互联网git clone,确保容器可以访问公网。

步骤一:检查环境

  1. SSH登录机器后,检查NPU设备状态。运行如下命令,返回NPU设备信息。
    npu-smi info                    # 在每个实例节点上运行此命令可以看到NPU卡状态
    npu-smi info -l | grep Total    # 在每个实例节点上运行此命令可以看到总卡数,用来确认对应卡数已经挂载
    npu-smi info -t board -i 1 | egrep -i "software|firmware"   #查看驱动和固件版本

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

    驱动版本要求如表1。如果不符合要求请参考安装固件和驱动章节升级驱动。

    表1 HDK固件驱动

    昇腾芯片

    HDK 固件&驱动

    Snt9b23(标准版本

    24.1.RC3.7

    Snt9b(标准版本

    24.1.0.6

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

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

    yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
  3. 配置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. 上传推理代码包AscendCloud-LLM-xxx.zip和算子包AscendCloud-OPP-xxx.zip到主机中,包获取路径请参见表2
  2. 将权重文件上传到Lite Server机器中。权重文件的格式要求为Huggingface格式。开源权重文件获取地址请参见支持的模型列表

    如果使用模型训练后的权重文件进行推理,模型训练及训练后的权重文件转换操作可以参考大模型训练相关文档

  3. 权重要求放在磁盘的指定目录,并做目录大小检查,参考命令如下。
    df -h

步骤四:制作推理镜像

按照以下脚本执行解压操作,请保证环境联网,并支持git clone。
# 移动到构建目录,依次执行解压,构建生产镜像
unzip AscendCloud-*.zip -d AscendCloud && cd AscendCloud \
&& unzip AscendCloud-OPP-*.zip && unzip AscendCloud-OPP-*-torch-*-py*.zip -d ./AscendCloud-OPP \
&& unzip AscendCloud-LLM*.zip -d ./AscendCloud-LLM \
&& cp AscendCloud-LLM/llm_inference/ascend_vllm/Dockerfile . \
&& docker build -t ${image} --build-arg BASE_IMAGE=$base_image .

参数说明:

  • ${base_image}:为基础镜像名称,即{image_url},取值来源于表1
  • $image:为制作完成的镜像名称,名字可自定义,需要满足镜像命名规则 image_name:image_tag。 例如:

    pytorch_ascend:pytorch_2.5.1-cann_8.1.rc2-py_3.11-hce_2.0.2503-aarch64-snt9b23

运行完后,会生成推理所需镜像。执行docker images可以找到生成的镜像。

步骤五:启动容器

启动容器镜像前请先按照参数说明修改${}中的参数。docker启动失败会有对应的error提示,启动成功会有对应的docker id生成,并且不会报错。

docker run -itd \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
-v /etc/localtime:/etc/localtime  \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /var/log/npu/:/usr/slog \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v ${dir}:${container_model_path} \
--net=host \
--name ${container_name} \
${image_id} \
/bin/bash

参数说明:

  • --device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了8张卡davinci0~davinci7。
  • -v ${dir}:${container_model_path} 代表需要在容器中挂载宿主机的目录。
    • 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。
    • driver及npu-smi需同时挂载至容器。
    • 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
  • --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。
  • {image_id} 为docker镜像的ID,即步骤四:制作推理镜像中生成的新镜像id,在宿主机上可通过docker images查询得到。

步骤六:进入容器

  1. 进入容器。
    docker exec -it -u ma-user ${container_name} /bin/bash
  2. 评估推理资源。在容器中运行如下命令,返回NPU设备信息可用的卡数。
    npu-smi info       # 启动推理服务之前检查卡是否被占用、端口是否被占用,是否有对应运行的进程

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

    如果不符合要求请参考安装固件和驱动章节升级驱动。启动后容器默认端口是8080。

  3. 配置需要使用的NPU卡为容器中的第几张卡。例如:实际使用的是容器中第1张卡,此处填写“0”。
    export ASCEND_RT_VISIBLE_DEVICES=0

    如果启动服务需要使用多张卡,则按容器中的卡号依次编排。例如:实际使用的是容器中第1张和第2张卡,此处填写为“0,1”,以此类推。

    export ASCEND_RT_VISIBLE_DEVICES=0,1
    可以通过命令npu-smi info查询NPU卡为容器中的第几张卡。例如下图查询出两张卡,如果希望使用第一和第二张卡,则“export ASCEND_RT_VISIBLE_DEVICES=0,1”,注意编号不是填4、5。
    图1 查询结果

    启动推理服务的具体操作步骤请参见启动推理服务(大语言模型)

相关文档