はじめてのNPUモデル実行
このガイドはすべてのインストール完了後、実際のAIモデルをDEEPX NPUで実行するエンドツーエンドの実践プロセスをカバーします。自動化スクリプトを順番に実行することで、モデルコンパイルから成功した推論まで全パイプラインを体験できます。
全体パイプライン
DEEPX NPUモデルデプロイメントは、最適化(コンパイラ)から実行(ランタイム)まで構造化された6ステップのワークフロー(Step 0〜5)に従います。
| ステップ | タスク | 関連スクリプト | 備考 |
|---|---|---|---|
| Step 0 | 環境確認 | compiler-0...sh,runtime-0...sh | SDKインストールとNPUドライバー確認 |
| Step 1 | モデルダウンロード | compiler-1_download_onnx.sh | 元の学習済みモデル(ONNX)をダウンロード |
| Step 2 | データ準備 | compiler-2_setup_calibration_dataset.sh | 量子化最適化用参照データセット準備 |
| Step 3 | パス設定 | compiler-3_setup_output_path.sh | コンパイル出力(.dxnn)の保存パス設定 |
| Step 4 | NPUコンパイル | compiler-4_model_compile.sh | ハードウェア最適化された.dxnnバイナリ生成 |
| Step 5 | NPU推論 | runtime-3_run_example_using_dxrt.sh | NPUでモデルを実行して結果を検証 |
ディレクトリ構造 完了後、getting-started/フォルダは実際のデータソースへのシンボリックリンクで構成されます。
getting-started/
├── calibration_dataset # dx-compiler/dx_com/calibration_dataset
├── dxnn # dx-compiler/dx_com/output
├── forked_dx_app_example # 実行例のターゲット(フォーク済み)
│ ├── bin
│ │ ├── efficientnet_async
│ │ └── yolov5_async
│ │ └── yolov5face_async
│ └── sample
│ └── ILSVRC2012
└── sample_models # dx-compiler/dx_com/sample_models
├── json
└── onnx
事前準備 開始前に以下の条件を満たしていることを確認してください:
- 必須条件: DX-AllSuiteのインストールが必ず完全に完了している必要があります。
- 環境の選択 : ローカル: ドライバーとSDKをホストOSに直接インストールしたユーザー向け。 : Docker: DEEPXのDockerイメージが提供するコンテナ内で作業するユーザー向け。 ヒント: すべてのスクリプトはコンテナ内(docker execを通じて)で必ず実行する必要があります。
DX-Compiler: AIモデルコンパイルスクリプトガイド(Step 0〜4)
このセクションはStep 0からStep 4までの順次ワークフローを通じて、標準AIモデルをNPU専用バイナリ(.dxnn)に変換するプロセスを説明します。
A. 実行順序
スクリプトはgetting-startedディレクトリ内で以下の順序で必ず実行する必要があります。
./getting-started/compiler-0_install_dx-compiler.sh # 環境設定
./getting-started/compiler-1_download_onnx.sh # モデル取得
./getting-started/compiler-2_setup_calibration_dataset.sh # データ準備
./getting-started/compiler-3_setup_output_path.sh # パス設定
./getting-started/compiler-4_model_compile.sh # 最終コンパイル
B. 共通の原則とヒント
すべてのコンパイラースクリプトはワークフローの一貫性を保つために「スマート委任」設計に従います。
- ロジック委任: 実際の処理は
dx-compiler/example/に位置する元のスクリプトに委任されます。 - 環境自動検出: スクリプトがホストまたはDocker環境で実行中かを自動識別し、パスとシンボリックリンクを設定します。
- 最終成果物: すべてのステップはNPU推論の核心成果物である
.dxnnファイル生成に向けたマイルストーンです。
C. スクリプト詳細ガイド
[Step 0] compiler-0_install_dx-compiler.sh(パッケージインストール)
モデルコンパイラー(dxcom)の環境を設定します。
- 核心機能:
dx-compiler環境をインストールし、簡単なステータス確認を実行します。 - スマートチェック:
dxcom -vを使用して既存インストールを確認します。すでにインストール済みの場合は(--forceフラグなしに)再インストールをスキップします。
[Step 1] compiler-1_download_onnx.sh(モデルダウンロード)
コンパイル用サンプルモデルファイル(.onnxおよび.json)を準備します。
- サポートモデル:
YOLOV5S-1, YOLOV5S_Face-1, MobileNetV2-1 - マッピング:
getting-started/sample_modelsとSDK内部dx-compiler/dx_com/sample_models間にシンボリックリンクを作成します。
[Step 2] compiler-2_setup_calibration_dataset.sh(キャリブレーションデータ設定)
モデル量子化プロセスで精度を維持するための参照データセットを取得します。
- 目的: 代表的な画像データセットをダウンロードして解凍します。最適化後も高い精度を維持するようモデルをキャリブレーションするために使用されます。
- 結果: ローカル
getting-started/calibration_datasetをSDKコアに接続します。
[Step 3] compiler-3_setup_output_path.sh(パス設定)
| 環境 | 物理パス(実際の保存場所) | 論理パス(アクセスポイント) |
|---|---|---|
| Docker | ${DOCKER_VOLUME_PATH}/dxnn | getting-started/dxnn/ |
| ローカル | ${DX_AS_PATH}/workspace/dxnn | getting-started/dxnn/ |
この「論理パス」抽象化により、後続のランタイムスクリプトはサーバーで実行しているかローカルPCで実行しているかに関わらず、同じ場所(dxnn/)からモデルを見つけられます。
[Step 4] compiler-4_model_compile.sh(モデルコンパイル実行)
準備したモデルとデータを組み合わせてNPU最適化バイナリを生成する最終ステップです。
- 核心動作:
dxcomエンジンを呼び出して以下の融合を実行します: : ONNX(構造)+ JSON(設定)+ キャリブレーション(精度)= .dxnn(最適化済みバイナリ) - 出力: 生成された
.dxnnファイルはdx-compiler/dx_com/output/に保存され、getting-started/dxnnリンクから即座にアクセスできます。
DX-Runtime: アプリケーション実行スクリプトガイド(Step 0、5)
このセクションはStep 0(環境設定)とStep 5(推論)に重点を置き、実際のDEEPX NPUハードウェアで最適化済みモデルをデプロイして実行します。
A. 全体実行順序
安定した動作のためにgetting-started/ディレクトリ内で順番に実行してください。
./getting-started/runtime-0_install_dx-runtime.sh # 環境設定
./getting-started/runtime-1_setup_input_path.sh # モデル接続
./getting-started/runtime-2_setup_assets.sh # リソース準備
./getting-started/runtime-3_run_example_using_dxrt.sh # 例の実行
B. 共通の原則とヒント
すべてのランタイムスクリプトはスムーズなデプロイメント体験のために以下のロジックで設計されています。
- インテリジェント診断と復旧: スクリプトが
sanity_check.shを使用してNPUドライバーとインストールの整合性を自動確認します。環境が壊れている場合は-fまたは--forceを使用して再初期化します。 - 環境適応ロジック: ホストまたはDocker環境に応じてパスが動的に割り当てられます。ヘッドレス(TTY)環境ではGUIエラーを防ぐために
--no-displayフラグが自動適用されます。 - リソース委任: スクリプトが
dx_app/setup.shを実行して必要なバイナリとサンプルデータをforked_dx_app_exampleフォルダに自動的に配置します。 - 視覚的検証:
: CLI環境: ターミナルから直接結果画像を確認できる
fim(fbi improved)のインストールルーティンを含みます。 : Docker環境: GUI出力が制限されるため、docker cp <container_id>:/path/to/result ./local_pathを使用して結果を取得できます。
前のコンパイラーステップで.dxnnファイルが正常に生成されている必要があります。ランタイムエンジンはこのハードウェア最適化バイナリなしには動作できません。
C. スクリプト詳細ガイド
[Step 0] runtime-0_install_dx-runtime.sh(パッケージインストール)
DEEPX NPU制御のためのコアソフトウェアスタックを構築します。
- 主要機能: ランタイムライブラリをインストールしてドライバーの動作を確認します。
- 最適化:
sanity_check.shがドライバーがすでに正しくロードされていることを検出した場合、重複インストールステップをスキップします。 - 時間節約オプション:
--exclude-fwを使用するとファームウェア更新をスキップしてソフトウェアスタックをインストールします(ファームウェアがすでに最新の場合に有用)。
[Step 5準備] runtime-1_setup_input_path.sh(モデルパス同期)
ランタイムエンジンがコンパイルステップで生成された.dxnnモデルをロードできるようパスを同期します。
| 環境 | 物理パス(実際の保存場所) | 論理パス(アクセスポイント) |
|---|---|---|
| Docker | ${DOCKER_VOLUME_PATH}/dxnn | getting-started/dxnn/ |
| ローカル | ${DX_AS_PATH}/workspace/dxnn | getting-started/dxnn/ |
[Step 5準備] runtime-2_setup_assets.sh(リソース準備)
推論例の実行に必要な依存ファイルとサンプルデータを準備します。
- 動作:
dx_appおよびdx_streamディレクトリ内のsetup.shスクリプトを順次呼び出します。 - 注記: このスクリプトは各モジュール内でリソースを管理し、
forked_dx_app_exampleフォルダに重複コピーを作成しません。
[Step 5] runtime-3_run_example_using_dxrt.sh(例の実行と結果確認)
このスクリプトはモデルをNPUにロードし、実際のパフォーマンスを測定し、3つの核心タスクの視覚化された出力を生成します。
| モデル | 入力データ | タスク | 繰り返し回数 |
|---|---|---|---|
| YOLOV5S_Face-1 | face_sample.jpg | [1] 顔検出 | 30 |
| YOLOV5S-1 | 1.jpg | [2] 物体検出 | 300 |
| MobileNetV2-1 | 1.jpeg | [3] 画像分類 | 300 |
- 結果レポート: 実行完了後、スクリプトは平均FPS(フレーム毎秒)とレイテンシ(ms)をターミナルに出力します。
このパイプラインはStep 1の3つのサンプルモデルがすべてStep 4で正常にコンパイルされていることを前提としています。
- モデルが欠損している場合、推論中に「File Not Found」エラーが発生します。
- エンドツーエンドの全プロセスを検証するために、ランタイムスクリプトを実行する前に3つのモデルすべてをコンパイルすることを強く推奨します。