MRが楽しい

MRやVRについて学習したことを書き残す

Unity AIのドキュメントを読む その62(テンソルによるメモリ管理)

本日はUnityの技術調査枠です。
Unity AIのドキュメントを読みながら実際に操作を試して記事に残します。

Unity AI

以下のUnity AIのドキュメントを試しながら実行時のキャプチャをしていきます。
docs.unity3d.com

テンソルによるメモリ管理

推論エンジンを使用する場合、インスタンス化するワーカーとテンソルに対してDisposeを呼び出すことが重要です。
さらにReadbackAndCloneメソッドから返されるクローン出力テンソルに対してもDisposeを呼び出すようにしてください。

Note

グラフィックス・プロセッシング・ユニット (GPU) リソースを解放するにはDisposeを呼び出す必要があります。

void OnDestroy()
{
    worker?.Dispose();

    // 配列として渡された複数の入力を持つモデルを想定
    foreach (var input in inputs)
    {
        input.Dispose();
    }
}

PeekOutputメソッドを使用してワーカーからテンソルのハンドルを取得した場合、メモリアロケータはそのメモリの管理を継続します。
Disposeメソッドを呼び出す必要はありません。

計算バッファサイズの制限

推論エンジンでテンソルを扱う場合、計算バッファのサイズには一定の制限があります。
これらの制限はハードウェアやプラットフォームの仕様によって異なる場合がありますが、以下の一般的なガイドラインが適用されます。

テンソルの最大サイズ

内部インデックスの制限により、テンソルの要素数は2の31乗以下にする必要があります。

補助リソースの割り当て

一部の演算子では追加の補助リソースが必要になる場合があり、特定のシナリオではテンソルの最大許容サイズがさらに小さくなる可能性があります。
これらのリソースは入力テンソルのサイズと演算の種類によって異なります。