オンライン推論に Private Service Connect に基づく専用プライベート エンドポイントを使用する

このページの情報は、カスタム トレーニング モデルと AutoML モデルに適用されます。Model Garden のデプロイについては、Model Garden でモデルを使用するをご覧ください。

Private Service Connect を使用すると、パブリック IP アドレス、パブリック インターネット アクセス、明示的にピアリングされた内部 IP アドレス範囲を必要とせずに、カスタム トレーニングされた Gemini Enterprise Agent Platform モデルをデプロイし、複数のコンシューマー プロジェクトと VPC ネットワークにオンライン推論を安全に提供できます。

オンライン推論のユースケースで、次の要件がある場合は、Private Service Connect の使用をおすすめします。

  • プライベートかつセキュアな接続を必須にする
  • 低レイテンシを必要とする
  • 一般公開する必要はありません

Private Service Connect は、VPC ネットワークの転送ルールを使用して、Agent Platform オンライン推論サービスにトラフィックを単方向に送信します。転送ルールは、Agent Platform サービスを VPC ネットワークに公開するサービス アタッチメントに接続します。詳細については、Private Service Connect を介した Agent Platform サービスへのアクセスについてをご覧ください。Private Service Connect の設定の詳細については、Virtual Private Cloud(VPC)ドキュメントの Private Service Connect の概要をご覧ください。

専用プライベート エンドポイントは、HTTP と gRPC の両方の通信プロトコルをサポートしています。gRPC リクエストの場合、エンドポイントを適切に識別するには、x-vertex-ai-endpoint-id ヘッダーを含める必要があります。次の API がサポートされています。

  • Predict
  • RawPredict
  • StreamRawPredict
  • Chat Completion(Model Garden のみ)

Agent Platform SDK for Python を使用して、専用のプライベート エンドポイントにオンライン推論リクエストを送信できます。詳細については、オンライン推論を取得するをご覧ください。

必要なロール

Private Service Connect エンドポイントの作成に必要な権限を取得するには、プロジェクトに対する Agent Platform ユーザー (roles/aiplatform.user)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、Private Service Connect エンドポイントを作成するために必要な aiplatform.endpoints.create 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

Gemini Enterprise Agent Platform のロールと権限の詳細については、IAM を使用した Agent Platform のアクセス制御と Gemini Enterprise Agent Platform の IAM 権限をご覧ください。

オンライン推論のエンドポイントを作成する

Private Service Connect が有効なオンライン推論のエンドポイントを作成するには、次のいずれかの方法を使用します。

Private Service Connect エンドポイントのデフォルトのリクエスト タイムアウトは 10 分です。Agent Platform SDK for Python では、次の例に示すように、必要に応じて新しい inference_timeout 値を指定して、別のリクエスト タイムアウトを指定できます。タイムアウトの最大値は 3,600 秒(1 時間)です。

コンソール

  1. Cloud de Confiance コンソールの Agent Platform で、[オンライン予測] ページに移動します。

    [オンライン予測] に移動

  2. [作成] をクリックします。

  3. エンドポイントの表示名を指定します。

  4. [非公開] を選択します。

  5. [Private Service Connect] を選択します。

  6. [プロジェクト ID を選択] をクリックします。

  7. エンドポイントの許可リストに追加するプロジェクトを選択します。

  8. [続行] をクリックします。

  9. モデルの仕様を選択します。詳細については、エンドポイントにモデルをデプロイするをご覧ください。

  10. [作成] をクリックします。エンドポイントを作成してモデルをデプロイします。

  11. レスポンスのエンドポイント ID をメモします。

