PyTorch Mobile for iOSがforwardでクラッシュする場合の対処法(Unity)

PyTorchの.ptモデルをLibTorchを使用してiOSで直接使用する場合に、プロジェクトAでは問題なく動作するが、同じ実装をプロジェクトBに組み込むとmodule.hのforwardのところでクラッシュする、という問題に悩まされた。

画像1

問題のプロジェクト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をつくって組み込み直してみたところ、そちらでは動作する。

解決した方法

ここから先は

529字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/