Private Service Connect を使用すると、パブリック IP アドレス、パブリック インターネット アクセス、明示的にピアリングされた内部 IP アドレス範囲を必要とせずに、複数のコンシューマー プロジェクトと VPC ネットワークから Vertex AI オンライン推論に安全にアクセスできます。
オンライン推論のユースケースで、次の要件がある場合は、Private Service Connect の使用をおすすめします。
- プライベートかつセキュアな接続を必須にする
- 低レイテンシを必要とする
- 一般公開する必要はありません
Private Service Connect は、VPC ネットワークの転送ルールを使用して、Vertex AI オンライン推論サービスにトラフィックを単方向に送信します。転送ルールは、Vertex AI サービスを VPC ネットワークに公開するサービス アタッチメントに接続します。詳細については、Private Service Connect を介した Vertex AI サービスへのアクセスについてをご覧ください。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 のみ)
Vertex AI SDK for Python を使用して、専用のプライベート エンドポイントにオンライン推論リクエストを送信できます。詳細については、オンライン推論を取得するをご覧ください。
必要なロール
Private Service Connect エンドポイントの作成に必要な権限を取得するには、プロジェクトに対する Vertex AI ユーザー (roles/aiplatform.user
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、Private Service Connect エンドポイントを作成するために必要な aiplatform.endpoints.create
権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
Vertex AI のロールと権限の詳細については、IAM による Vertex AI のアクセス制御と Vertex AI IAM 権限をご覧ください。
オンライン推論のエンドポイントを作成する
Private Service Connect が有効なオンライン推論のエンドポイントを作成するには、次のいずれかの方法を使用します。
Private Service Connect エンドポイントのデフォルトのリクエスト タイムアウトは 10 分です。Vertex AI SDK for Python では、次の例に示すように、必要に応じて新しい inference_timeout
値を指定して、別のリクエスト タイムアウトを指定できます。タイムアウトの最大値は 3,600 秒(1 時間)です。
コンソール
Google Cloud コンソールの Vertex AI で、[オンライン予測] ページに移動します。
[作成] をクリックします。
エンドポイントの表示名を指定します。
[非公開] を選択します。
[Private Service Connect] を選択します。
[プロジェクト ID を選択] をクリックします。
エンドポイントの許可リストに追加するプロジェクトを選択します。
[続行] をクリックします。
モデルの仕様を選択します。詳細については、エンドポイントにモデルをデプロイするをご覧ください。
[作成] をクリックします。エンドポイントを作成してモデルをデプロイします。
レスポンスのエンドポイント ID をメモします。
API
REST
リクエストのデータを使用する前に、次のように置き換えます。
VERTEX_AI_PROJECT_ID
: オンライン予測エンドポイントを作成する Google Cloud プロジェクトの ID。REGION
: Vertex AI を使用するリージョン。VERTEX_AI_ENDPOINT_NAME
: オンライン予測エンドポイントの表示名。ALLOWED_PROJECTS
: Google Cloud プロジェクト ID のカンマ区切りリスト。各 ID は引用符で囲みます(例:["PROJECTID1", "PROJECTID2"]
)。プロジェクトがこのリストに含まれていない場合、そのプロジェクトから Vertex AI エンドポイントに予測リクエストを送信することはできません。このリストに 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": { "seconds": INFERENCE_TIMEOUT_SECS } } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような 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
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
次のように置き換えます。
VERTEX_AI_PROJECT_ID
: オンライン推論のエンドポイントを作成する Google Cloud プロジェクトの ID。REGION
: Vertex AI を使用するリージョン。VERTEX_AI_ENDPOINT_NAME
: オンライン推論のエンドポイントの表示名。ALLOWED_PROJECTS
: Google Cloudプロジェクト ID のカンマ区切りリスト。各プロジェクト ID は引用符で囲みます。たとえば、["PROJECTID1", "PROJECTID2"]
のようにします。プロジェクトがこのリストに含まれていない場合、そのプロジェクトから Vertex AI エンドポイントに推論リクエストを送信することはできません。このリストに 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 回だけ使う構成です。これにより、Vertex AI(サービスクラス gcp-vertexai
)はプロジェクトとネットワーク内で PSC エンドポイントを生成できます。
次に、PSC 自動化の構成を使用してエンドポイントを作成し、モデルをデプロイします。デプロイが完了すると、関連する PSC エンドポイント情報がエンドポイント内でアクセス可能になります。
制限事項
- VPC Service Controls はサポートされていません。
- PSC 自動化の構成には、リージョンあたり 500 個のエンドポイントの上限が適用されます。
- モデルがデプロイされていない場合、またはエンドポイントにデプロイ中の場合は、PSC 自動化の結果は削除されます。クリーンアップとそれに続くモデルによって、新しい自動化の結果に個別の IP アドレスと転送ルールが含まれます。
サービス接続ポリシーを作成する
サービス接続ポリシーを作成するには、ネットワーク管理者である必要があります。Vertex AI がネットワークに PSC エンドポイントを作成できるようにするには、サービス接続ポリシーが必要です。有効なポリシーがない場合、自動化は CONNECTION_POLICY_MISSING
エラーで失敗します。
サービス接続ポリシーを作成します。
- POLICY_NAME: ユーザーが指定したポリシーの名前。
PROJECT_ID: Vertex AI リソースを作成するサービス プロジェクトの 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
サービス接続ポリシーを確認します。
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: Vertex AI を使用するリージョン。
- VERTEX_AI_PROJECT_ID: オンライン推論のエンドポイントを作成する Google Cloud プロジェクトの 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
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
次のように置き換えます。
VERTEX_AI_PROJECT_ID
: オンライン推論のエンドポイントを作成する Google Cloud プロジェクトの ID。REGION
: Vertex AI を使用するリージョン。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 のエンドポイントを手動で作成する
サービス アタッチメントの URI を取得する
モデルをデプロイすると、オンライン推論のエンドポイントのサービス アタッチメントが作成されます。このサービス アタッチメントは、VPC ネットワークに公開されている Vertex AI オンライン推論サービスを表します。gcloud ai endpoints describe
コマンドを実行して、サービス アタッチメント URI を取得します。
エンドポイントの詳細の
serviceAttachment
値のみを一覧取得します。gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachment
次のように置き換えます。
ENDPOINT_ID
: オンライン推論のエンドポイントの IDVERTEX_AI_PROJECT_ID
: オンライン推論のエンドポイントを作成した Google Cloud プロジェクトの IDREGION
: このリクエストのリージョン
出力は次のようになります。
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
serviceAttachment
フィールドの文字列全体をメモします。これはサービス アタッチメント URI です。
転送ルールの作成
内部 IP アドレスを予約し、予約したアドレスで転送ルールを作成できます。転送ルールを作成するには、前のステップで取得したサービス アタッチメント URI が必要です。
転送ルールの内部 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 ネットワークを含む Google Cloud プロジェクトの ID。オンライン推論のエンドポイントと Private Service Connect 転送ルールが同じプロジェクトでホストされている場合は、このパラメータにVERTEX_AI_PROJECT_ID
を使用します。REGION
: Private Service Connect 転送ルールを作成する Google Cloud リージョンSUBNETWORK
: IP アドレスを含む VPC サブネットの名前INTERNAL_IP_ADDRESS
: 予約する内部 IP アドレス。このパラメータは省略可能です。- このパラメータを指定する場合、IP アドレスはサブネットのプライマリ IP アドレス範囲内にする必要があります。IP アドレスには、RFC 1918 アドレス、または RFC 以外の範囲を持つサブネットを指定できます。
- このパラメータを省略すると、内部 IP アドレスが自動的に割り振られます。
- 詳細については、新しい静的内部 IPv4 または IPv6 アドレスを予約するをご覧ください。
IP アドレスが予約されていることを確認するには、
gcloud compute addresses list
コマンドを使用します。gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \ --project=VPC_PROJECT_ID
レスポンスで、IP アドレスに
RESERVED
ステータスが表示されていることを確認します。転送ルールを作成してオンライン推論サービス アタッチメントにポイントするには、
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
: 先ほどメモしたサービス アタッチメント
サービス アタッチメントがエンドポイントを受け入れることを確認するには、
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
: プロジェクト IDREGION
: このリクエストのリージョン名
省略可: 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 をサポートしています。すべてのトラフィックはプライベート ネットワークに属し、公共のインターネットを経由しません。
推論を取得するには、内部 IP アドレスの DNS レコードが作成されていない限り、エンドポイントの静的 IP アドレスを使用して接続を確立する必要があります。たとえば、
predict
リクエストを次のエンドポイントに送信します。https://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 通信のリクエストパス内でエンドポイント情報が伝達されないためです。安全な接続(ポート 443): ポート 443 を使用して安全な接続を確立する場合、サーバーは自己署名証明書を使用します。接続を続行するには、次のいずれかの方法をおすすめします。
- オプション 1: 証明書検証のバイパス: 証明書検証を無視するようにクライアントを構成し、サーバーの IP アドレスまたは優先 DNS 解決方法を使用して接続を確立します。
- オプション 2: トラストストアの統合: サーバーの自己署名証明書を取得し、クライアント システムのローカル トラストストアに追加して、
*.prediction.p.vertexai.goog
形式の DNS 名を使用して接続を確立します。このメソッドは、証明書の検証を通じて安全な通信を保証します。サーバーの証明書は、次のコマンドで PSC_CERTIFICATE_FILE.pem に書き込むことができます。
openssl s_client -showcerts -connect INTERNAL_IP_ADDRESS:443 \ -servername *.prediction.p.vertexai.goog \ </dev/null 2>/dev/null | sed -n \ '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > PSC_CERTIFICATE_FILE.pem
以降のセクションでは、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())
省略可: 内部 IP アドレスの DNS レコードを作成する
内部 IP アドレスを指定することを必要とせずにエンドポイントからオンライン推論を取得できるように、DNS レコードを作成することをおすすめします。
詳細については、DNS を構成するその他の方法をご覧ください。
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 Vertex AI endpoints using Private Service Connect."
次のように置き換えます。
ZONE_NAME
: DNS ゾーンの名前
ゾーンに 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
プロジェクト番号このプロジェクト番号は、 Google Cloud コンソールで確認できます。詳細については、プロジェクトの識別をご覧ください。INTERNAL_IP_ADDRESS
: オンライン推論のエンドポイントの内部 IP アドレス
predict
リクエストを次の場所に送信できるようになりました。https://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
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 名に置き換えます。
制限事項
Private Service Connect を使用する Vertex AI エンドポイントには、次の制限があります。
- チューニング済みの Gemini モデルのデプロイはサポートされていません。
- エンドポイント内からのプライベート下り(外向き)はサポートされていません。Private Service Connect の転送ルールは単方向のルールであるため、他のプライベートGoogle Cloud ワークロードはコンテナ内からアクセスできません。
- エンドポイントの
projectAllowlist
構成は変更できません。 - Vertex Explainable AI はサポートされていません。
- エンドポイントを削除する前に、そのエンドポイントからモデルのデプロイを解除する必要があります。
- すべてのモデルが 10 分以上デプロイ解除されている場合、サービス アタッチメントが削除される可能性があります。Private Service Connect の接続ステータスを確認します。ステータスが
CLOSED
の場合は、転送ルールを再作成します。 - エンドポイントの削除後、最大 7 日間はそのエンドポイント名を再利用することができません。
- プロジェクトの Private Service Connect 構成には、最大 10 個の異なる
projectAllowlist
値を設定できます。