API

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • VERTEX_AI_PROJECT_ID: オンライン予測エンドポイントを作成する Cloud de Confiance by S3NS プロジェクトの ID。
  • REGION: Gemini Enterprise Agent Platform を使用しているリージョン。
  • VERTEX_AI_ENDPOINT_NAME: オンライン予測エンドポイントの表示名。
  • ALLOWED_PROJECTS: Cloud de Confiance プロジェクト ID のカンマ区切りリスト。各 ID は引用符で囲みます(例: ["PROJECTID1", "PROJECTID2"])。プロジェクトがこのリストに含まれていない場合、そのプロジェクトから Agent Platform エンドポイントに予測リクエストを送信することはできません。このリストに VERTEX_AI_PROJECT_ID を含めて、同じプロジェクトからエンドポイントを呼び出せるようにします。
  • INFERENCE_TIMEOUT_SECS: (省略可)省略可能な inferenceTimeout フィールドの秒数。

HTTP メソッドと URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

リクエストの本文(JSON):

{
  "displayName": "VERTEX_AI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  },
  "clientConnectionConfig": {
    "inferenceTimeout": "INFERENCE_TIMEOUT_SECSs"
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
ENDPOINT_ID をメモしておいてください。

Python

このサンプルを試す前に、クライアント ライブラリを使用した Agent Platform クイックスタートの Python の手順に沿って設定を行ってください。

Agent Platform で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

次のように置き換えます。

  • VERTEX_AI_PROJECT_ID: オンライン推論のエンドポイントを作成する Cloud de Confiance by S3NS プロジェクトの ID。
  • REGION: Gemini Enterprise Agent Platform を使用しているリージョン
  • VERTEX_AI_ENDPOINT_NAME: オンライン推論のエンドポイントの表示名。
  • ALLOWED_PROJECTS: Cloud de Confianceプロジェクト ID のカンマ区切りリスト。各プロジェクト ID は引用符で囲みます。例: ["PROJECTID1", "PROJECTID2"]プロジェクトがこのリストに含まれていない場合、そのプロジェクトから Agent Platform エンドポイントに推論リクエストを送信することはできません。このリストに VERTEX_AI_PROJECT_ID を追加して、同じプロジェクトからエンドポイントを呼び出せるようにします。
  • INFERENCE_TIMEOUT_SECS:(省略可)省略可能な inference_timeout 値の秒数。
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
INFERENCE_TIMEOUT_SECS = "INFERENCE_TIMEOUT_SECS"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
    project_allowlist=["ALLOWED_PROJECTS"],
    ),
inference_timeout=INFERENCE_TIMEOUT_SECS,
)

返されたエンドポイント URI の末尾にある ENDPOINT_ID をメモします。

INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')

PSC 自動化を使用してオンライン推論のエンドポイントを作成する

オンライン推論は サービス接続の自動化と統合されているため、PSC の自動化を使用して推論エンドポイントを構成できます。これにより PSC エンドポイントが自動的に作成されるため、プロセスが簡素化されます。これは、プロジェクト内で転送ルールなどのネットワーク リソースを作成する権限がない ML デベロッパーにとって特に便利です。

まず、ネットワーク管理者がサービス接続ポリシーを確立する必要があります。このポリシーは、プロジェクトとネットワークごとに 1 回だけ使う構成です。これにより、Gemini Enterprise Agent Platform(サービスクラス gcp-vertexai)はプロジェクトとネットワーク内で PSC エンドポイントを生成できます。

次に、PSC 自動化の構成を使用してエンドポイントを作成し、モデルをデプロイします。デプロイが完了すると、関連する PSC エンドポイント情報がエンドポイント内でアクセス可能になります。

制限事項

  • PSC 自動化の構成には、リージョンあたり 500 個のエンドポイントの上限が適用されます。
  • モデルがデプロイされていない場合、またはエンドポイントにデプロイ中の場合は、PSC 自動化の結果は削除されます。クリーンアップとそれに続くモデルによって、新しい自動化の結果に個別の IP アドレスと転送ルールが含まれます。

サービス接続ポリシーを作成する

