1. PyTorch エコシステム
PyTorch は、研究環境と運用環境を処理するために 2 つの異なるモードをサポートしています。
2 つのモード:
PyTorch には、eager モードとグラフ モード (またはスクリプト モード) という 2 つの主流モードがあります。
E モードは使いやすさと柔軟性に重点を置いており、主にモデルの構築に使用され、デバッグやアイデアの検証が容易で、研究者がモデルを変更するのに適しています。
G モード: パフォーマンスに重点を置き、実際のエンジニアリング展開における生産およびアプリケーションに適しています。(以前のスクリプト モードやグラフは実稼働環境での展開を改善するためのものです)
2.トーチスクリプトモード
PyTorch1.0 以降は、TorchScript を通じてシリアル化された最適化可能なモデルを作成できるようになりました。Python コードを TorchScript コードに変換し、対応するモデルをエクスポートするには、トレースとスクリプトの 2 つの方法があります。これは、継続的に最適化することができ、同時に C++ によって呼び出すことができ、最終的に運用環境 (マルチスレッドを考慮したもの) をサポートします。実行とパフォーマンス上の理由から、一般的な Python コードはデプロイメントには適していません)。
TorchScript は、PyTorch モデルをシリアル化し、さまざまな環境で実行できるようにする PyTorch の機能です。これにより、トレーニング済みの PyTorch モデルを保存し、Python を使用しない環境や、GPU、FPGA、モバイル デバイスなどの別のハードウェアにロードする方法が提供されます。
これには PyTorch に比べていくつかの利点があります。
-
移植性: TorchScript を使用すると、プラットフォームや言語に関係なく、TorchScript ランタイムをサポートする任意の環境で PyTorch モデルを実行できます。
-
パフォーマンス:TorchScript は、操作を融合し、未使用の操作を排除して実行を高速化することにより、PyTorch モデルを最適化できます。これにより、特に携帯電話などのリソースに制約のあるデバイスの速度が大幅に向上します。
-
セキュリティ: TorchScript モデルをデプロイすることで、PyTorch コードとモデルをリバース エンジニアリングや改ざんから保護できます。
-
導入の容易さ:TorchScript を使用すると、Python 環境を必要とせずに、PyTorch モデルを運用環境に簡単に導入できます。
主に運用環境での使用例に焦点を当てており、このセクションでは PyTorch (または Lightning) と比べた TorchScript の利点について説明し、変換を行う方法を示します。
2.1 torch.jit.trace()
2.2 torch.jit.script()
2.3
TorchScript をより包括的に理解するには、このチュートリアルを読むことをお勧めします。
to_torchscript メソッドを呼び出すことで、Lightning モジュールを TorchScript に簡単に変換できます。
script = model.to_torchscript()
torch.jit.save(script, "torchscript_model.pt")
いくつかのテストの結果、TorchScript を使用した GPU での推論時間は、PyTorch Lightning の推論時間よりも 2 倍低いことがわかりました。ただし、これは小さなバッチ (テストによると 1 つまたは 2 つ) でのみ発生します。
PyTorch は、TorchScript を通じて研究から生産までの統一されたフレームワークを作成することを目的としています。TorchScript は、PyTorch モジュールを入力として受け取り、本番環境に適した形式に変換します。
これにより、モデルがより高速に実行され、Python ランタイムから独立します。