SuperAPI AI 工具集

ascend-docker

部署与运维

查看项目

更新于 10-15 13:06

技能介绍

Ascend Docker 用于创建面向华为昇腾(Ascend)NPU 开发的 Docker 容器,帮助开发者在容器中正确映射 NPU 设备与挂载相关目录。

用途 该技能面向昇腾 NPU 开发环境的搭建,通过脚本生成配置好设备映射和卷挂载的容器,便于在容器内进行昇腾相关的开发、推理与调试工作。

主要能力

  • 自动检测设备:脚本会从 /dev/davinci* 自动检测可用的 NPU 设备。
  • 设备选择:可通过 --device-list 指定设备,支持单个设备、范围(如 "0-3")以及范围与单个设备组合(如 "0-3,7,10-11")。
  • 三种容器模式:特权模式(默认)、基础模式、完整模式,分别对应不同的权限、设备访问与日志/性能分析支持。
  • 设备与卷映射:映射 NPU 设备管理器、设备内存管理、HDC 通信设备及单个 NPU 设备,并挂载昇腾驱动库、NPU 管理工具、附加组件、日志、profiling、dump、时区与用户工作目录等。

使用方式 快速开始命令:

特权模式(默认,自动检测所有设备)

./scripts/run-ascend-container.sh <image> <container_name>

基础模式并指定设备

./scripts/run-ascend-container.sh <image> <container_name> --mode basic

完整模式并选择设备

./scripts/run-ascend-container.sh <image> <container_name> --mode full --device-list "0,1,2,3"

设备选择示例:

使用所有检测到的设备(默认)

./scripts/run-ascend-container.sh <image> <container_name>

使用指定设备

./scripts/run-ascend-container.sh <image> <container_name> --device-list "0,1,2,3"

使用设备范围

./scripts/run-ascend-container.sh <image> <container_name> --device-list "0-3"

组合范围与单个设备

./scripts/run-ascend-container.sh <image> <container_name> --device-list "0-3,7,10-11"

查看可用设备: ls /dev/davinci* | grep -oE 'davinci[0-9]+$'

容器模式

  1. 特权模式(默认):权限最大,适合无特定要求的场景。 docker run -itd --privileged --name=<CONTAINER_NAME> --ipc=host --net=host
    --device=/dev/davinci_manager
    --device=/dev/devmm_svm
    --device=/dev/hisi_hdc
    -v /usr/local/sbin:/usr/local/sbin:ro
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro
    -v /home:/home
    -w /home
    <IMAGE>
    /bin/bash

  2. 基础模式:指定设备映射并使用 host 网络,适用于推理负载。 docker run -itd --net=host
    --name=<CONTAINER_NAME>
    --device=/dev/davinci_manager
    --device=/dev/hisi_hdc
    --device=/dev/devmm_svm
    --device=/dev/davinci0
    --device=/dev/davinci1
    ...
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro
    -v /usr/local/sbin:/usr/local/sbin:ro
    -v /etc/localtime:/etc/localtime
    -v /home:/home
    <IMAGE>
    /bin/bash

  3. 完整模式:支持 profiling、日志、dump 与 add-ons。 docker run -itd --ipc=host
    --name=<CONTAINER_NAME>
    --device=/dev/davinci_manager
    --device=/dev/devmm_svm
    --device=/dev/hisi_hdc
    --device=/dev/davinci0
    --device=/dev/davinci1
    ...
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver
    -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/
    -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi
    -v /usr/local/sbin/:/usr/local/sbin/
    -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf
    -v /var/log/npu/slog/:/var/log/npu/slog
    -v /var/log/npu/profiling/:/var/log/npu/profiling
    -v /var/log/npu/dump/:/var/log/npu/dump
    -v /var/log/npu/:/usr/slog
    -v /etc/localtime:/etc/localtime
    -v /home:/home
    <IMAGE>
    /bin/bash

模式对比

  • 网络模式:特权 host,基础 host,完整 未提供。
  • IPC 模式:特权 host,基础 未提供,完整 host。
  • 设备访问:特权 全部(通过 privileged),基础 选定设备,完整 选定设备。
  • Profiling 支持:特权 支持,基础 不支持,完整 支持。
  • Dump 支持:特权 支持,基础 不支持,完整 支持。
  • 日志(slog):特权 支持,基础 不支持,完整 支持。
  • 安全性:特权 最低,基础 较高,完整 较高。

设备参数

  • /dev/davinci_manager:NPU 设备管理器。
  • /dev/devmm_svm:设备内存管理。
  • /dev/hisi_hdc:HDC 通信设备。
  • /dev/davinci<N>:单个 NPU 设备(0、1、2……)。

卷参数

  • /usr/local/Ascend/driver:昇腾驱动库。
  • /usr/local/sbin:NPU 管理工具(npu-smi)。
  • /usr/local/Ascend/add-ons:昇腾附加组件。
  • /var/log/npu/slog:系统日志。
  • /var/log/npu/profiling:Profiling 数据。
  • /var/log/npu/dump:Dump 数据。
  • /etc/localtime:时区同步。
  • /home:用户工作目录。

常用镜像 ascendhub.huawei.com/public-ascendhub/ascend-pytorch:24.0.RC1 ascendhub.huawei.com/public-ascendhub/ascend-mindspore:24.0.RC1 ascendhub.huawei.com/public-ascendhub/ascend-toolkit:24.0.RC1

容器管理 docker exec -it <container_name> bash docker stop <container_name> docker start <container_name> docker rm -f <container_name>

安装后配置 对于自建镜像,需配置环境变量: echo 'source /usr/local/Ascend/ascend-toolkit/set_env.sh' >> ~/.bashrc source ~/.bashrc

适用场景

  • 搭建昇腾 NPU 开发环境。
  • 在容器中运行推理负载(基础模式)。
  • 需要 profiling、dump、slog 日志或 add-ons 支持的场景(完整模式)。
  • 需要最大权限、无特定要求的场景(特权模式)。

限制

  • 特权模式安全性最低。
  • 基础模式不支持 profiling、dump 与 slog 日志。
  • 完整模式的网络模式在资料中未提供。
  • 具体镜像版本、收费与价格等信息暂未提供。