mcpField
A
ascend-docker

ascend-docker

github.com/ascend-ai-coding云与 DevOps17898 次安装2 周前更新
代码仓库

关于 ascend-docker

ascend-docker 提供用于 Huawei Ascend NPU 开发环境的 Docker 容器创建脚本与参考。它支持特权、基础和完整三种模式,可自动检测设备或指定设备映射。

主要功能

  1. 01三种容器配置模式
  2. 02自动检测 NPU 设备
  3. 03按设备列表或范围选择
  4. 04可选性能分析、日志与转储支持
  5. 05挂载 Ascend 设备和驱动

适用场景

  1. 01使用检测到的 NPU 启动容器
  2. 02将容器限制为指定 NPU
  3. 03为推理或性能分析选择模式
  4. 04搭建 Ascend 开发容器

安装

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

$npx skills add https://github.com/ascend-ai-coding/awesome-ascend-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