PSC エンドポイントに Model Garden をデプロイする

1. はじめに

Private Service Connect を活用して、Vertex AI Model Garden からデプロイされたモデルの安全なプライベート アクセスを確立します。この方法では、パブリック エンドポイントを公開する代わりに、Virtual Private Cloud(VPC)内でのみアクセス可能なプライベート Vertex AI エンドポイントにモデルをデプロイできます。

Private Service Connect は、VPC 内に内部 IP アドレスを持つエンドポイントを作成し、モデルをホストする Google マネージド Vertex AI サービスに直接接続します。これにより、VPC 環境とオンプレミス環境(Cloud VPN または Interconnect 経由)のアプリケーションは、プライベート IP を使用して推論リクエストを送信できます。すべてのネットワーク トラフィックは Google のネットワーク内に留まるため、セキュリティが強化され、レイテンシが短縮され、モデルのサービング エンドポイントが公共のインターネットから完全に分離されます。

4a78228d4197997c.png

作成するアプリの概要

このチュートリアルでは、Vertex AI オンライン推論でホストされている Gemma 3 を Model Garden からダウンロードします。これは、Private Service Connect を介してアクセス可能なプライベート エンドポイントです。エンドツーエンドのセットアップには次のものが含まれます。

  1. Model Garden モデル: Vertex AI Model Garden から Gemma 3 を選択し、Private Service Connect エンドポイントにデプロイします。
  2. Private Service Connect: 独自のネットワーク内の内部 IP アドレスで構成される Virtual Private Cloud(VPC)にコンシューマー エンドポイントを構成します。
  3. Vertex AI への安全な接続: PSC エンドポイントは、プライベート モデルのデプロイ用に Vertex AI によって自動的に生成されたサービス アタッチメントをターゲットにします。これによりプライベート接続が確立され、VPC とモデル サービング エンドポイント間のトラフィックが公共のインターネットを通過しないようになります。
  4. VPC 内のクライアント構成: クライアント(例: VPC 内の Compute Engine VM)を使用して、PSC エンドポイントの内部 IP アドレスを使用して、デプロイされたモデルに推論リクエストを送信します。

このチュートリアルを完了すると、指定した VPC ネットワーク内からのみアクセスできる、非公開で提供される Model Garden モデルの機能する例が作成されます。

学習内容

このチュートリアルでは、Vertex AI Model Garden からモデルをデプロイし、Private Service Connect(PSC)を使用して Virtual Private Cloud(VPC)から安全にアクセスできるようにする方法について説明します。この方法を使用すると、VPC 内のアプリケーション(コンシューマー)は、公共のインターネットを経由せずに Vertex AI モデル エンドポイント(プロデューサー サービス)に非公開で接続できます。

具体的には、次のことを学びます。

  1. Vertex AI の PSC について: PSC がコンシューマーとプロデューサー間のプライベートで安全な接続をどのように実現するか。VPC は、内部 IP アドレスを使用してデプロイされた Model Garden モデルにアクセスできます。
  2. プライベート アクセスでモデルをデプロイする: Model Garden モデルが PSC を使用してプライベート エンドポイントになるように Vertex AI エンドポイントを構成する方法。
  3. サービス アタッチメントのロール: モデルをプライベート Vertex AI エンドポイントにデプロイすると、Google Cloud は Google マネージドのテナント プロジェクトにサービス アタッチメントを自動的に作成します。このサービス アタッチメントは、モデル サービング サービスをコンシューマー ネットワークに公開します。
  4. VPC での PSC エンドポイントの作成:
  • デプロイされた Vertex AI エンドポイントの詳細から一意のサービス アタッチメント URI を取得する方法。
  • VPC で選択したサブネット内の内部 IP アドレスを予約する方法。
  • Vertex AI サービス アタッチメントをターゲットとする PSC エンドポイントとして機能する転送ルールを VPC に作成する方法。このエンドポイントにより、予約済みの内部 IP を介してモデルにアクセスできるようになります。
  1. プライベート接続の確立: VPC の PSC エンドポイントがサービス アタッチメントに接続され、ネットワークと Vertex AI サービスが安全にブリッジされます。
  2. 推論リクエストを非公開で送信する: VPC 内のリソース(Compute Engine VM など)から PSC エンドポイントの内部 IP アドレスに予測リクエストを送信する方法。
  3. 検証: VPC からデプロイされた Model Garden モデルにプライベート接続を介して推論リクエストを正常に送信できることをテストして確認する手順。

この手順を完了すると、プライベート ネットワーク インフラストラクチャからのみアクセス可能な Model Garden のモデルをホストできるようになります。

