最初の NPU モデルを実行する
このガイドでは、すべてのインストールを完了した後、DEEPX NPU で実際の AI モデルを実行するためのエンドツーエンドの実践的なプロセスを説明します。自動化スクリプトを順番に実行することで、モデルコンパイルから推論成功までのパイプライン全体を体験できます。
全体パイプライン
DEEPX NPU モデルのデプロイは、最適化 (コンパイラ) から実行 (ランタイム) まで、構造化された 6 ステップのワークフロー (ステップ 0〜5) に従います。
| ステップ | タスク | 関連スクリプト | 備考 |
|---|---|---|---|
| ステップ 0 | 環境確認 | compiler-0...sh,runtime-0...sh | SDK インストールと NPU ドライバーの検証 |
| ステップ 1 | モデルダウンロード | compiler-1_download_onnx.sh | 元の学習済みモデル (ONNX) のダウンロード |
| ステップ 2 | データ準備 | compiler-2_setup_calibration_dataset.sh | 量子化最適化のための参照データセット準備 |
| ステップ 3 | パス設定 | compiler-3_setup_output_path.sh | コンパイル済み出力 (.dxnn) の保存パス設定 |
| ステップ 4 | NPU コンパイル | compiler-4_model_compile.sh | ハードウェア最適化された .dxnn バイナリの生成 |
| ステップ 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 モデルコンパイルスクリプトガイド (ステップ 0〜4)
このセクションでは、ステップ 0 からステップ 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. 詳細スクリプトガイド
[ステップ 0] compiler-0_install_dx-compiler.sh (パッケージインストール)
モデルコンパイラ (dxcom) の環境をセットアップします。
- コア機能:
dx-compiler環境をインストールし、簡単なヘルスチェックを実行します。 - スマートチェック:
dxcom -vを使用して既存のインストールを検査します。既にある場合、(--forceフラグを使用しない限り) 冗長なセットアップで時間を無駄にしません。
[ステップ 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間にシンボリックリンクを作成します。
[ステップ 2] compiler-2_setup_calibration_dataset.sh (キャリブレーションデータ設定)
モデル量子化プロセス中に精度を維持するための参照データセットを取得します。
- 目的: 代表的な画像データセットをダウンロードして解凍します。最適化後も精度が高く維持されるようにモデルをキャリブレーションします。
- 結果: ローカルの
getting-started/calibration_datasetを SDK コアにリンクします。
[ステップ 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/) でモデルを検索できます。
[ステップ 4] compiler-4_model_compile.sh (モデルコンパイルの実行)
準備されたモデルとデータを組み合わせて NPU 最適化バイナリを生成する最終ステージです。
- コアアクション:
dxcomエンジンを呼び出して以下の融合を実行します: : ONNX (構造) + JSON (設定) + キャリブレーション (精度) = .dxnn (最適化されたバイナリ) - 出力: 新しい
.dxnnファイルはdx-compiler/dx_com/output/に保存され、getting-started/dxnnリンク経由ですぐにアクセスできます。
DX-Runtime: アプリケーション実行スクリプトガイド (ステップ 0, 5)
この章は、ステップ 0 (環境セットアップ) とステップ 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) 環境では、スクリプトが自動的に
--no-displayフラグを適用して GUI エラーを防ぎます。 - リソース委譲: スクリプトは
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. 詳細スクリプトガイド
[ステップ 0] runtime-0_install_dx-runtime.sh (パッケージインストール)
DEEPX NPU 制御のためのコアソフトウェアスタックを構築します。
- 主要機能: ランタイムライブラリをインストールし、ドライバーの動作を検証します。
- 最適化:
sanity_check.shがドライバーが既に正しくロードされていることを検出すると、冗長なインストールステップをスキップします。 - 時間節約オプション:
--exclude-fwを使用してファームウェア更新をスキップしながらソフトウェアスタックをインストールできます(ファームウェアが既に最新の場合に有用)。
[ステップ 5 準備] runtime-1_setup_input_path.sh (モデルパス同期)
コンパイルフェーズで生成された .dxnn モデルをランタイムエンジンがロードできるようにパスを同期します。
| 環境 | 物理パス (実際のストレージ) | 論理パス (アクセスポイント) |
|---|---|---|
| Docker | ${DOCKER_VOLUME_PATH}/dxnn | getting-started/dxnn/ |
| ローカル | ${DX_AS_PATH}/workspace/dxnn | getting-started/dxnn/ |
[ステップ 5 準備] runtime-2_setup_assets.sh (リソース準備)
推論サンプルを実行するために必要な依存ファイルとサンプルデータを準備します。
- アクション:
dx_appおよびdx_streamディレクトリ内のsetup.shスクリプトを順次呼び出します。 - 注意: このスクリプトは各モジュール内のリソースを管理します。
forked_dx_app_exampleフォルダに冗長なコピーは作成しません。
[ステップ 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) をターミナルに出力します。
このパイプラインは、ステップ 1 の 3 つすべてのサンプルモデルがステップ 4 で正常にコンパイルされていることを前提としています。
- モデルが欠落している場合、推論中に「ファイルが見つかりません」エラーが発生します。
- エンドツーエンドのプロセス全体を検証するために、このランタイムスクリプトを実行する前に 3 つすべてのモデル をコンパイルすることを強くお勧めします。