Running Your First NPU Model
このガイドでは、DX-AllSuiteのインストール完了後、DEEPX NPU上で実際のAIモデルを実行するための実用的なエンドツーエンドのプロセスについて説明します。 自動化スクリプトを順番に実行することで、モデルのコンパイルから推論の成功まで、パイプライン全体を体験できます。
Overall Pipeline
DEEPX NPUモデルのデプロイは、最適化(コンパイラ)から実行(ランタイム)まで、構造化された**6段階のワークフロー(Step 0~5)に従います。
| Step | Task | Related Script | Remark |
|---|---|---|---|
| Step 0 | Environment Check | compiler-0...sh,runtime-0...sh | Verify SDK installation and NPU driver |
| Step 1 | Model Download | compiler-1_download_onnx.sh | Download original trained models (ONNX) |
| Step 2 | Data Preparation | compiler-2_setup_calibration_dataset.sh | Prepare reference dataset for quantization optimization |
| Step 3 | Path Configuration | compiler-3_setup_output_path.sh | Configure storage path for compiled outputs (.dxnn) |
| Step 4 | NPU Compilation | compiler-4_model_compile.sh | Generate hardware-optimized .dxnn binaries |
| Step 5 | NPU Inference | runtime-3_run_example_using_dxrt.sh | Execute the model on NPU and verify results |
ディレクトリ構造
セットアップ完了後 getting-started/ フォルダは実際のデータソースへのシンボリックリンクで以下のように構成されます。
getting-started/
├── calibration_dataset # dx-compiler/dx_com/calibration_dataset
├── dxnn # dx-compiler/dx_com/output
├── forked_dx_app_example # Example execution target (forked)
│ ├── bin
│ │ ├── efficientnet_async
│ │ └── yolov5_async
│ │ └── yolov5face_async
│ └── sample
│ └── ILSVRC2012
└── sample_models # dx-compiler/dx_com/sample_models
├── json
└── onnx
準備 (Preparation)
開始前に、環境が以下の基準を満たしていることを確認してください。
- 前提条件: DX-AllSuite のインストールが完全に完了していること。
- 環境の選択
: Local: ホストOSにドライバとSDKを直接インストールした場合。
: Docker: DEEPX Docker イメージが提供するコンテナ内で作業する場合。
Tip: Docker環境では、すべてのスクリプトをコンテナ内(docker exec経由)で実行する必要があります。
DX-Compiler: AI Model Compilation Scripts Guide (Steps 0–4)
このセクションでは、Step 0から Step 4までのシーケンシャルなワークフローを通じて、標準的なAIモデルをNPU専用バイナリ(.dxnn)に変換するプロセスについて説明します。
A. Execution Order
getting-started ディレクトリ内で、以下の順序でスクリプトを実行してくださ。
./getting-started/compiler-0_install_dx-compiler.sh # Environment Setup
./getting-started/compiler-1_download_onnx.sh # Model Acquisition
./getting-started/compiler-2_setup_calibration_dataset.sh # Data Preparation
./getting-started/compiler-3_setup_output_path.sh # Path Configuration
./getting-started/compiler-4_model_compile.sh # Final Compilation
B. Common Principles & Tips
すべてのコンパイラスクリプトは、ワークフローの一貫性を保つために スマート委譲 (Smart Delegation) 設計を採用しています。
- ロジックの委譲: 実際の処理は
dx-compiler/example/にあるオリジナルスクリプトに委ねられます。 - 環境の自動検出: スクリプトは実行環境(ホストまたはDocker)を自動的に判別し、適切なパスやシンボリックリンクを構成します。
- 最終アセット: すべてのステップは、NPU推論の必須資産である
.dxnnファイルを生成するための重要なマイルストーンです
C. Detailed Script Guide
[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 (キャリブレーションデータのセットアップ)
モデルの量子化(Quantization)プロセスにおいて、精度を維持するための参照用データセットを取得します。
- 目的: 代表的な画像データセットをダウンロードし、展開します。 これらはモデルを「校正(キャリブレーション)」するために使用され、最適化(INT8量子化)後も高い精度を維持できるようにします。
- 結果: ローカルの
getting-started/calibration_datasetを SDKコアにリンクします。
[Step 3] compiler-3_setup_output_path.sh (パス設定)
| Environment | Physical Path (Actual Storage) | Logical Path (Access Point) |
|---|---|---|
| Docker | ${DOCKER_VOLUME_PATH}/dxnn | getting-started/dxnn/ |
| Local | ${DX_AS_PATH}/workspace/dxnn | getting-started/dxnn/ |
この「論理パス」による抽象化により、後続のランタイムスクリプトは、サーバー上でもローカルPC上でも、常に同じ場所(dxnn/)でモデルを探すことができます。
[Step 4] compiler-4_model_compile.sh (モデルコンパイルの実行)
準備されたモデルとデータを組み合わせ、NPU最適化バイナリを生成する最終段階です。
- コアアクション:
dxcomエンジンを呼び出し、以下の要素を融合。
: ONNX (構造) + JSON (設定) + Calibration (精度) = .dxnn (最適化済みバイナリ) - 出力: 生成された新しい
.dxnnファイルはdx-compiler/dx_com/output/に保存されgetting-started/dxnnリンクを通じて即座にアクセス・使用が可能になります。
DX-Runtime: Application Execution (Application Execution Scripts Guide) (Step 0, 5)
このセクションでは、Step 0環境構築と Step 5推論 を中心に、最適化されたモデルを実際のDEEPX NPUハードウェアにデプロイして実行するプロセスについて説明します。
A. Full Execution Order
getting-started/ ディレクトリ内で、以下のスクリプトを順番に実行してください。
./getting-started/runtime-0_install_dx-runtime.sh # Set up environment
./getting-started/runtime-1_setup_input_path.sh # Connect model
./getting-started/runtime-2_setup_assets.sh # Prepare resources
./getting-started/runtime-3_run_example_using_dxrt.sh # Run example
B. Common Principles & Tips
すべてのランタイムスクリプトは、シームレスなデプロイ体験を実現するために、以下のロジックに基づいて設計されています。
- インテリジェントな診断とリカバリ: スクリプトは
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. Detailed Script Guide
[Step 0] runtime-0_install_dx-runtime.sh (パッケージインストール)
DEEPX NPU 制御のためのコアソフトウェアスタックを構築します。
- コア機能: ランタイムライブラリをインストールし、ドライバの動作を確認します。
- 最適化:
sanity_check.shがドライバがすでに正しくロードされていることを検知した場合、冗長なインストール手順をスキップします。 - 時間節約オプション: ソフトウェアスタックのみをインストールし、ファームウェアの更新をスキップしたい場合は
--exclude-fwを使用してください (すでに最新のファームウェアが適用されている場合に便利です).
[Step 5 準備] runtime-1_setup_input_path.sh (モデルパスの同期)
コンパイルフェーズで生成された .dxnn モデルを、ランタイムエンジンがロードできるようにパスを同期させます。
| Environment | Physical Path (Actual Storage) | Logical Path (Access Point) |
|---|---|---|
| Docker | ${DOCKER_VOLUME_PATH}/dxnn | getting-started/dxnn/ |
| Local | ${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つの主要タスクに対して視覚化された出力を生成します。
| Model | Input Data | Task | Iterations |
|---|---|---|---|
| YOLOV5S_Face-1 | face_sample.jpg | [1] Face Detection | 30 |
| YOLOV5S-1 | 1.jpg | [2] Object Detection | 300 |
| MobileNetV2-1 | 1.jpeg | [3] Image Classification | 300 |
- 結果レポート: 実行完了後、スクリプトは平均 FPS(秒間フレーム数)と Latency(レイテンシ、ms)をターミナルに出力します。
このパイプラインは、Step 1で用意した3つのサンプルモデルが Step 4 で正常にコンパイルされていることを前提としています。
- モデルが不足している場合、推論中に "File Not Found" エラーが発生します。
- エンドツーエンドのプロセス全体を検証するために、このランタイムスクリプトを実行する前に、必ず3つすべてのモデルをコンパイルしておくことを強く推奨します。