必要なもの

Google Cloud プロジェクト

IAM 権限

2. 始める前に

チュートリアルをサポートするようにプロジェクトを更新する

このチュートリアルでは、$variables を使用して、Cloud Shell での gcloud 構成の実装を支援します。

Cloud Shell で、次の操作を行います。

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid

API の有効化

Cloud Shell で、次の操作を行います。

gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "serviceusage.googleapis.com"

3. モデルをデプロイする

Model Garden からモデルをデプロイする手順は次のとおりです。

Google Cloud コンソールで、Model Garden に移動して、Gemma 3 を検索して選択します。

10c7ce35cfc571dc.png

[デプロイ オプション] をクリックして [Vertex AI] を選択します。

ed9280fcc5f4c3fa.png

[Vertex AI にデプロイ] ペインで、[詳細設定] を選択します。事前入力されたリージョンとマシン仕様は、使用可能な容量に基づいて選択されます。これらの値は変更できますが、この Codelab は us-central1 に合わせて調整されています。

3f7e4cefdc06488a.png

[Vertex AI にデプロイ] ペインで、[エンドポイント アクセス] が [Private Service Connect] に構成されていることを確認し、プロジェクトを選択します。

d0f0d9bc49205fb3.png

他のオプションはすべてデフォルトのままにして、下部の [デプロイ] を選択します。デプロイ ステータスについては通知を確認してください。

9bd3b10256b7b2cc.png

Model Garden で、Gemma 3 モデルとエンドポイントを提供するリージョン us-central1 を選択します。モデルのデプロイには約 5 分かかります。

e998ee6288a8a7a.png

30 分後に、エンドポイントは完了すると [アクティブ] に移行します

9dcc7c56dbe0e88a.png

エンドポイントを選択して、エンドポイント ID を取得し、メモします。

6e3e2feef82fadd5.png

Cloud Shell を開き、次の操作を行って Private Service Connect サービス アタッチメント URI を取得します。この URI 文字列は、PSC コンシューマー エンドポイントをデプロイするときにコンシューマーによって使用されます。

Cloud Shell で、エンドポイント ID を更新してから、次のコマンドを発行します。

gcloud ai endpoints describe [Endpoint ID] --region=us-central1  | grep -i serviceAttachment:

次の例をご覧ください。

user@cloudshell:$ gcloud ai endpoints describe 2124795225560842240 --region=us-central1 | grep -i serviceAttachment:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    serviceAttachment: projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d

serviceAttachment の後の内容を「Service_attachment」という変数にコピーします。これは、後で PSC 接続を作成するときに必要になります。

user@cloudshell:$ Service_attachment=projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d

4. コンシューマーの設定

コンシューマー VPC を作成する

Cloud Shell で、次の操作を行います。

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

コンシューマー VM サブネットを作成する

Cloud Shell で、次の操作を行います。

gcloud compute networks subnets create consumer-vm-subnet --project=$projectid --range=192.168.1.0/24 --network=consumer-vpc --region=us-central1 --enable-private-ip-google-access

PSC エンドポイントのサブネットを作成する

gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1

5. IAP を有効にする

IAP に VM インスタンスへの接続を許可するには、次のファイアウォール ルールを作成します。

  • IAP を使用してアクセス可能にするすべての VM インスタンスに適用されます。
  • IP 範囲 35.235.240.0/20 からの上り(内向き)トラフィックを許可します。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。

Cloud Shell 内で、IAP ファイアウォール ルールを作成します。

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. コンシューマー VM インスタンスを作成する

Cloud Shell 内で、コンシューマー VM インスタンス consumer-vm を作成します。

gcloud compute instances create consumer-vm \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --shielded-secure-boot \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=consumer-vm-subnet 

7. Private Service Connect エンドポイント

コンシューマーは、VPC 内の内部 IP アドレスを使用してコンシューマー エンドポイント(転送ルール)を作成します。この PSC エンドポイントは、プロデューサーのサービス アタッチメントをターゲットにします。コンシューマー VPC またはハイブリッド ネットワーク内のクライアントは、この内部 IP アドレスにトラフィックを送信して、プロデューサーのサービスにアクセスできます。

コンシューマー エンドポイントの IP アドレスを予約します。

Cloud Shell 内で、転送ルールを作成します。

gcloud compute addresses create psc-address \
    --project=$projectid \
    --region=us-central1 \
    --subnet=pscendpoint-subnet \
    --addresses=10.10.10.6

IP アドレスが予約されていることを確認する

Cloud Shell で、予約済みの IP アドレスを一覧表示します。

