Unity Sentisとは?
Unity SentisはUnityで機械学習の推論をするためのフレームワークです。
Unity SentisはUnity 6と共にUnite 2024で正式リリースされる予定となっています。
Unity Sentis 1.5.0のリリースと大きな変更点
Unity Sentis 1.5.0がリリースされました。
メインスレッドのCPUパフォーマンスの向上、依存関係の見直しによるビルドサイズの縮小などが含まれています。
詳細な変更は以下のChangeLogを参照してください。
ここでなぜかChangeLogに書かれていない2つの大きな変更点について紹介します。
Unity Editorのバージョンについて
Unity Sentis 1.4.0まではUnity 2021.3 LTS以降をサポートしていました。
今回リリースされたUnity Sentis 1.5.0からはUnity 2023.2 (Unity 6)以降が必要になります。
ChangeLogには書かれていませんが、Manualの方にはちょろっと書かれています。
Unity Editorの要求バージョンが変更されるのは大きな変更なような気がしますが、一応ドキュメントに書かれているだけマシだと考えることにします。
ONNX変換クラスについて
Unity Sentisは1.4.0までアプリケーションの実行時にランタイムでONNXを読み込み推論することができました。 具体的にはONNXConverterクラスでONNXフォーマットをSentisフォーマットにシリアライズして利用していました。
Unity Sentis 1.5.0からONNXConverterクラスはランタイムで提供されなくなりました。 今後はPyTorchから学習済みの重みをSentisフォーマット(.sentis)のファイルに直接エクスポートするライブラリが提供される見込みです。 アプリケーションの実行時にランタイムでSentisフォーマット(.sentis)のファイルを読み込む機能はすでに提供されています。
ちなみに、ONNXからSentisにシリアライズする機能はランタイムでは利用できませんが、エディタ拡張としてUnity Editorからは引き続き利用できます。 Unity EditorでONNXをインポートすると自動的にSentisフォーマットに変換されます。
ただしONNXからSentisにシリアライズするだけが目的の場合、Unity Editorをインストールしてプロジェクトを作成、Unity Sentisパッケージを導入するといった準備が必要であり手間が掛かります。
シリアライズツールのリリース
SentisフォーマットはUnity Sentis 1.3.0からUnity Sentis 1.4.0の間で仕様が変更されました。 Unity Sentis 1.4.0からはFlatBufferでシリアルライズされるようになり、下位互換性が大幅に向上すると説明されています。 現状のフォーマットはUnity Sentis 1.4.0以降で利用可能であり、今後も継続して利用できるようです。
そこで、Unity Sentis 1.4.0ではまだONNXConverterクラスが提供されていることを利用して、ONNXフォーマットからSentisフォーマットにシリアライズするツールを作成しました。
このツールを利用することで、Unity EditorをインストールしていなくてもONNXフォーマットをSentisフォーマットにシリアライズすることができます。
上記の通り、このツールでシリアライズしたSentisフォーマットのファイルは今後も継続して利用できます。
ツールは以下のリポジトリのリリースページからダウンロードして利用することができます。
使い方は簡単でONNXフォーマットのファイルのパスを与えて実行するだけです。
Sentisフォーマットにシリアライズされたファイル(*.sentis)が出力されます。
onnx2sentis.exe ./model.onnx
まとめ
Unity Sentis 1.5.0がリリースされました。いよいよ正式リリースが近づいてきましたね。
また、Unity EditorをインストールしていなくてもONNXフォーマットをSentisフォーマットにシリアライズするツールをリリースしました。
正直今回の変更はあまり良い変更だとは思いませんがいたしかたありません。今後のモデルのサポートや推論のパフォーマンスが改善されていくことを期待します。
ChangeLogはちゃんと書こう!