サービス接続ポリシーを作成するには、ネットワーク管理者である必要があります。Agent Platform がネットワークに PSC エンドポイントを作成できるようにするには、サービス接続ポリシーが必要です。有効なポリシーがない場合、自動化は CONNECTION_POLICY_MISSING エラーで失敗します。

  1. サービス接続ポリシーを作成します。

    • POLICY_NAME: ユーザーが指定したポリシーの名前。
    • PROJECT_ID: Gemini Enterprise Agent Platform リソースを作成するサービス プロジェクトの ID。

    • VPC_PROJECT: クライアント VPC が配置されているプロジェクト ID。単一 VPC 設定の場合、これは $PROJECT と同じです。共有 VPC 設定の場合、これは VPC ホスト プロジェクトです。

    • NETWORK_NAME: デプロイ先のネットワークの名前。

    • REGION: ネットワークのリージョン。

    • PSC_SUBNETS: 使用する Private Service Connect サブネット。

    gcloud network-connectivity service-connection-policies create POLICY_NAME \
        --project=VPC_PROJECT \
        --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
        --service-class=gcp-vertexai --region=REGION --subnets=PSC_SUBNETS
    
  2. サービス接続ポリシーを確認します。

    gcloud network-connectivity service-connection-policies list \
        --project=VPC_PROJECT --region=REGION

    単一 VPC 設定の場合、サンプルは次のようになります。

        gcloud network-connectivity service-connection-policies create test-policy \
            --network=default \
            --project=YOUR_PROJECT_ID \
            --region=us-central1 \
            --service-class=gcp-vertexai \
            --subnets=default \
            --psc-connection-limit=500 \
            --description=test

PSC 自動化の構成を使用してオンライン推論のエンドポイントを作成する

PSCAutomationConfig で、projectId が許可リストに含まれていることを確認します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • REGION: Agent Platform を使用しているリージョン。
  • VERTEX_AI_PROJECT_ID: オンライン推論のエンドポイントを作成する Cloud de Confiance by S3NS プロジェクトの ID。
  • VERTEX_AI_ENDPOINT_NAME: オンライン予測エンドポイントの表示名。
  • NETWORK_NAME: プロジェクト番号ではなく、プロジェクト ID を含む完全なリソース名。

HTTP メソッドと URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

リクエストの本文(JSON):

