Ultralytics YOLO向けHuawei Ascendインテグレーション#
Huawei Ascend AIプロセッサーにコンピュータービジョンモデルをデプロイするには、Ascend AI Coreで実行する.omオフラインモデル形式にコンパイルする必要があります。Ultralytics YOLOモデルをAscendにエクスポートすると、ロボティクス、産業検査、スマートカメラの各分野で使用されるAtlas開発ボードやOrangePi AIProデバイス上で、低消費電力かつ高速な推論を実行できます。
Huawei Ascendとは何ですか?#
Huawei Ascendは、CANN(ニューラルネットワーク向けコンピューティングアーキテクチャ)と組み合わせて使用するAIプロセッサーの製品ファミリーです。CANNは、Huaweiの異種コンピューティングスタックです。CANNにはATC(Ascend Tensor Compiler)が含まれています。これはホスト側のツールで、標準のONNXグラフを、Ascend AI Coreを対象としたハードウェア固有の.omオフラインモデルに変換します。
ATCはすべてホスト上で実行されるため、Ascendハードウェアを接続せずに通常のx86-64またはARM64 Linuxマシンでモデルをコンパイルし、生成された.omを対象デバイスにコピーして推論を実行できます。
Ascend NPUで学習する#
Ultralyticsは、AMP、検証、チェックポイント保存、再開、AutoBatchを含む、torch_npuを使用した単一および複数NPUでの学習をサポートしています。device=npu:0でNPUを1台、またはdevice=npu:0,1で複数台を選択します。分散学習にはHCCLを使用します。互換性のあるCANN、PyTorch、torch_npuの各バージョンをインストールし、最初にCANN環境を読み込んでください。インストール方法と使用例については、Ascend NPUの学習セクションを参照してください。
Ascendエクスポート形式#
Ultralyticsのエクスポーターは、まず中間ONNXグラフを書き出し、次にATCを呼び出して、name引数で指定したSoC向けにコンパイルします。生成される自己完結型モデルディレクトリには、.omバイナリとUltralyticsのメタデータが含まれます。
Ascendモデルの主な機能#
- 専用AI Core:コンパイル済みモデルはホストCPUではなくAscend AI Core上で実行されるため、リアルタイムカメラのパイプラインで大幅に高いスループットを実現できます。
- ホスト側でのコンパイル:ATCはNPUを接続せずに使用できるため、CI、コンテナ、またはノートPCでエクスポートを実行できます。
- ONNX優先:標準のUltralytics ONNXエクスポートを、独自の中間形式を介さずにCANNツールチェーンへ直接渡せます。
- 静的シェイプ:コンパイル時に入力シェイプが
.omに固定されるため、実行時のシェイプ調整に伴うオーバーヘッドがなくなります。 - 複数デバイスへの対応:
nameを変更するだけで、同じONNXグラフをサポート対象の任意のSoC向けにコンパイルできます。
対応タスク#
Huawei Ascendへのエクスポートでは、Ultralyticsの7つすべてのタスクがサポートされています。セマンティックセグメンテーションと深度推定は、これらのヘッドを備える唯一のモデルファミリーであるYOLO26でのみ利用できます。
サポート対象デバイス#
nameで対象のSoCを指定します。ATCはその指定を.omに--soc_versionとして組み込むため、デプロイ先のボードに一致させる必要があります。ローカル環境では、CANNのインストールにカーネルが含まれている任意のSoC向けにコンパイルできます。Ultralytics Platformでは、Ascend310P1、Ascend310P3、Ascend310B1、Ascend310B4がサポートされています。
name | デバイス | ローカルエクスポート | Platform |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro、Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 8T、Atlas 200I A2(8 TOPS) | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 20T、Atlas 200I A2(20 TOPS) | ✅ | ✅ |
Ascendへのエクスポート:YOLOモデルの変換#
Ascendへのエクスポートには、Linux専用のCANNツールキットが必要です。atcコンパイラーがPATH上に存在している必要があります。エクスポート前にCANN環境スクリプトを読み込んでください。例:source /usr/local/Ascend/ascend-toolkit/set_env.sh。
インストール#
Ultralyticsをインストールし、その後、HuaweiからCANNを別途インストールしてください。
# Install the required package for YOLO
pip install ultralyticsCANNツールキットはHuaweiが配布しており、自動的にはインストールされません。Ascendコミュニティのダウンロードページからダウンロードするか、ATCとその依存関係が同梱された公式のascendai/cannコンテナイメージを使用してください。
ATCは、演算子カーネルがインストールされているSoCファミリー向けにのみコンパイルできます。ascend310pカーネルのみを含むツールキットでは、Ascend310B4を対象に指定するとNo supported Ops kernel and engine are found for ... Conv2Dエラーが発生します。デプロイ先のデバイスに対応するAscend-cann-kernels-<soc>パッケージをインストールしてください。
使用方法#
Ascend形式では、エクスポート、予測、検証の各モードがサポートされています。推論と検証はAscendハードウェア上で実行されます。モデルをエクスポートしてから、エクスポート済みモデルを読み込み、推論を実行するか精度を検証してください。
from ultralytics import YOLO
# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")
# Atlas 200I / OrangePi AIProボード向けに、モデルをAscend形式にエクスポートします
model.export(format="ascend", name="Ascend310B4")
# エクスポートしたAscendモデルを読み込み、デバイス上で推論を実行します
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")エクスポート引数#
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
format | str | 'ascend' | エクスポートしたモデルのターゲット形式です。Ascend AIプロセッサとの互換性を定義します。 |
name | str | 'Ascend310B4' | ATCに渡すターゲットSoCです。--soc_versionとして指定します(例: Ascend310P3)。CANNのインストール環境にカーネルが含まれるSoCであれば有効です。対応デバイスを参照してください。デプロイ先デバイスと一致させる必要があります。 |
imgsz | intまたはtuple | 640 | モデル入力の画像サイズです。静的シェイプとして.omに組み込まれます。 |
batch | int | 1 | オフラインモデルにコンパイルされる静的バッチサイズです。 |
quantize | int | 16 | 量子化の精度です。AscendのエクスポートはFP16のみをサポートし、指定がない場合は16を自動的に有効にします。非推奨のhalf/int8フラグに置き換わります。 |
opset | int | 17 | 中間グラフのONNX opsetです。CANN ONNXパーサーが受け付ける最高バージョンである17に制限されます。 |
simplify | bool | True | onnxslimを使用して、中間ONNXグラフを簡素化します。 |
nms | bool、省略可 | None | raw出力(None、デフォルト)、組み込みNMS(True)、NMSなしのヘッド(False)から選択します。 |
device | str | None | 中間ONNXエクスポートのデバイスです。デフォルトはCPU(device=cpu)です。ATCコンパイルでは使用されません。 |
Ascend AI Coreの畳み込み演算は、入力としてDT_FLOAT16とDT_INT8のみを受け付けるため、FP32のオフラインモデルはハードウェア上で実行できません。quantize=32を要求すると、実行できないモデルを黙って生成する代わりにエラーが発生します。
エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページをご覧ください。
出力構造#
エクスポートが正常に完了すると、次の構成のモデルディレクトリが作成されます:
yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml # Model metadata (classes, image size, task, etc.).omファイルは、CANNランタイムがデバイス上で読み込むコンパイル済みオフラインモデルです。ファイル名にはターゲットSoCが含まれるため、成果物だけで内容を識別できます。ローダーはディレクトリ内で見つかったモデルを1つだけ読み込むため、ディレクトリごとに.omを1つだけ保持してください。metadata.yamlには、クラス名、画像サイズ、その他Ultralyticsの推論パイプラインで使用される情報が含まれます。
エクスポートしたYOLO Ascendモデルのデプロイ#
Ultralytics YOLOモデルをAscend形式に正常にエクスポートしたら、次はAscendハードウェアにデプロイします。
ランタイムのインストール#
推論には、デバイス上のCANNランタイムと、CANNのpyACLバインディングをラップするais_bench Pythonパッケージが必要です。HuaweiのAscendツールリポジトリからビルドしてインストールしてください。
# On the Ascend device, with CANN installed and sourced
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# Build and install the ais_bench inference wheel
git clone https://gitee.com/ascend/tools.git
cd tools/ais-bench_workload/tool/ais_bench
pip3 wheel ./backend -v
pip3 install ./aclruntime-*.whl
pip3 wheel ./ -v
pip3 install ./ais_bench-*.whlエクスポートしたyolo26n_ascend_modelディレクトリをデバイスにコピーし、ほかのUltralytics形式と同じ方法で推論を実行します。
推奨ワークフロー#
- UltralyticsのTrainモードを使用してモデルをトレーニングするか、事前トレーニング済みチェックポイントから開始します。
- CANNがインストールされた任意のLinuxホストでAscend向けにエクスポートし、ターゲットSoCに一致する
nameを渡します。 - エクスポートしたモデルディレクトリをAscendデバイスにコピーします。
- CANNランタイムと
ais_benchを使用してデプロイし、デバイス上で推論を実行します。
実際の用途#
Ascendハードウェア上で動作するYOLOモデルは、幅広い組み込みビジョンおよび産業用ビジョンアプリケーションに適しています。
- 産業オートメーション: 生産ラインでの高速な品質検査と欠陥検出。
- スマート監視: 中央サーバーを使わず、エッジゲートウェイで複数カメラの物体検出をリアルタイムに実行します。
- ロボティクス: 自律移動ロボットや協働アーム向けのオンボード認識。
- スマートシティ: 低消費電力の路側ユニットで交通を監視し、歩行者を分析します。
概要#
このガイドでは、Huawei Ascend NPUでUltralytics YOLOをトレーニングし、CANN ATCコンパイラーを使用してモデルをAscend .om形式にエクスポートする方法を説明しました。エクスポートはすべてホスト上で実行され、自己完結型のモデルディレクトリが生成されます。単一のname引数で、サポートされている任意のAscend SoCを対象にできます。
使用方法の詳細については、CANN公式ドキュメントをご覧ください。
また、Ultralytics YOLOのほかのインテグレーションについて詳しく知りたい場合は、役立つリソースを多数掲載したインテグレーションガイドページをご覧ください。
よくある質問#
UltralyticsとCANNツールキットをインストールし、
atcがPATH上にあるようにCANN環境を読み込んでから、Pythonではmodel.export(format="ascend", name="Ascend310B4")、CLIではyolo export model=yolo26n.pt format=ascend name=Ascend310B4を使ってエクスポートします。nameにはデプロイ先デバイスのSoCを設定してください。いいえ。ATCコンパイラーはすべてホスト上で実行されるため、NPUを搭載していない標準的なx86-64またはARM64 Linuxマシンでコンパイルできます。エクスポートした
.omで推論を実行する場合にのみ、Ascendハードウェアが必要です。CANNのインストール環境に、指定したSoC向けのオペレーターカーネルが含まれていません。各ツールキットには特定のSoCファミリー向けのカーネルが含まれているため、ターゲットに一致する
Ascend-cann-kernels-<soc>パッケージをインストールするか、そのデバイスファミリー向けに構築されたコンテナイメージを使用してください。Ascend AI Coreの畳み込み演算は、
DT_FLOAT16とDT_INT8のテンソルのみを受け付けます。FP32のオフラインモデルはハードウェア上で実行できないため、エクスポーターは--precision_mode=force_fp16でコンパイルし、quantize=32を明示的に指定した場合はエラーにします。インストール済みのCANNツールキットにカーネルが含まれる任意のSoCを、
name引数で選択できます。検証済みの4つのターゲットとUltralytics Platformでの提供状況については、対応デバイスをご覧ください。