YOLO Vision 2026:

Ultralytics YOLO の Huawei Ascend 統合#

Huawei Ascend AIプロセッサ上でコンピュータビジョンモデルをデプロイするには、Ascend AI Coreで実行される .om オフラインモデル形式にコンパイルする必要があります。Ultralytics YOLOモデルをAscendにエクスポートすると、ロボット工学、産業用検査、スマートカメラのデプロイメントで使用されるAtlas開発者ボードやOrangePi AIProデバイス上で、高速かつ低電力な推論を実行できます。

Huawei Ascend とは#

Huawei Ascendは、Huaweiの異種コンピューティングスタックである CANN (Compute Architecture for Neural Networks) とペアになったAIプロセッサファミリです。CANNには、標準的なONNXグラフをAscend AI Coreをターゲットとするハードウェア固有の .om オフラインモデルに変換するホスト側のツールである ATC (Ascend Tensor Compiler) が付属しています。

ATCは完全にホスト上で実行されるため、Ascendハードウェアを接続することなく、通常のx86-64またはARM64 Linuxマシン上でモデルをコンパイルし、結果として得られた .om をターゲットデバイスにコピーして推論を実行できます。

Ascend NPU でのトレーニング#

Ultralyticsは、AMP、検証、チェックポイント、再開、AutoBatchを含め、torch_npu によるシングルおよびマルチNPUトレーニングをサポートしています。device=npu:0 で1つのNPUを選択するか、device=npu:0,1 で複数のNPUを選択します。分散トレーニングでは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、コンテナ、またはラップトップでエクスポートを実行できます。
  • ONNXファースト: 標準のUltralytics ONNXエクスポートは、独自の独自中間形式なしで、CANNツールチェーンに直接フィードされます。
  • 静的形状: 入力形状はコンパイル時に .om に焼き込まれるため、実行時の形状ネゴシエーションのオーバーヘッドがなくなります。
  • マルチデバイスのターゲット設定: name を変更することで、同じONNXグラフがサポートされている任意のSoC向けにコンパイルされます。

サポートされているタスク#

Huawei Ascendのエクスポートは、7つのUltralyticsタスクすべてをサポートしています。セマンティックセグメンテーションと深度推定は、それらのヘッドを搭載する唯一のファミリーであるYOLO26でのみ利用可能です。

タスクYOLOv8YOLO11YOLO26
検出 (Detect)
Segment
Semantic
Depth
Classify
ポーズ
OBB

サポートされているデバイス#

name でターゲットSoCを渡します。ATCはそれを .om 内に --soc_version として焼き込むため、デプロイするボードと一致している必要があります。ローカルでは、CANNインストールのカーネルが提供する任意のSoC向けにコンパイルできます。Ultralytics Platformは、Ascend310P1、Ascend310P3、Ascend310B1、およびAscend310B4のターゲットをサポートしています。

nameデバイスローカルエクスポートプラットフォーム
Ascend310P3Atlas 300I Pro、Atlas 300V Pro
Ascend310P1Atlas 300I
Ascend310B4OrangePi AIPro 20T、Atlas 200I A2
Ascend310B1OrangePi AIPro 8T

Ascend へのエクスポート: YOLO モデルの変換#

注意

AscendエクスポートにはCANNツールキットが必要であり、これはLinux専用です。atc コンパイラは PATH 上にある必要があります。エクスポートする前にCANN環境スクリプトをソースしてください(例: source /usr/local/Ascend/ascend-toolkit/set_env.sh)。

インストール#

Ultralytics をインストールしてから、Huawei から CANN を個別にインストールします。

インストール
# Install the required package for YOLO
pip install ultralytics

CANNツールキットはHuaweiによって配布されており、自動的にはインストールされません。Ascendコミュニティダウンロードページからダウンロードするか、ATCとその依存関係をバンドルしている公式のascendai/cann コンテナイメージのいずれかを使用してください。

ツールキットをターゲット SoC に合わせる

ATCは、オペレーターカーネルがインストールされているSoCファミリーに対してのみコンパイルできます。ascend310pカーネルのみを搭載したツールキットは、Ascend310B4ターゲットを要求された際にNo supported Ops kernel and engine are found for ... Conv2Dエラーで失敗します。デプロイするデバイスに一致するAscend-cann-kernels-<soc>パッケージをインストールしてください。

