PyTorch Mobile for iOSがforwardでクラッシュする場合の対処法(Unity)
PyTorchの.ptモデルをLibTorchを使用してiOSで直接使用する場合に、プロジェクトAでは問題なく動作するが、同じ実装をプロジェクトBに組み込むとmodule.hのforwardのところでクラッシュする、という問題に悩まされた。
問題のプロジェクトBはUnityから生成したもの。あれこれ試行錯誤してみたがイマイチ効かない。
たとえば公式ページに
The last step is to add a single line of C++ code before running forward. This is because by default JIT will do some optimizations on operators (fusion for example), which might break the consistency with the ops we dumped from the model.
torch::jit::GraphOptimizerEnabledGuard guard(false);
という記述があったのでやってみたが効果なし。
C++まわりのビルド設定が怪しいということでそのあたりの設定やリンカオプションを徹底的にあわせてみたが解決せず。
試しにまっさらのプロジェクトCをつくって組み込み直してみたところ、そちらでは動作する。
解決した方法
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/