gcloud compute addresses list 

10.10.10.6 IP アドレスが予約されていることがわかります。

edb5661bea25cd14.png

前の手順(モデルのデプロイ)で取得したサービス アタッチメント URI(target-service-attachment)を指定して、コンシューマー エンドポイントを作成します。

Cloud Shell 内で、ネットワーク アタッチメントの説明を取得します。

 gcloud compute forwarding-rules create psc-consumer-ep \
    --network=consumer-vpc \
    --address=psc-address \
    --region=us-central1 \
    --target-service-attachment=$Service_attachment \
    --project=$projectid

サービス アタッチメントがエンドポイントを受け入れることを確認する

gcloud compute forwarding-rules describe psc-consumer-ep \
    --project=$projectid \
    --region=us-central1 \

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

6c66347ede9d4c7d.png

8. コンシューマー VM からテストする

Cloud Shell で次の手順を行い、Vertex Model Garden API にアクセスするための Consumer VM へのアクセス権を付与します。

コンシューマー VM に SSH 接続する

f0984d9e60530cb2.png

アプリケーションのデフォルト認証情報で再認証し、Vertex AI スコープを指定します。

gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform 

次の表を使用して CURL コマンドを生成し、環境に合わせて調整します。

属性

Protocol

HTTP

場所

us-central1

オンライン予測エンドポイント

2133539641536544768

プロジェクト ID

test4-473419

モデル

gemma-3-12b-it

Private Service Connect エンドポイントの IP

10.10.10.6

メッセージ

[{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}]

環境の詳細に基づいて curl コマンドを更新して実行します。

curl -k -v -X POST   -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"   -H "Content-Type: application/json"   http://[PSC-IP]/v1/projects/[Project-ID]/locations/us-central1/endpoints/[Predictions Endpoint]/chat/completions   -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'

例:

curl -k -v -X POST   -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"   -H "Content-Type: application/json"   http://10.10.10.6/v1/projects/test4-473419/locations/us-central1/endpoints/2133539641536544768/chat/completions   -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'

最終結果 - 成功!!!

出力の下部に Gemma 3 からの予測が表示されます。これは、PSC エンドポイントを介して API エンドポイントにプライベートにアクセスできたことを示しています。

 Connection #0 to host 10.10.10.6 left intact
{"id":"chatcmpl-9e941821-65b3-44e4-876c-37d81baf62e0","object":"chat.completion","created":1759009221,"model":"google/gemma-3-12b-it","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"This is a classic trick question! They weigh the same. One pound is one pound, regardless of the material. 😊\n\n\n\n","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":106}],"usage":{"prompt_tokens":20,"total_tokens":46,"completion_tokens":26,"prompt_tokens_details":null},"prompt_logprobs":null

9. クリーンアップ

Cloud Shell から、チュートリアルのコンポーネントを削除します。

gcloud ai endpoints undeploy-model ENDPOINT_ID --deployed-model-id=DEPLOYED_MODEL_ID --region=us-central1 --quiet

gcloud ai endpoints delete $ENDPOINT_ID --project=$projectid --region=us-central1 --quiet

gcloud ai models delete $MODEL_ID --project=$projectid --region=us-central1 --quiet

gcloud compute instances delete consumer-vm --zone=us-central1-a --quiet

gcloud compute forwarding-rules delete psc-consumer-ep --region=us-central1 --project=$projectid --quiet

gcloud compute addresses delete psc-address --region=us-central1 --project=$projectid --quiet

gcloud compute networks subnets delete pscendpoint-subnet consumer-vm-subnet --region=us-central1 --quiet

gcloud compute firewall-rules delete ssh-iap-consumer --project=$projectid

gcloud compute networks delete consumer-vpc --project=$projectid --quiet

gcloud projects delete $projectid --quiet

10. 完了

おめでとうございます。Private Service Connect エンドポイントを使用して、Vertex AI Prediction でホストされている Gemma 3 API へのプライベート アクセスを構成して検証しました。

内部 IP アドレスの予約や VPC 内での Private Service Connect エンドポイント(転送ルール)の構成など、コンシューマー インフラストラクチャを作成した。このエンドポイントは、デプロイされた Gemma 3 モデルに関連付けられているサービス アタッチメントをターゲットにして、Vertex AI サービスに安全に接続します。この設定により、VPC または接続されたネットワーク内のアプリケーションは、内部 IP アドレスを使用して Gemma 3 API とプライベートかつ安全にやり取りできます。トラフィックが公共のインターネットを経由する必要はありません。

参考資料と動画

リファレンス ドキュメント