Module-LLMにて、PythonのNPU推論でエラーが出た場合の対処
問題の確認
実行ログを見ると、PyaxengineのテストプログラムがAxEngine実行プロバイダーを適切に検出していることがわかります。しかし、その後「Segmentation fault」というエラーが発生し、プログラムが強制終了してしまっています。これはメモリアクセスの問題が発生していることを示しています。
root@m5stack-LLM:# python pyaxengine_test1.py
[INFO] Available providers: ['AxEngineExecutionProvider']
[INFO] Using provider: AxEngineExecutionProvider
[INFO] Chip type: ChipType.MC20E
[INFO] VNPU type: VNPUType.DISABLED
[INFO] Engine version: 2.6.3sp
[INFO] Model type: 1 (full core)
[INFO] Compiler version: 3.2-patch1 2b3a4680
Segmentation fault (core dumped)
解決手順
1. axengineのバージョン確認
この問題の原因は、現在インストールされているaxengineのバージョンにあります。バージョンを確認すると0.1.0がインストールされていますが、このバージョンには既知のバグが含まれています。開発元のAXERA-TECHのGitHubリポジトリでは、このセグメンテーションフォルトの問題がIssue #22として報告されており、バージョン0.1.1で修正されたことがわかっています。
root@m5stack-LLM:# pip show axengine
Name: axengine
Version: 0.1.0
2. axengineのアップデート
問題を解決するためには、axengineライブラリをバージョン0.1.1にアップグレードする必要があります。最新のホイールファイルを公式GitHubリリースページからダウンロードし、pipを使ってインストールすることで、問題が解決します。
新しいバージョンでは内部のメモリ管理が改善され、セグメンテーションフォルトが発生しなくなります。アップデート後は、同じテストプログラムが正常に実行できるようになるはずです。
root@m5stack-LLM:# wget https://github.com/AXERA-TECH/pyaxengine/releases/download/0.1.1rc0/axengine-0.1.1-py3-none-any.whl
root@m5stack-LLM:# pip install axengine-0.1.1-py3-none-any.whl
この問題は公式のGitHubで報告されており、バージョン0.1.1で修正されています: