mcpField
A
ascend-docker

ascend-docker

github.com/ascend-ai-codingCloud & DevOps17898 installsUpdated 2w ago
Repository

About ascend-docker

ascend-docker is a script and reference for creating Docker containers configured for Huawei Ascend NPU development. It offers privileged, basic, and full modes with automatic or selected device mapping.

Key features

  1. 01Three container configuration modes
  2. 02Automatic NPU device detection
  3. 03Selection by device list or range
  4. 04Optional profiling, logging, and dump support
  5. 05Ascend device and driver mounts

Use cases

  1. 01Start a container using detected NPU devices
  2. 02Limit a container to selected NPUs
  3. 03Choose a mode for inference or profiling
  4. 04Set up a container for Ascend development

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ascend-ai-coding/awesome-ascend-skills --skill ascend-docker

After installing, type/ascend-dockerin Claude Code to confirm it loaded.

Bundled filesscripts/run-ascend-container.sh

Details

From the project README

Ascend Docker Container

Create Docker containers configured for Huawei Ascend NPU development.

Quick Start

# 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"

Device Selection

The script auto-detects available NPU devices from /dev/davinci*. Use --device-list to select specific devices:

# 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"

Check available devices:

ls /dev/davinci* | grep -oE 'davinci[0-9]+$'

Container Modes

1. Privileged Mode (Default)

Maximum permissions, suitable when no specific requirements.

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. Basic Mode

Specific device mapping with network host, for inference workloads.

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. Full Mode

With profiling, logging, dump, and add-ons support.

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

Mode Comparison

FeaturePrivilegedBasicFull
Network modehosthost-
IPC modehost-host
Device accessAll (via privileged)Selected devicesSelected devices
Profiling support✓✗✓
Dump support✓✗✓
Logging (slog)✓✗✓
SecurityLowestHigherHigher

Device Parameters

DevicePurpose
/dev/davinci_managerNPU device manager
/dev/devmm_svmDevice memory management
/dev/hisi_hdcHDC communication device
/dev/davinci<N>Individual NPU devices (0, 1, 2, ...)

Volume Parameters

VolumePurpose
/usr/local/Ascend/driverAscend driver libraries
/usr/local/sbinNPU management tools (npu-smi)
/usr/local/Ascend/add-onsAdditional Ascend components
/var/log/npu/slogSystem logs
/var/log/npu/profilingProfiling data
/var/log/npu/dumpDump data
/etc/localtimeTimezone sync
/homeUser workspace

Common Images

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

Container Management

docker exec -it <container_name> bash
docker stop <container_name>
docker start <container_name>
docker rm -f <container_name>

Post-Setup

For self-built images, configure environment variables:

echo 'source /usr/local/Ascend/ascend-toolkit/set_env.sh' >> ~/.bashrc
source ~/.bashrc

Official References

Comments

Markdown supported