NXP iMX95 EVK - NPU TensorFlow Lite モデル こんにちは、 NPU で eIQ TensorFlow Lite サンプルモデルを実行しましたが、次のエラーが発生して失敗しました。 情報: モデル mobilenet_v1_1.0_224_quant.tflite がロードされました 情報: 解決済み報告者 情報: EXTERNAL デリゲートが作成されました。 remoteproc remoteproc0: FWイメージNeutronFirmware.elfを起動しています remoteproc remoteproc0: リモートプロセッサ neutron-rproc が起動しました 情報: NeutronDelegate デリゲート: 1 つのパーティションを持つ 31 ノードのうち 29 ノードが委任されました。 INFO: EXTERNAL デリゲートを適用しました。 情報: CPU 用の TensorFlow Lite XNNPACK デリゲートを作成しました。 Neutron 4ab00004.imx95-Neutron: 無効な ioctl。コマンド=1075577096、引数=549719032088 Neutron推論ジョブの作成に失敗しました エラー: コンポーネント='Neutron ドライバ'、カテゴリ='内部障害'、コード=442 エラー: ノード番号 31 (NeutronDelegate) の呼び出しに失敗しました。 エラー: tflite の呼び出しに失敗しました。 例は次のパッケージを使用して構築されました。 # AI/ML IMAGE_INSTALL:append = "tensorflow-lite-neutron-delegate" 現在、リモート プロセッサはオフラインとして表示されます。 root@toradex-smarc-imx95-12593622:/sys/class/remoteproc/remoteproc0# 猫の状態 オフライン リモート プロセッサを手動で起動しようとすると、権限エラーが発生します。 root@toradex-smarc-imx95-12593622:~# echo rproc-neutron-rproc-fw > /sys/class/remoteproc/remoteproc0/firmware -sh: /sys/class/remoteproc/remoteproc0/firmware: 権限が拒否されました root@toradex-smarc-imx95-12593622:~# echo start > /sys/class/remoteproc/remoteproc0/state -sh: /sys/class/remoteproc/remoteproc0/state: 権限が拒否されました 現在、IMX_ML_User_Guide を参照して、NPU 上で eIQ Toolkit TensorFlow Lite の例を実行する作業を行っていますが、マイクロコードの不一致エラーが発生しました。 私たちのセットアップでは、BSPバージョンscarthgap-6.6.36-2.1.0を使用しています。eIQ ツールキット バージョン 1.16.0。TensorFlow Liteモデルを.tfliteに変換しましたeIQ ツールキットを使用して NPU 最適化モデルに変換しましたが、実行中に次のエラーが発生します。 トラブルシューティングのために、複数のBSPとeIQツールキットのバージョンの組み合わせ(BSP 6.6.52_2.2.0、6.12.34_2.1.0)をテストしました。、lf-6.6.3_1.0.0 6.6.23_2.0.0 および 6.6.36_2.1.0eIQ 1.16.0では、1.15.1、および 1.14.0)。ただし、マイクロコードのバージョンはいずれも、予想されるバージョンと一致しません。 予想されるマイクロコードバイナリ(NeutromFirmware.elf)を提供してください変更の実行やアドバイスのため。 Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 BSP バージョンが 6.12.20 から 6.12.34 にアップグレードされ、eIQ ツールキットのデフォルトの例が実行されました。添付のスクリーンショットは結果を示しています。この例は正常に実行され、NXP i.MX95 EVK でデフォルトの画像分類出力が生成されました。ただし、実行中に 31 個のノードのいずれも委任されませんでした。 .tfliteを変換しました最新の eIQ Toolkit バージョン 17 を使用したモデル。ただし、TensorFlow Lite バージョン 17 で例を実行すると、画像分類の結果が表示されません。この問題を示すスクリーンショットを添付しました。 上記の両方のCASEは、NXP i.MX95 EVK で実行されました。 ただし、私たちの主な目的は、これらの例を Toradex SMARC i.MX95 EVK で実行することです。 Toradex ボードの BSP バージョン アップグレードはまだ不安定で、Toradex i.MX95 EVK にバージョン 6.12.34 の安定した BSP リリースがまだないため、NPU で AI ワークロードを実行すると複数のエラーが発生します。 Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 モデルを次のように変換する必要があります。 /opt/nxp/eIQ_Toolkit_v1.17.0/bin/neutron-converter/MCU_SDK_25.09.00+Linux_6.12.34_2.1.0/neutron-converter \
--input you_model_quant.tflite \
--output your_model_neutron.tflite \
--target imx95 \
--convert-inputs-uint8-to-int8 \
--convert-outputs-uint8-to-int8 YOLOv11 Nano を 27 FPS で実行できました。バージョン不一致の警告はまだ表示されますが、問題は発生していません。警告を受けるのは楽しいことではありませんが、今となってはそれについてCANことはあまりありません。 お役に立てれば幸いです。 乾杯! Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 最新バージョン (6.12.34) では、さらに多くのノードとオペレーターを変換することができました。変換された演算子が 3% から 62 ドルに増加しました。これは、YOLOv11 ベースのモデルとしては非常に良好です。 今度はバージョンの不一致もあります。しかし、それは私のボードのバージョンによるものです。SO、6.12.20 から 6.12.34 にアップデートしようとしています。お持ちのバージョンと変換に使用したバージョンをご確認ください。 乾杯! Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 このエラーについては分かりませんが、おそらく NXP の誰かが介入するはずです。 私もガイドに従って、カスタム 1 ステージ検出器 (CNN ベース) を変換することができました。残念ながら、デリゲートにロードされるノードは 1 つだけです (残りは、CPU 用の XNNPACK のままです)。 ====== V4L2ENC: 1.26.0 build on May 7 2025 08:46:20. ======
INFO: NeutronDelegate delegate: 1 nodes delegated out of 697 nodes with 1 partitions.
INFO: Neutron delegate version: v1.0.0-a5d640e6, zerocp enabled.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU. これはおそらく、変換後に 697 個の Neutron Graph のうち 1 個だけ作成されるためです。変換された演算子は 27 個のみです。笑 Conversion statistics:
Number of operators after import = 678
Number of operators after optimize = 723
Number of operators converted = 27
Number of operators NOT converted = 696
Number of operators after extract = 697
Number of Neutron graphs = 1
Number of operators NOT converted = 696
Operator conversion ratio = 27 / 723 = 0.0373444
Operators converted = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, Variscite のサポートに再度お問い合わせし、何かアイデアが得られるか確認してみました。NXP がここで実際に返答しないのは残念です。 解決策が見つかることを願っています。引き続き調査を続け、何か見つかったらお知らせします。 乾杯! Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 サポートありがとうございます。共有していただいたリンクを確認し、提供された手順に従いましたが、マイクロコード不一致エラーがまだ発生します。参考までにスクリーンショットを添付しました。 これを確認して問題解決にご協力いただけますでしょうか? Re: NXP iMX95 EVK - NPU TensorFlow Lite Model NXP のサポートは非常に悪く、ドキュメントには必要なものがすべて記載されていません。また、Neutron 準拠モデルが付属していないイメージについては言うまでもありません (変換されずにイメージに追加されなかったためです)。 私は、NXP iMX 95 が統合されたボードを提供しているNXPについてである Variscite に連絡し、支援してもらいました。これを動作させるには、NPX の例であっても、自分でモデルを変換する必要があります。次の手順に従ってください: https://dev.variscite.com/dart-mx95/mx95-yocto-walnascar-6.12.20_2.0.0-v1.2/machine-learning/ 他の作業で忙しいので、まだ変換は行っていません。 お役に立てれば幸いです。 Re: NXP iMX95 EVK - NPU TensorFlow Lite Model 最新の BSP リリースに更新しましたが、問題は依然として解決しません。この問題の解決にご協力いただけませんか? Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 私も同じ問題に直面しており、CAN回避できません。 以下の例のように、画像に付属するサンプル コードをテストしました。NeutroDelegate がノードを適切に委任しないという同じ問題が発生します。私たちの検出モデルで試してみましたが、予想どおり同じ結果でした。 ====== V4L2ENC: 1.26.0 build on May 7 2025 08:46:20. ======
INFO: NeutronDelegate delegate: 0 nodes delegated out of 678 nodes with 0 partitions.
Error in cpuinfo: prctl(PR_SVE_GET_VL) failed
INFO: Created TensorFlow Lite XNNPACK delegate for CPU. これを実行しようとすると、 echo start > /sys/class/remoteproc/remoteproc0/state 結果としてアクセスが拒否されました。 多くの画像で試してみました: 6.12.20_2.0.0-v1.1:動作し、起動しますが、デリゲートが適切に割り当てられません。 6.6.52_2.2.0-v1.1:動作しません。起動すらしません。 6.6.23_2.0.0-v1.1:動作しません。起動すらしません。 6.6.1_1.0.0-v1..00: 動作しません - 起動すらしません。 Variscite DART DM95 に付属する NXP i.MX 95 をテスト中です (またはテストしようとしています)。画像は彼らのサイトからダウンロードされました。最新の NXP リリースでも試してみましたが、これも機能しませんでした。 この許可が拒否された理由は何でしょうか?特定の動作する画像をお持ちの場合は、それをダウンロードするためのリンクを共有していただけますか? サポートをよろしくお願いいたします。 乾杯! Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは。
それは奇妙です。SO、最新の BSP を使用していることを確認し、ボードの Linux を消去して再度書き込んでください。ここでは問題なく動作しているので、これ以上言うことはCANません。
よろしくお願いします。 Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、 ご提案のとおり、以下のコマンドを試しましたが、依然としてアクセスが拒否されるなどのエラーが発生しました。ルートおよび sudo でもコマンドを試していますが、依然としてアクセス拒否の問題が発生しています。参考までにスクリーンショットを追加しました。 1.エコー停止 > /sys/class/remoteproc/remoteproc0/state 2.cat /sys/class/remoteproc/remoteproc0/state 3.ls /lib/ファームウェア 4.echo NeutronFirmware.elf > /sys/class/remoteproc/remoteproc0/firmware Re: NXP iMX95 EVK - NPU TensorFlow Lite Model こんにちは、
エラー メッセージによると、RemoteProc 権限の問題と NPU デリゲートの失敗の両方が発生しています。これらを段階的に解決するお手伝いをさせていただきます。
1. RemoteProc の権限の問題
リモート プロセッサを手動で制御しようとしたときに表示される権限エラーはよくあるものです。RemoteProc のドキュメントによると、変更を加える前にリモート プロセッサが正しい状態であることを確認する必要があります。
# cat /sys/class/remoteproc/remoteproc0/state
権限が拒否されたエラーが発生した場合は、まずリモート プロセッサを停止してみてください。
# エコー停止 > /sys/class/remoteproc/remoteproc0/state
(
次に、オフラインであることを確認します。
# cat /sys/class/remoteproc/remoteproc0/state
オフライン
2. ファームウェアのロードプロセス
ファームウェアをロードする場合、RemoteProc フレームワークはデフォルトで /lib/firmware 内に格納されている *.elf ファームウェアを検索します(1) 。ファームウェアを次の場所にコピーCAN:
$ scp hello_world.elf root@ :/lib/firmware
ファームウェアが他の場所に保存されている場合は、ファームウェア パスを更新CAN。
# echo -n new_path > /sys/module/firmware_class/parameters/path
3. リモートプロセッサのロードと起動
ファームウェアをロードするには、ファームウェア ファイルにその名前を書き込みます。
# echo.elf > /sys/class/remoteproc/remoteproc0/ファームウェア
重要: 必ず *.elf ファームウェアを実行してください。そうしないと動作しません。
新しいファームウェアでリモート プロセッサを起動するには:
# エコー開始 > /sys/class/remoteproc/remoteproc0/state
次のような出力が表示されます。
[12594.692880] remoteproc remoteproc0: imx-rproc を起動しています
[12594.698629]remoteproc remoteproc0: FWイメージhello_world.elfを起動しています。サイズ 240736
[12594.706192]remoteproc remoteproc0: dtb rsrc-table がありません
[12594.761474]remoteproc remoteproc0: リモートプロセッサ imx-rproc が起動しました
4. NPU構成要件
コミュニティの議論に基づいて、NPU の設定にはいくつかの重要な考慮事項があります。
NPU サポートの確認: ハードウェアが NPU 実行をサポートしていること、および使用している TensorFlow Lite バージョンが NPU アクセラレーションと互換性があることを確認します。
NPUドライバのインストール: NPUドライバが正しくインストールされ、設定されていることを確認します
正しい TensorFlow Lite デリゲートを使用する: NPU 実行に適切なデリゲートを使用していることを確認します。
5. トラブルシューティングの手順
ハードウェアサポートの確認: ハードウェア構成がNPUデリゲートをサポートしていることを確認します。
ファームウェアの検証: 正しいNPUファームウェアがロードされていることを確認します
ドライバステータス: Neutronドライバが正しくロードされ、アクセス可能かどうかを確認します
デリゲート構成: TensorFlow Lite デリゲートが特定のハードウェアに対して正しく構成されていることを確認します。
6. 代替アプローチ
問題が引き続き発生する場合は、まず CPU のみの推論でテストして、問題が NPU アクセラレーションに特有のものかどうかを特定することを検討してください。ハードウェアアクセラレーションを一時的に無効にするには、 USE_HW_ACCELERATED_INFERENCE=0
よろしくお願いします。
記事全体を表示