{
  {
    displayName: "VERTEX_AI_ENDPOINT_NAME",
    privateServiceConnectConfig: {
      enablePrivateServiceConnect: true,
      projectAllowlist: ["VERTEX_AI_PROJECT_ID"],
      pscAutomationConfigs: [
        { "project_id": "VERTEX_AI_PROJECT_ID", "network": "projects/VERTEX_AI_PROJECT_ID/global/networks/NETWORK_NAME" },
      ],
    },
  },

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
ENDPOINT_ID をメモしておいてください。

Python

このサンプルを試す前に、クライアント ライブラリを使用した Agent Platform クイックスタートの Python の手順に沿って設定を行ってください。

Agent Platform で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境変数を s3nsapis.fr に設定します。

次のように置き換えます。

  • VERTEX_AI_PROJECT_ID: オンライン推論のエンドポイントを作成する Cloud de Confiance by S3NS プロジェクトの ID。
  • REGION: Gemini Enterprise Agent Platform を使用しているリージョン
  • VERTEX_AI_ENDPOINT_NAME: オンライン推論のエンドポイントの表示名。
  • NETWORK_NAME: プロジェクト番号ではなく、プロジェクト ID を含む完全なリソース名。
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

config =
aiplatform.compat.types.service_networking.PrivateServiceConnectConfig(
        enable_private_service_connect=True,
        project_allowlist="VERTEX_AI_PROJECT_ID"
        psc_automation_configs=[
            aiplatform.compat.types.service_networking.PSCAutomationConfig(
                project_id="VERTEX_AI_PROJECT_ID"
network=projects/"VERTEX_AI_PROJECT_ID"/global/networks/"NETWORK_NAME",
            )
        ]
    )
psc_endpoint = aiplatform.PrivateEndpoint.create(
     display_name="VERTEX_AI_ENDPOINT_NAME"
     private_service_connect_config=config,
)

モデルをデプロイする

Private Service Connect を有効にしてオンライン推論のエンドポイントを作成した後は、エンドポイントにモデルをデプロイするの手順に沿って、モデルをデプロイします。

PSC エンドポイントを手動で作成する

VPC ネットワークをオンライン推論エンドポイントに手動で接続するには、サービス アタッチメント URI を取得し、転送ルールを作成して、内部 IP アドレスを取得する必要があります。

サービス アタッチメントの URI を取得する

モデルをデプロイすると、オンライン推論のエンドポイントのサービス アタッチメントが作成されます。このサービス アタッチメントは、VPC ネットワークに公開されている Agent Platform オンライン推論サービスを表します。gcloud ai endpoints describe コマンドを実行して、サービス アタッチメント URI を取得します。

  1. エンドポイントの詳細の serviceAttachment 値のみを一覧取得します。

    gcloud ai endpoints describe ENDPOINT_ID \
    --project=VERTEX_AI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    次のように置き換えます。

    • ENDPOINT_ID: オンライン推論のエンドポイントの ID
    • VERTEX_AI_PROJECT_ID: オンライン推論のエンドポイントを作成した Cloud de Confiance by S3NS プロジェクトの ID
    • REGION: このリクエストのリージョン

    出力は次のようになります。

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. serviceAttachment フィールドの文字列全体をメモします。これはサービス アタッチメント URI です。

転送ルールの作成

内部 IP アドレスを予約し、予約したアドレスで転送ルールを作成できます。転送ルールを作成するには、前のステップで取得したサービス アタッチメント URI が必要です。

  1. 転送ルールの内部 IP アドレスを予約するには、gcloud compute addresses create コマンドを使用します。

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    次のように置き換えます。

    • ADDRESS_NAME: 内部 IP アドレスの名前。
    • VPC_PROJECT_ID: VPC ネットワークを含む Cloud de Confiance プロジェクトの ID。オンライン推論のエンドポイントと Private Service Connect 転送ルールが同じプロジェクトでホストされている場合は、このパラメータに VERTEX_AI_PROJECT_ID を使用します。
    • REGION: Private Service Connect 転送ルールを作成する Cloud de Confiance リージョン
    • SUBNETWORK: IP アドレスを含む VPC サブネットの名前
    • INTERNAL_IP_ADDRESS: 予約する内部 IP アドレス。このパラメータは省略可能です。

      • このパラメータを指定する場合、IP アドレスはサブネットのプライマリ IP アドレス範囲内にする必要があります。IP アドレスには、RFC 1918 アドレス、または RFC 以外の範囲を持つサブネットを指定できます。
      • このパラメータを省略すると、内部 IP アドレスが自動的に割り振られます。
      • 詳細については、新しい静的内部 IPv4 または IPv6 アドレスを予約するをご覧ください。
  2. IP アドレスが予約されていることを確認するには、gcloud compute addresses list コマンドを使用します。

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    レスポンスで、IP アドレスに RESERVED ステータスが表示されていることを確認します。

  3. 転送ルールを作成してオンライン推論サービス アタッチメントにポイントするには、gcloud compute forwarding-rules create コマンドを使用します。

    gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    次のように置き換えます。

    • PSC_FORWARDING_RULE_NAME: 転送ルールの名前
    • VPC_NETWORK_NAME: エンドポイントを作成する VPC ネットワークの名前
    • SERVICE_ATTACHMENT_URI: 先ほどメモしたサービス アタッチメント
  4. サービス アタッチメントがエンドポイントを受け入れることを確認するには、gcloud compute forwarding-rules describe コマンドを使用します。

    gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    レスポンスで、pscConnectionStatus フィールドに ACCEPTED ステータスが表示されていることを確認します。

内部 IP アドレスを取得する

転送ルールの作成時に INTERNAL_IP_ADDRESS の値を指定しなかった場合は、gcloud compute forwarding-rules describe コマンドを使用して、自動的に割り振られたアドレスを取得できます。

gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

次のように置き換えます。

  • VERTEX_AI_PROJECT_ID: プロジェクト ID
  • REGION: このリクエストのリージョン名

省略可: PSC 自動化の結果から PSC のエンドポイントを取得する

生成された IP アドレスと転送ルールは、推論エンドポイントから取得できます。次に例を示します。

"privateServiceConnectConfig": {
  "enablePrivateServiceConnect": true,
  "projectAllowlist": [
    "your-project-id",
  ],
  "pscAutomationConfigs": [
    {
      "projectId": "your-project-id",
      "network": "projects/your-project-id/global/networks/default",
      "ipAddress": "10.128.15.209",
      "forwardingRule": "https://www.googleapis.com/compute/v1/projects/your-project-id/regions/us-central1/forwardingRules/sca-auto-fr-47b0d6a4-eaff-444b-95e6-e4dc1d10101e",
      "state": "PSC_AUTOMATION_STATE_SUCCESSFUL"
    },
  ]
}

エラー処理の詳細を以下に示します。

  • 自動化の失敗は、モデルのデプロイの結果に影響しません。
  • オペレーションの成功または失敗は、状態に表示されます。
    • 成功すると、IP アドレスと転送ルールが表示されます。
    • 成功しなかった場合は、エラー メッセージが表示されます。
  • モデルがデプロイされていない場合、またはエンドポイントにデプロイ中の場合、自動化の構成は削除されます。これにより、モデルが後でデプロイされると IP アドレスと転送ルールが変更されます。
  • 失敗した自動化は復元されません。失敗した場合は、PSC エンドポイントを手動で作成できます。PSC エンドポイントを手動で作成するをご覧ください。

オンライン推論を取得する

Private Service Connect を使用してエンドポイントからオンライン推論を取得する方法は、公開エンドポイントからオンライン推論を取得する方法と似ていますが、次の点に注意してください。

  • リクエストは、オンライン推論のエンドポイントの作成時に projectAllowlist で指定されたプロジェクトから送信する必要があります。
  • グローバル アクセスが有効になっていない場合は、同じリージョンからリクエストを送信する必要があります。
  • ポート 443(自己署名証明書を使用した TLS)とポート 80(TLS なし)の 2 つのポートが開いています。どちらのポートも HTTP と gRPC をサポートしています。すべてのトラフィックはプライベート ネットワーク上に留まり、公共のインターネットを経由することはありません。
  • Gemini Enterprise Agent Platform オンライン推論から取得した自己署名証明書で HTTPS を使用するか、独自の自己署名証明書をデプロイすることをおすすめします。
  • 推論を取得するには、内部 IP アドレスの DNS レコードが作成されていない限り、エンドポイントの静的 IP アドレスを使用して接続を確立する必要があります。たとえば、predict リクエストを次のエンドポイントに送信します。

    http://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

    INTERNAL_IP_ADDRESS は、前に予約した内部 IP アドレスに置き換えます。

  • gRPC リクエストの場合: gRPC リクエストのエンドポイントを適切に識別するには、ヘッダー x-vertex-ai-endpoint-id を含める必要があります。これが必要な理由は、gRPC 通信のリクエストパス内でエンドポイント情報が伝達されないためです。

内部 IP アドレスの DNS レコードを作成する

内部 IP アドレスを指定することを必要とせずにエンドポイントからオンライン推論を取得できるように、DNS レコードを作成することをおすすめします。

詳細については、DNS を構成するその他の方法をご覧ください。

  1. gcloud dns managed-zones create コマンドを使用して、限定公開 DNS ゾーンを作成します。このゾーンは、転送ルールが作成された VPC ネットワークに関連付けられています。

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Agent Platform endpoints using Private Service Connect."
    
    

    次のように置き換えます。

    • ZONE_NAME: DNS ゾーンの名前
  2. ゾーンに DNS レコードを作成するには、gcloud dns record-sets create コマンドを使用します。

    DNS_NAME=ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    次のように置き換えます。

    • VERTEX_AI_PROJECT_NUMBER: プロジェクトの VERTEX_AI_PROJECT_ID プロジェクト番号このプロジェクト番号は、 Cloud de Confiance コンソールで確認できます。詳細については、プロジェクトの識別をご覧ください。
    • INTERNAL_IP_ADDRESS: オンライン推論のエンドポイントの内部 IP アドレス

    predict リクエストを次の場所に送信できるようになりました。

    http://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

Transport Layer Security(TLS)証明書のサポート

Gemini Enterprise Agent Platform オンライン推論は、自己署名証明書を使用して保護されています。この証明書は信頼できる CA(認証局)によって署名されていないため、HTTPS 接続を確立しようとするクライアントは、この証明書を信頼するように明示的に構成する必要があります。Gemini Enterprise Agent Platform オンライン推論エンドポイントから取得した自己署名証明書は 10 年間有効です。この証明書は特定のエンドポイントに固有のものではないため、すべてのトラストストア統合に 1 つの証明書を使用できます。Gemini Enterprise Agent Platform オンライン推論への HTTPS 接続を確立するために必要な手順の概要は次のとおりです。

  1. DNS を構成する: 自己署名証明書には、サブジェクト代替名(SAN)*.prediction.p.vertexai.goog が含まれています。この形式に一致する DNS レコードをネットワークに作成する必要があります。

    実装の詳細については、内部 IP アドレスの DNS レコードを作成するをご覧ください。

  2. クライアントの信頼を確立する: クライアントは自己署名証明書をダウンロードして、ローカル トラストストアに追加する必要があります。

  3. HTTPS 接続を確立する: Gemini Enterprise Agent Platform のオンライン推論への HTTPS 接続を確立するには、完全修飾ドメイン名(FQDN)を使用する必要があります。これは、サービスがドメイン *.prediction.p.vertexai.goog に対して有効なワイルドカード SSL 証明書を使用しているためです。

以降の手順では、Gemini Enterprise Agent Platform オンライン推論証明書をダウンロードして、Debian 11 や Ubuntu などの Debian ベースの Linux システムのローカル トラストストアに追加する方法を示します。

  1. OS パッケージを更新して OpenSSL をインストールします。

    sudo apt update && sudo apt install openssl
    
  2. ホーム ディレクトリから次のコマンドを実行して、Gemini Enterprise Agent Platform オンライン推論証明書をダウンロードし、現在のディレクトリの vertex_certificate.crt という名前のファイルに保存します。次のように置き換えます。

    • ENDPOINT_ID: デプロイされたモデル エンドポイントの ID
    • REGION: エンドポイントが存在するリージョン
    • VERTEX_AI_PROJECT_NUMBER: プロジェクトのプロジェクト番号。このプロジェクト番号は、 Cloud de Confiance コンソールで確認できます。詳細については、プロジェクトの識別をご覧ください。
    openssl s_client -showcerts -connect \
    ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog:443 </dev/null | \
    openssl x509 -outform pem -out vertex_certificate.crt
    
    
  3. 証明書をシステムのトラストストアに移動します。

    sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
    
  4. Certificate Manager の信頼できる CA のリストを更新します。1 つの証明書が追加されたことを確認する出力が表示されます。

    sudo update-ca-certificates
    
  5. 次の URL に predict リクエストを送信します。このとき、次の置き換えを行います。

    • INTERNAL_IP_ADDRESS: オンライン推論のエンドポイントの内部 IP アドレス
    • VERTEX_AI_PROJECT_ID: プロジェクトのプロジェクト ID
    https://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

TLS のカスタム証明書のサポート

組織で Gemini Enterprise エージェント プラットフォームのオンライン推論エンドポイントの証明書の管理とローテーションを正確に制御する必要がある場合は、外部または内部のリージョン Cloud de Confiance by S3NSアプリケーション ロードバランサ(HTTPS)で顧客管理の証明書を使用できます。

デプロイ手順の概要は次のとおりです。

  1. 次のいずれかの方法で証明書を作成します。

    • カスタム ドメイン用に自己署名証明書を生成します(または CA を使用します)。カスタム ドメインは特定の形式に準拠する必要はありません。
    • Google マネージド証明書に Certificate Manager を使用します。Google マネージド証明書には、サポートされているドメイン名の長さに関する制限があります。詳細については、Google マネージド証明書のドメイン名の長さ制限をご覧ください。
  2. リージョン アプリケーション ロードバランサ(HTTPS)をデプロイします。

  3. DNS を構成します。

    • A レコードを DNS ゾーンに追加します。ゾーンは一般公開または非公開にできます。
    • このレコードは、完全修飾されたカスタム ドメイン(example.com など)をリージョン アプリケーション ロードバランサの IP アドレスにマッピングする必要があります。
  4. ローカル トラスト ストアを更新します。

    • クライアントがサーバーを認証するには、アプリケーション ロードバランサの証明書(またはその発行元 CA)をローカル トラストストアにインポートする必要があります。

これで、完全修飾カスタム ドメインに予測リクエストを送信できます。

https://example.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict

オンライン推論を取得する例

以降のセクションでは、Python を使用して predict リクエストを送信する方法の例について説明します。

1 つ目の例

psc_endpoint = aiplatform.PrivateEndpoint("projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS
    )
print(response)

PATH_TO_INPUT_FILE は、リクエスト入力を含む JSON ファイルのパスに置き換えます。

2 つ目の例

import json
import requests
import urllib3
import google.auth.transport.requests

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

REQUEST_FILE = "PATH_TO_INPUT_FILE"

# Programmatically get credentials and generate an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
access_token = creds.token
# Note: the credential lives for 1 hour by default
# After expiration, it must be refreshed
# See https://cloud.google.com/docs/authentication/token-types#access-tokens
# for token lifetimes.

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    url = "https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict"
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {access_token}"  # Add access token to headers
    }
    payload = {
      "instances": data["instances"],
    }

