モデルの接続と開発Models外部でホストされたモデル例: Vertex AI モデルの統合

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

例: Vertex AI モデルの統合

以下のドキュメントは、Google の Vertex AI にホストされているモデルへのカスタム接続のための例となる設定と model adapter を提供します。ユースケースに適しているか確認するために、外部モデル統合の利点 を確認してください。

ステップバイステップのガイドについては、model adapter の作成方法外部ホストモデルへの接続方法 のドキュメントを参照してください。

例: Vertex AI タブular モデル adapter

まず、Code Repositories アプリケーションで model adapter ライブラリを使用して model adapter を公開およびタグ付け します。以下の model adapter は、Vertex AI SDK for Python ↗ とフレームワークを使用して Vertex AI にホストされているモデルへの接続を構成します。以下のコードは Python 3.8.17pandas 1.5.3google-cloud-aiplatform 1.32.0google-auth 2.23.0google-auth-oauthlib 1.1.0 のバージョンでテストされました。

この model adapter は以下の前提を持っています:

  • この model adapter は、このモデルに提供されるデータがタブularであることを前提としています。
  • この model adapter は、入力データを JSON にシリアライズし、このデータをホストされている Vertex AI モデルに送信します。
  • この model adapter は、レスポンスが JSON から pandas データフレームにデシリアライズ可能であることを前提としています。
  • この model adapter は、Vertex AI クライアントを構築するために 4 個の入力を取ります。
    • region_name - 接続構成として提供
    • project_id - 接続構成として提供
    • endpoint_id - 接続構成として提供
    • google_application_credentials - 資格情報として提供
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 import palantir_models as pm import models_api.models_api_executable as executable_api from google.oauth2 import service_account from google.cloud import aiplatform from google.api_core import exceptions import json import pandas as pd import logging from typing import Optional logger = logging.getLogger(__name__) class VertexAITabularAdapter(pm.ExternalModelAdapter): """ :display-name: Vertex AI Tabular Model Adapter :description: Vertex AIモデルのためのデフォルトモデルアダプター。タブラー形式の入力と出力データを想定しています。 """ def __init__(self, project_id, region_name, endpoint_id, google_application_credentials): self.endpoint_id = endpoint_id # google_application_credentialsはGoogleから提供される秘密キーファイルの有効な文字列表現であることが期待されます credentials = service_account.Credentials.from_service_account_info( json.loads(google_application_credentials), scopes=["https://www.googleapis.com/auth/cloud-platform"] ) aiplatform.init(project=project_id, location=region_name, credentials=credentials) @classmethod def init_external(cls, external_context) -> "pm.ExternalModelAdapter": project_id = external_context.connection_config["project_id"] region_name = external_context.connection_config["region_name"] endpoint_id = external_context.connection_config["endpoint_id"] google_application_credentials = external_context.resolved_credentials["google_application_credentials"] return cls( project_id, region_name, endpoint_id, google_application_credentials ) @classmethod def api(cls): inputs = {"df_in": pm.Pandas()} outputs = {"df_out": pm.Pandas()} return inputs, outputs def predict(self, df_in): instances = df_in.to_dict(orient='records') try: endpoint = aiplatform.Endpoint(endpoint_name=self.endpoint_id) except ValueError as error: # エンドポイントオブジェクトの初期化エラー。入力されたendpoint_id、project_id、region_nameを再確認してください。 logger.error("エンドポイントオブジェクトの初期化エラー。入力されたendpoint_id、project_id、region_nameを再確認してください。") raise error try: # モデルからの出力はJSONシリアライズ可能であることが想定されています # 結果が実行者にとって大きすぎる場合、OOMを引き起こす可能性があります prediction_result = endpoint.predict(instances=instances) except exceptions.Forbidden as error: # 推論実行エラー。提供されたgoogle_application_credentialsが十分な権限を持っていない可能性があります。 logger.error("推論実行エラー。提供されたgoogle_application_credentialsが十分な権限を持っていない可能性があります。") raise error except exceptions.BadRequest as error: # 推論実行エラー。入力データフレームを再確認してください。 logger.error("推論実行エラー。入力データフレームを再確認してください。") raise error return pd.json_normalize(prediction_result.predictions)

Vertex AIタブラーモデルの設定

次に、このモデルアダプターを使用し、モデルアダプターに必要な設定と資格情報を提供するために、外部ホストのモデルを設定します。この例では、モデルは us-central1 でホストされていると仮定していますが、これは設定可能です。

上記の VertexAITabularAdapter ではURLは必要ないため空白にしていますが、設定と資格情報のマップは、モデルアダプターで定義された同じキーを使用して完成します。

イーグレスポリシーを選択する

以下では、 us-central1-aiplatform.googleapis.com (ポート443) 用に設定されたイーグレスポリシーを使用しています。

モデリングの目的のアプリケーションでのVertex AIのイーグレスポリシー

モデルアダプターの設定

外部ホストのモデルに接続するダイアログで公開されたモデルアダプターを選択します。

Palantir FoundryのVertex AIのモデルアダプター設定パネル

接続設定の設定

Vertex AIタブラーモデルアダプターの例で必要とされる接続設定を定義します。

このアダプターは、以下の接続設定を必要とします:

  • region_name - モデルがホストされているGoogleのリージョン名。
  • project_id - この外部ホストモデルが所属するプロジェクトの一意の識別子。
  • endpoint_id - 外部ホストモデルの一意の識別子。

Palantir FoundryのVertex AIの接続設定パネル

資格情報設定の設定

Vertex AIタブラーモデルアダプターの例で必要とされる資格情報設定を定義します。

このアダプターは、以下の資格情報設定を必要とします:

  • google_application_credentials - サービスアカウントのプライベートキーファイルの全内容で、サービスアカウントの資格情報を取得するために使用できます。Google Cloud Consoleの資格情報ページ ↗を使用してプライベートキーを作成できます。

Palantir FoundryのVertex AIの資格情報設定パネル

Vertex AIタブラーモデルの使用

Vertex AIモデルが設定されたので、このモデルはライブデプロイメント または Pythonトランスフォームでホストできます。

以下の画像は、ライブデプロイメントでVertex AIモデルに対して行われたクエリの例を示しています。

VertexAITabularAdapterを使用したクエリの例