PyTorchのドキュメントが Torch Scripts と呼ばれるものを公開していることがわかりました。しかし、私は知りません:
トーチスクリプトは、PyTorch ジャストインタイムコンパイラ を使用する2つのモードの1つであり、もう1つは トレース です。利点はリンクされたドキュメントで説明されています:
Torch Scriptは、PyTorchコードからシリアライズ可能で最適化可能なモデルを作成する方法です。 Torch Scriptで記述されたコードは、Pythonプロセスから保存して、Python依存関係のないプロセスにロードできます。
上記の引用は、実際にはスクリプトとトレースの両方に当てはまります。そう
具体的には、トーチスクリプトに関して、トレースと比較して、詳細に指定されたPythonのサブセット here に準拠している場合、PyTorchでコンパイルできます。通常のnn.Module
サブクラスをトレースする代わりにTorch Scriptモジュールを記述する方が手間がかかりますが、特にif
ステートメントやfor
ループなどのフロー制御など、トレースに関するいくつかの追加機能が可能になります。トレースでは、このようなフロー制御を「定数」として扱います。つまり、モジュールにif model.training
句があり、training=True
でトレースすると、training
を変更しても、常にこのように動作します変数をFalse
に変更します。
最初の質問に答えるために、モデルをPythonの外部にデプロイする場合はjit
を使用する必要があります。それ以外の場合should追加の開発作業を犠牲にして実行パフォーマンスを向上させたい場合は、jit
を使用します(すべてのモデルがjit
に直接準拠できるわけではないため)。特に、コードがjit
ステートメントなどの一部の機能に依存しているため、コードをトレースのみでif
edできない場合は、トーチスクリプトを使用する必要があります。人間工学を最大限に活用するには、ケースバイケースで 2つを混合 を使用することをお勧めします。
最後に、howを使用する必要がある場合は、すべてのドキュメントとチュートリアルリンクを参照してください。