mcpField
A
ascend-docker

ascend-docker

github.com/ascend云与 DevOps52156 次安装25 周前更新
代码仓库

关于 ascend-docker

用于创建 Huawei Ascend NPU 开发环境 Docker 容器的脚本工具,提供特权、基础和完整模式,可自动检测或指定设备,并按模式提供不同的性能分析与日志支持。

主要功能

  1. 01特权、基础和完整模式
  2. 02自动检测 NPU 设备
  3. 03指定要映射的设备
  4. 04完整模式支持性能分析与转储
  5. 05挂载 Ascend 驱动和工作区

适用场景

  1. 01为 Ascend NPU 推理准备容器
  2. 02为开发容器选择 NPU 设备
  3. 03启用性能分析、日志和转储支持

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ascend/agent-skills --skill ascend-docker

安装后在 Claude Code 中输入/ascend-docker确认已加载。

附带文件scripts/run-ascend-container.sh

详细介绍

昇腾 Docker 容器

创建配置为用于华为昇腾 NPU 开发的 Docker 容器。

快速开始

# Privileged mode (default, auto-detect all devices)
./scripts/run-ascend-container.sh <image> <container_name>

# Basic mode with specific devices
./scripts/run-ascend-container.sh <image> <container_name> --mode basic

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

设备选择

脚本会从 /dev/davinci* 自动检测可用的 NPU 设备。使用 --device-list 选择特定设备:

# Use all detected devices (default)
./scripts/run-ascend-container.sh <image> <container_name>

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

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

# Combine ranges and individual devices
./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. 完整模式

支持性能分析、日志、转储和附加组件。

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

模式比较

特性特权模式基础模式完整模式
网络模式hosthost-
IPC 模式host-host
设备访问全部(通过 privileged)所选设备所选设备
性能分析支持✓✗✓
转储支持✓✗✓
日志(slog)✓✗✓
安全性最低较高较高

设备参数

设备用途
/dev/davinci_managerNPU 设备管理器
/dev/devmm_svm设备内存管理
/dev/hisi_hdcHDC 通信设备
/dev/davinci<N>单个 NPU 设备(0、1、2……)

卷参数

卷用途
/usr/local/Ascend/driver昇腾驱动程序库
/usr/local/sbinNPU 管理工具(npu-smi)
/usr/local/Ascend/add-ons其他昇腾组件
/var/log/npu/slog系统日志
/var/log/npu/profiling性能分析数据
/var/log/npu/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

官方参考资料

评论

支持 Markdown