response = requests.post(url, headers=headers, json=payload, verify=False)

print(response.json())

3 つ目の例

Python を使用して DNS ゾーンに predict リクエストを送信する方法の例を以下に示します。

REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=DNS_NAME
    )
print(response)

DNS_NAME は、gcloud dns record-sets create コマンドで指定した DNS 名に置き換えます。

ベスト プラクティス

新しいエンドポイントがデプロイされると、サービス アタッチメントが更新されることがあります。推論呼び出しを行う前に、サービス アタッチメントと PSC エンドポイントのステータスを常に確認してください。これを行うためのベスト プラクティスは次のとおりです。

  • エンドポイントにアクティブなデプロイがない場合、Gemini Enterprise Agent Platform はサービス アタッチメントを削除して再作成することがあります。サービス アタッチメントが再作成されたときに、PSC エンドポイントが接続状態(転送ルールの再作成による)になっていることを確認します。
  • エンドポイントにアクティブなデプロイ済みモデルがある場合、サービス アタッチメントは変更されません。サービス アタッチメントを維持するには、トラフィック分割を作成し、以前のバージョンをデプロイ解除する前に、トラフィックを新しいモデル バージョンに段階的に移行します。
  • Gemini Enterprise Agent Platform では、サービス アタッチメントごとに最大 1,000 個の接続が可能です。
  • 転送ルールにも割り当て上限があります。詳しくは、Cloud Load Balancing の割り当てと上限をご覧ください。

制限事項

Private Service Connect を使用する Agent Platform エンドポイントには、次の制限があります。

  • チューニングされた Gemini モデルのデプロイはサポートされていません。
  • エンドポイント内からのプライベート下り(外向き)はサポートされていません。Private Service Connect の転送ルールは単方向のルールであるため、他のプライベートCloud de Confiance ワークロードはコンテナ内からアクセスできません。
  • エンドポイントの projectAllowlist 構成は変更できません。
  • Vertex Explainable AI はサポートされていません。
  • エンドポイントを削除する前に、そのエンドポイントからモデルのデプロイを解除する必要があります。
  • すべてのモデルが 10 分以上デプロイ解除されている場合、サービス アタッチメントが削除される可能性があります。Private Service Connect の接続ステータスを確認します。ステータスが CLOSED の場合は、転送ルールを再作成します。
  • エンドポイントの削除後、最大 7 日間はそのエンドポイント名を再利用することができません。
  • プロジェクトの Private Service Connect 構成には、最大 10 個の異なる projectAllowlist 値を設定できます。

次のステップ