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 のネットワーク上に留まるため、セキュリティが強化され、レイテンシが短縮され、モデルのサービング エンドポイントが公共のインターネットから完全に隔離されます。

作成するアプリの概要
このチュートリアルでは、Private Service Connect を介してアクセス可能なプライベート エンドポイントとして、Vertex AI Online Inference でホストされている Gemma 3 を Model Garden からダウンロードします。 エンドツーエンドの設定は次のようになります。
- Model Garden モデル: Vertex AI Model Garden から Gemma 3 を選択し、Private Service Connect エンドポイントにデプロイします。
- Private Service Connect: 独自のネットワーク内の内部 IP アドレスで構成される Virtual Private Cloud(VPC)にコンシューマー エンドポイントを構成します。
- Vertex AI への安全な接続: PSC エンドポイントは、プライベート モデル デプロイ用に Vertex AI によって自動的に生成されるサービス アタッチメントをターゲットにします。これによりプライベート接続が確立され、VPC とモデル提供エンドポイント間のトラフィックが公共のインターネットを経由しないようにします。
- 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 モデル エンドポイント(プロデューサー サービス)にプライベートに接続できます。
具体的には、次のことを学びます。
- Vertex AI の PSC について: PSC がコンシューマーとプロデューサー間のプライベートで安全な接続をどのように実現するか。VPC は、内部 IP アドレスを使用して、デプロイされた Model Garden モデルにアクセスできます。
- プライベート アクセスでモデルをデプロイする: Model Garden モデルで PSC を使用するように Vertex AI エンドポイントを構成して、プライベート エンドポイントにする方法。
- サービス アタッチメントの役割: モデルを Vertex AI のプライベート エンドポイントにデプロイすると、Google Cloud は Google マネージドのテナント プロジェクトにサービス アタッチメントを自動的に作成します。このサービス アタッチメントは、モデル提供サービスをコンシューマー ネットワークに公開します。
- VPC に PSC エンドポイントを作成する:
- デプロイされた Vertex AI エンドポイントの詳細から一意のサービス アタッチメント URI を取得する方法。
- VPC で選択したサブネット内に内部 IP アドレスを予約する方法。
- Vertex AI サービス アタッチメントをターゲットとする PSC エンドポイントとして機能する転送ルールを VPC に作成する方法。このエンドポイントにより、予約済みの内部 IP を介してモデルにアクセスできるようになります。
- プライベート接続の確立: VPC の PSC エンドポイントがサービス アタッチメントに接続し、ネットワークと Vertex AI サービスを安全にブリッジする方法。
- 推論リクエストをプライベートに送信する: VPC 内のリソース(Compute Engine VM など)から PSC エンドポイントの内部 IP アドレスに予測リクエストを送信する方法。
- 検証: プライベート接続を介して VPC からデプロイされた Model Garden モデルに推論リクエストを正常に送信できることをテストして確認する手順。
このチュートリアルを完了すると、プライベート ネットワーク インフラストラクチャからのみアクセスできる Model Garden のモデルをホストできるようになります。
必要なもの
Google Cloud プロジェクト
IAM 権限
- AI Platform 管理者(roles/ml.Admin)
- Compute ネットワーク管理者 (roles/compute.networkAdmin)
- Compute インスタンス管理者 (roles/compute.instanceAdmin)
- Compute セキュリティ管理者(roles/compute.securityAdmin)
- DNS 管理者(roles/dns.admin)
- IAP で保護されたトンネル ユーザー(roles/iap.tunnelResourceAccessor)
- Logging 管理者(roles/logging.admin)
- Notebooks 管理者(roles/notebooks.admin)
- Project IAM 管理者(roles/resourcemanager.projectIamAdmin)
- サービス アカウント管理者(roles/iam.serviceAccountAdmin)
- Service Usage 管理者(roles/serviceusage.serviceUsageAdmin)
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」を検索して選択します。

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

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

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

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

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

完了すると、30 分後にエンドポイントが [有効] に移行します。

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

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 アドレスが予約されていることを確認します。

前の手順のモデルのデプロイ セクションでキャプチャしたサービス アタッチメント 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」ステータスが表示されていることを確認します。

8. コンシューマー VM からテストする
Cloud Shell で次の手順に沿って、コンシューマー VM が Vertex Model Garden API にアクセスできるようにします。
コンシューマー VM に SSH 接続します。

アプリケーションのデフォルト認証情報で再認証し、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 とプライベートかつ安全にやり取りできます。