ascend-docker について
Huawei Ascend NPU 開発向けに設定した Docker コンテナを作成するスクリプトです。特権、基本、フルの各モードがあり、デバイスの自動検出または指定に対応し、モードごとにプロファイリングやログ機能を提供します。
主な機能
- 01特権・基本・フルの各モード
- 02NPU デバイスの自動検出
- 03使用デバイスの指定
- 04フルモードのプロファイリングとダンプ対応
- 05Ascend ドライバーと作業領域のマウント
活用シーン
- 01Ascend NPU 推論用コンテナの準備
- 02開発コンテナで使用する NPU の選択
- 03プロファイリング、ログ、ダンプ機能の有効化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ascend/ agent-skills --skill ascend-dockerインストール後、Claude Code で/ascend-dockerを入力して読み込まれたか確認します。
同梱ファイルscripts/run-ascend-container.sh
詳細
Ascend Docker コンテナ
Huawei Ascend 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. 基本モード
推論ワークロード向けに、ネットワークをホストに設定し、特定のデバイスをマッピングします。
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
モードの比較
| 機能 | 特権 | 基本 | フル |
|---|---|---|---|
| ネットワークモード | host | host | - |
| IPC モード | host | - | host |
| デバイスアクセス | すべて(特権経由) | 選択したデバイス | 選択したデバイス |
| プロファイリングのサポート | ✓ | ✗ | ✓ |
| ダンプのサポート | ✓ | ✗ | ✓ |
| ログ(slog) | ✓ | ✗ | ✓ |
| セキュリティ | 最低 | 高い | 高い |
デバイスパラメーター
| デバイス | 用途 |
|---|---|
/dev/davinci_manager | NPU デバイスマネージャー |
/dev/devmm_svm | デバイスメモリ管理 |
/dev/hisi_hdc | HDC 通信デバイス |
/dev/davinci<N> | 個別の NPU デバイス(0、1、2、…) |
ボリュームパラメーター
| ボリューム | 用途 |
|---|---|
/usr/local/Ascend/driver | Ascend ドライバーライブラリ |
/usr/local/sbin | NPU 管理ツール(npu-smi) |
/usr/local/Ascend/add-ons | 追加の Ascend コンポーネント |
/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 対応