使用方法#

Ascend形式は、ExportPredict、およびValidateモードをサポートしています。推論と検証はAscendハードウェア上で実行されます。モデルをエクスポートし、エクスポートされたモデルをロードして推論を実行するか、精度を検証します。

エクスポート
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to Ascend format for an Atlas 200I / OrangePi AIPro board
model.export(format="ascend", name="Ascend310B4")

# Load the exported Ascend model and run inference on the device
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")

エクスポートの引数#

引数タイプデフォルト説明
formatstr'ascend'エクスポートされたモデルのターゲット形式。Ascend AI プロセッサーとの互換性を定義します。
namestr'Ascend310B4'--soc_version としてATCに渡されるターゲットSoC(例: Ascend310P3)。CANNインストールにカーネルがある任意のSoCが有効です。サポートされているデバイスを参照してください。デプロイメントデバイスと一致する必要があります。
imgszint または tuple640モデル入力の希望する画像サイズ。静的形状として .om に焼き込まれます。
batchint1オフラインモデルにコンパイルされた静的バッチサイズ。
quantizeint16量子化精度。AscendエクスポートはFP16専用であり、指定されていない場合は自動的に 16 を有効にします。非推奨となった half / int8 フラグを置き換えます。
opsetint17中間グラフ用の ONNX オプセット。CANN ONNX パーサーが受け入れる最高バージョンである 17 に上限が設定されています。
simplifyboolTrueonnxslim を使用して、中間ONNXグラフを簡素化します。
nmsboolFalseサポートされている検出、セグメンテーション、ポーズ、および OBB モデルに非最大値抑制 (Non-Maximum Suppression) を追加します。
なぜ FP32 は利用できないのですか?

Ascend AI Coreは、畳み込みに対して DT_FLOAT16 および DT_INT8 入力のみを受け入れるため、FP32オフラインモデルはハードウェア上で実行できません。quantize=32 を要求すると、実行されないモデルがサイレントに生成されるのではなく、エラーが発生します。

エクスポートプロセスの詳細については、Ultralytics documentation page on exporting をご覧ください。

出力構造#

エクスポートが成功すると、以下のレイアウトでモデルディレクトリが作成されます。

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 を保持してください。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形式と同様に推論を実行します。

推奨されるワークフロー#

  1. UltralyticsのTrainモードを使用してモデルを トレーニング するか、事前トレーニング済みチェックポイントから開始します。
  2. CANNがインストールされている任意のLinuxホスト上でAscendに エクスポート し、ターゲットSoCに一致する name を渡します。
  3. エクスポートされたモデルディレクトリを Ascend デバイスに Copy します。
  4. デバイス上での推論のために、CANNランタイムと ais_bench を使用して デプロイ します。

実際のアプリケーション#

Ascend ハードウェアで実行される YOLO モデルは、幅広い組み込みおよび産業用ビジョンアプリケーションに適しています:

  • 産業用自動化: 製造ラインでの高速品質検査と欠陥検出。
  • スマート監視: 中央サーバーなしのエッジゲートウェイでのリアルタイムマルチカメラオブジェクト検出。
  • ロボット工学: 自律移動ロボットおよび協働アーム向けの一人称認識。
  • スマートシティ: 低電力な路側ユニットでの交通監視と歩行者分析。

要約#

このガイドでは、Huawei Ascend NPU上でUltralytics YOLOをトレーニングする方法と、CANN ATCコンパイラを使用してモデルをAscend .om 形式にエクスポートする方法を学習しました。エクスポートは完全にホスト上で実行され、自己完結型のモデルディレクトリを作成し、単一の name 引数を通じてサポートされている任意のAscend SoCをターゲットにします。

使用方法の詳細については、公式CANNドキュメントをご覧ください。

また、他のUltralytics YOLOインテグレーションの詳細については、インテグレーションガイドページにアクセスして、役立つリソースを多数見つけてください。

よくある質問 (FAQ)#

  • UltralyticsとCANNツールキットをインストールし、atcPATH 上にあるように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 リクエストを拒否します。

  • name 引数を介して選択された、インストールされているCANNツールキットがカーネルを提供する任意のSoC。検証済みの4つのターゲットとUltralytics Platformでの可用性については、サポートされているデバイスを参照してください。

コメント