内容紹介:
2020 年 4 月のリリース以来、TorchServe は 2 年以上の開発を経て、より成熟し、安定したものになりました。この記事では、TorchServe について包括的に紹介します。
この記事は最初に WeChat 公開アカウントから公開されました。PyTorch 開発者コミュニティ
PyTorch を使用したより実践的なモデル展開の実践については、次のサイトを参照してください。 オープンベイズ.com 得る
TorchServe は、実稼働環境にモデルをデプロイするための PyTorch の推奨ソリューションです。これは、HTTP または HTTPS API を使用してモデルをカプセル化する、高性能で拡張可能なツールです。
TorchServe のフロントエンドは Java で実装されており、展開モデルへのワーカーの割り当て、クライアントとサーバー間の通信の責任など、さまざまなタスクを処理できます。その Python バックエンドは主に推論サービスの処理を担当します。
図 1: トーチサーブのパフォーマンス チューニング プロセスの概要
さらに、複数のモデルの提供と AB テストのバージョン管理、動的バッチ処理、ロギング、メトリクスもサポートします。4 つのパブリック API には次のものが含まれます。
* 推論 API:デフォルトでローカルホスト経由でアクセスできるポート 8080 をリッスンし、TorchServe 構成で構成でき、モデルからの予測の取得をサポートします。
* 説明 API:内部で Captum を使用して、デプロイ中のモデルに指示を提供し、ポート 8080 でリッスンします。
* 管理API:登録または登録解除を許可し、モデルを説明します。また、ユーザーはモデルをデプロイするワーカーの数を増減することもできます。
* メトリクスAPI:デフォルトではポート 8082 をリッスンし、ユーザーがデプロイされているモデルを監視できるようにします。
TorchServe は、バッチ推論と展開モデルの複数のワーカーをサポートしています。ユーザーがモデルの展開を拡張し、ピーク時のトラフィックを処理できるようにします。この拡張は、管理 API と構成ファイルの設定を通じて実現できます。さらに、メトリック API は、デフォルトおよびカスタム メトリックを通じてモデルのデプロイメントを監視できます。
リクエストを受信するためのキューの長さ、入力バッチの最大待機時間、その他のプロパティなどのその他の詳細設定。すべては設定ファイルを通じて設定できます (起動時にTorchServeに渡すことができます)。
1.TorchServe、モデル アーカイバ、およびその他の依存関係をインストールします。
2. 適切なデフォルト ハンドラー (画像分類など) を選択するか、カスタム ハンドラーを作成します。
3.Torcharchive を使用してモデル アーティファクトとハンドラーを 1 つにパッケージ化する .mar ファイルを作成してモデル ストアに置きます
4. モデルのデプロイを開始する
5. 推論を実行する
トーチサーブ プロジェクトのアドレス:
TorchServe バックエンドは、ハンドラーを使用してモデルをロードし、受信したデータを前処理し、推論を実行し、応答を後処理します。 TorchServe のハンドラーは、 PPythonスクリプト、すべてのモデルの初期化、前処理、推論、後処理ロジックが含まれています。
また、TorchServe は、画像分類、セグメンテーション、オブジェクト検出、テキスト分類などのアプリケーションに使用できる、すぐに使用できるハンドラーも提供します。さらに、デフォルトのハンドラーが現在のケースをサポートしていない場合に備えて、カスタム ハンドラーもサポートします。
カスタム ハンドラーは優れた柔軟性を提供します。これにより、TorchServe がマルチフレームワーク サービス ツールになる可能性があります。カスタム ハンドラーを使用すると、カスタム ロジックでモデルを初期化できるほか、このモデルが他のフレームワーク (ONNX など) からモデルをロードできるようになります。
TorchServe ハンドラーは 4 つの主要な関数で構成されます。機能 、 初期化する 、 推論 そして 前処理、各関数はリストを返します。
次のコード スニペットは、カスタム ハンドラーの例です。カスタム ハンドラーは、TorchServe の BaseHandler を継承します。どの main 関数もオーバーライドできます。この例では、ハンドラーを使用して Detectron2 モデルをロードし、図形検出の問題を解決する方法を示します。モデルはTorchscriptにエクスポートされて使用されています mod.half() FP16 推論を実行します。
編集
モデルを実稼働環境にデプロイする場合は、そのパフォーマンスの監視に重点を置く必要があります。 TorchServe はシステムレベルのメトリクスを定期的に収集し、カスタム メトリクスの追加を可能にします。
システムレベルのメトリクスには、CPU 使用率、ホスト上の利用可能および使用済みのディスク容量とメモリ、さまざまな応答コードを持つリクエストの数が含まれます。(例: 200 ~ 300、400 ~ 500、および 500 以上)。カスタム メトリックはカスタム メトリック API に追加できます。
カスタムメトリクスAPI:
TorchServe は、これら 2 つのメトリクス セットを異なるログ ファイルに記録します。デフォルトでは、メトリクスは次の場所で収集されます。
システムメトリクス: log_directory/ts_metrics.log
カスタム指標:ログディレクトリ/model_metrics.log
TorchServe のメトリクス API は、デフォルトでポート 8082 をリッスンし、ユーザーが収集されたメトリクスをクエリおよび監視できるようにします。デフォルトのメトリクス エンドポイントは、Prometheus 形式のメトリクスを返します。 CURL リクエストを使用してメトリクスをクエリしたり、Prometheus Server をエンドポイントにポイントして Grafana for Dashboard を使用したりできます。
curl を使用してメトリクスをリクエストします。
curl http://127.0.0.1:8082/metrics
mtail を使用してログに記録されたメトリクスを Prometheus にエクスポートする例:https://github.com/google/mtail
バッシュボードでこれらのメトリクスを追跡することにより、オフライン ベンチマークの実行中に時々現れる、または発見が難しいパフォーマンスの低下を監視できます。
以上がTorchServeについての説明です。次のセクションでは、特定のケースを使用して、運用環境へのモデルの展開に影響を与える特定の要因と、TorchServe を使用してアニメーション描画アプリを調整する方法について説明します。
さらに詳しい学習教材や実践的なチュートリアルについては、公式アカウントをフォローしてください。PyTorch 開発者コミュニティ。実際のチュートリアルを視聴するには、次のサイトにアクセスしてください。 オープンベイズ.com 実践的な操作。