コンテンツに移動
AI & 機械学習

モデルの共同ホスティングにより Vertex AI 上にデプロイした複数のモデル間でリソース共有を実現

2022年7月21日
https://storage.googleapis.com/gweb-cloudblog-publish/images/1_co-hosting.max-1900x1900.jpg
Google Cloud Japan Team

※この投稿は米国時間 2022 年 7 月 15 日に、Google Cloud blog に投稿されたものの抄訳です。

モデルを Vertex AI 予測サービスにデプロイする際、各モデルはデフォルトで独自の VM にデプロイされます。ホスティングの費用対効果を高めるため、モデルの共同ホスティングの公開プレビュー版を導入しました。これにより、同一の VM で複数のモデルをホストすることができ、メモリとコンピューティング リソースの使用率が向上します。同じ VM にデプロイするモデルの数はモデルのサイズとトラフィック パターンによりますが、この機能は特に、低トラフィックで多くのモデルをデプロイする場合に便利です。

デプロイ リソースプールについて

共同ホスティング モデルのサポートには、モデルをグループ化して VM 内でリソースを共有するという、デプロイ リソースプールの概念が導入されています。エンドポイントを共有している複数のモデルが VM を共有できるだけでなく、異なるエンドポイントにデプロイされている場合でも VM の共有が可能です。

たとえば、次の図で示すように 4 つのモデルと 2 つのエンドポイントがあるとします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_co-hosting.max-1900x1900.jpg

Model_AModel_BModel_C はすべて Endpoint_1 にデプロイされており、モデル間でトラフィックを分割しています。Model_DEndpoint_2 にデプロイされており、このエンドポイントのトラフィックをすべて受信します。

それぞれのモデルを異なる VM に割り当てる代わりに、Model_AModel_B をグループ化して 1 つの VM を共有させ、DeploymentResourcePool_X に組み入れることができます。また、同じエンドポイントを使っていないモデルをグループ化することも可能なため、Model_CModel_D の両方を DeploymentResourcePool_Y でホストできます。

今回の最初のリリースでは、同じリソースプール内のモデルは、同一のコンテナ イメージと Vertex AI のビルド済み TensorFlow 予測コンテナのバージョンを使用している必要があることにご注意ください。その他のモデルのフレームワークとカスタム コンテナはまだサポートされていません。

Vertex AI Prediction でモデルを共同ホスティングする

わずか数ステップでモデルの共同ホスティングを設定できます。主な違いは、まず DeploymentResourcePool を作成してから、そのプール内にモデルをデプロイすることです。

ステップ 1: DeploymentResourcePool を作成する

次のコマンドを使用して、DeploymentResourcePool を作成します。最初のモデルがデプロイされるまで、このリソースに関連する費用は一切かかりません。

読み込んでいます...

ステップ 2: モデルを作成する

モデルは、カスタム トレーニング ジョブの最後に、Vertex AI Model Registry にインポートできます。モデルのアーティファクトが Cloud Storage バケットに保存されている場合は、個別にアップロードすることもできます。モデルのアップロードは UI を使うか、以下のコマンドを使って SDK でも行えます。

読み込んでいます...

モデルのアップロードが完了すると、モデル レジストリに表示されます。モデルはまだデプロイされていないため、デプロイのステータスは空白であることに注意してください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_co-hosting.max-1200x1200.jpg

ステップ 3: エンドポイントを作成する

次に、SDK または UI を使ってエンドポイントを作成します。これは、モデルのエンドポイントへのデプロイとは異なることに注意してください。

endpoint = aiplatform.Endpoint.create('cohost-endpoint')

エンドポイントが作成されると、エンドポイントがコンソールに表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_co-hosting.max-1000x1000.jpg

ステップ 4: デプロイ リソースプールにモデルをデプロイする

予測を取得するための最後のステップとして、作成した DeploymentResourcePool 内にモデルをデプロイします。

読み込んでいます...

モデルがデプロイされると、コンソールに準備完了として表示されます。共同ホスティングをするには、作成済みのエンドポイントまたは新規のエンドポイントを使用して、追加のモデルを同じ DeploymentResourcePool にデプロイします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_co-hosting.max-900x900.jpg

ステップ 5: 予測を取得する

モデルのデプロイが完了したら、これまでと同じ方法でエンドポイントを呼び出せます。

x_test= ['素晴らしい映画でした。まれに見る最高の演技で、とても良いキャスティングでした。友だちにもこの映画をすすめます!']

endpoint.predict(instances=x_test)

次のステップ

これで、同一の VM でモデルを共同ホストする方法の基本がわかりました。エンドツーエンドの例は、こちらの Codelab をご覧ください。詳細についてはドキュメントを参照してください。次は、ご自分のモデルをデプロイしてみましょう。

- デベロッパー アドボケイト Nikita Namjoshi

投稿先