本頁資訊適用於自訂訓練模型和 AutoML 模型。如要瞭解如何部署 Model Garden,請參閱「使用 Model Garden 中的模型」。
透過 Private Service Connect,您可以部署自訂訓練的 Vertex AI 模型,並安全地為多個用戶端專案和虛擬私有雲網路提供線上推論服務,不必使用公開 IP 位址、公開網際網路存取權或明確對等互連的內部 IP 位址範圍。
如果線上推論用途符合下列需求,建議使用 Private Service Connect:
- 要求使用私人安全連線
- 要求低延遲
- 不必公開存取
Private Service Connect 會使用虛擬私有雲網路中的轉送規則,將流量單向傳送至 Vertex AI 線上推論服務。轉送規則會連線至服務附件,將 Vertex AI 服務公開給您的 VPC 網路。詳情請參閱「透過 Private Service Connect 存取 Vertex AI 服務」。 如要進一步瞭解如何設定 Private Service Connect,請參閱虛擬私有雲 (VPC) 說明文件中的 Private Service Connect 總覽。
專屬私人端點支援 HTTP 和 gRPC 通訊協定。如果是 gRPC 要求,則必須加入 x-vertex-ai-endpoint-id 標頭,才能正確識別端點。系統支援下列 API:
- 預測
- RawPredict
- StreamRawPredict
- 對話完成 (僅限 Model Garden)
您可以使用 Python 適用的 Vertex AI SDK,將線上推論要求傳送至專屬的私人端點。詳情請參閱「取得線上推論結果」。
必要的角色
如要取得建立 Private Service Connect 端點所需的權限,請要求管理員授予您專案的 Vertex AI 使用者 (roles/aiplatform.user) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色包含 aiplatform.endpoints.create權限,這是建立 Private Service Connect 端點的必要權限。
如要進一步瞭解 Vertex AI 角色和權限,請參閱「使用 IAM 控管 Vertex AI 存取權」和「Vertex AI IAM 權限」。
建立線上推論端點
使用下列其中一種方法,建立啟用 Private Service Connect 的線上推論端點。
Private Service Connect 端點的預設要求逾時時間為 10 分鐘。在 Python 適用的 Vertex AI SDK 中,您可以選擇指定新的inference_timeout值,藉此指定不同的要求逾時時間,如下列範例所示。逾時值上限為 3600 秒 (1 小時)。
控制台
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 方法和網址:
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 專案 IDREGION:您使用 Vertex AI 的區域VERTEX_AI_ENDPOINT_NAME:線上推論端點的顯示名稱ALLOWED_PROJECTS:以半形逗號分隔的專案 ID 清單,每個 ID 都以引號括住。 Google Cloud例如:["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 端點,簡化程序,對於沒有權限在專案中建立轉送規則等網路資源的機器學習開發人員來說,特別有幫助。
如要開始使用,網路管理員必須建立服務連線政策。這項政策是每個專案和網路的一次性設定,可讓 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。 如果是單一虛擬私有雲設定,這與
$PROJECT相同。如果是共用虛擬私有雲設定,則為虛擬私有雲主專案。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
如果是單一虛擬私有雲設定,範例如下:
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 方法和網址:
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 專案 IDREGION:您使用 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
部署模型時,系統會為線上推論端點建立服務連結。這項服務附件代表 Vertex AI 線上推論服務,該服務會公開至您的 VPC 網路。執行 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:託管虛擬私有雲網路的 Google Cloud 專案 ID。如果線上推論端點和 Private Service Connect 轉送規則是代管在同一個專案中,請使用VERTEX_AI_PROJECT_ID做為這個參數。REGION:要建立 Private Service Connect 轉送規則的 Google Cloud 區域SUBNETWORK:包含 IP 位址的虛擬私有雲子網路名稱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:要建立端點的虛擬私有雲網路名稱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)。兩個通訊埠都支援 HTTP 和 gRPC。所有流量都會留在您的私人網路中,不會周遊公開網際網路。
- 最佳做法是搭配使用 HTTPS 和從 Vertex AI 線上推論取得的自行簽署憑證,或是部署您自己的自行簽署憑證。
如要取得推論結果,必須使用端點的靜態 IP 位址建立連線,除非已為內部 IP 位址建立 DNS 記錄。舉例來說,將
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 記錄
建議您建立 DNS 記錄,這樣就能從端點取得線上推論結果,不必指定內部 IP 位址。
詳情請參閱「設定 DNS 的其他方式」。
使用
gcloud dns managed-zones create指令建立私人 DNS 區域。這個區域與建立轉送規則的虛擬私有雲網路相關聯。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要求傳送至:http://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
支援傳輸層安全標準 (TLS) 憑證
Vertex AI 線上推論會使用自行簽署的憑證,確保安全無虞。 由於這個憑證並非由可信任的 CA (憑證授權單位) 簽署,嘗試建立 HTTPS 連線的用戶端必須明確設定為信任該憑證。從 Vertex AI 線上推論端點取得的自行簽署憑證有效期限為 10 年。由於這項憑證並非特定端點專屬,因此單一憑證可用於所有信任儲存空間整合。如要建立與 Vertex AI 線上推論的 HTTPS 連線,大致需要執行下列步驟:
設定 DNS:自簽憑證包含主體別名 (SAN)
*.prediction.p.vertexai.goog。您必須在網路中建立符合這個格式的 DNS 記錄。如需實作詳細資料,請參閱「為內部 IP 位址建立 DNS 記錄」。
建立用戶端信任關係:用戶端必須下載自行簽署的憑證,並新增至本機信任儲存區。
建立 HTTPS 連線:如要建立 Vertex AI 線上推論的 HTTPS 連線,必須使用完整網域名稱 (FQDN)。這是因為這項服務使用適用於
*.prediction.p.vertexai.goog網域的有效萬用 SSL 憑證。
下列步驟說明如何下載 Vertex AI 線上推論憑證,並將其新增至 Debian 11 和 Ubuntu 等以 Debian 為基礎的 Linux 系統本機信任存放區。
更新 OS 套件並安裝 OpenSSL:
sudo apt update && sudo apt install openssl從主目錄執行下列指令,下載 Vertex AI 線上推論憑證,並儲存至目前目錄中名為
vertex_certificate.crt的檔案。進行下列取代:- ENDPOINT_ID:已部署模型端點的 ID
- REGION:端點所在的區域
- VERTEX_AI_PROJECT_NUMBER:專案的專案編號。您可以在 Google Cloud 控制台找到這個專案編號。詳情請參閱「識別專案」。
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將憑證移至系統信任儲存庫:
sudo mv vertex_certificate.crt /usr/local/share/ca-certificates更新 Certificate Manager 的信任 CA 清單。您應該會看到輸出內容,確認已新增一個憑證。
sudo update-ca-certificates向下列網址傳送
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) 的自訂憑證
如果貴機構需要精確控管 Vertex AI 線上推論端點的憑證管理和輪替作業,可以搭配使用客戶管理的憑證和區域 Google Cloud應用程式負載平衡器 (HTTPS)。
這個架構可搭配預設的 Vertex AI 憑證運作,讓您直接控管。
高階部署步驟如下:
建立客戶管理的憑證:
- 為自訂網域產生自行簽署的憑證 (或使用 CA)。
- 這個網域必須使用
.prediction.p.vertexai.goog後置字元,確保網域與 Vertex AI 萬用字元憑證相符,例如my-endpoint.prediction.vertexai.goog。
部署區域性應用程式負載平衡器 (HTTPS):
- 設定負載平衡器,以便為 HTTPS 前端使用客戶管理的憑證。
- 將後端服務設為 Private Service Connect (PSC) 網路端點群組 (NEG)。這個 NEG 會指向 Vertex AI 模型端點的已發布服務服務附件。
設定 DNS:
- 在 DNS 區域中建立 DNS A 記錄。
- 這項記錄必須將完全符合規定的自訂網域 (例如
my-endpoint.prediction.p.vertexai.goog) 對應至區域應用程式負載平衡器的 IP 位址。
更新本機信任儲存區:
- 如要讓用戶端驗證伺服器,必須將應用程式負載平衡器的憑證 (或核發憑證的 CA) 匯入本機信任存放區。
現在,您可以將預測要求傳送至完整的自訂網域:
https://MY_ENDPOINT.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
取得線上推論結果的範例
下列各節提供如何使用 Python 傳送 predict 要求的範例。
第一個範例
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 檔案路徑。
第二個範例
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())
第三個例子
以下範例說明如何使用 Python 將 predict 要求傳送至 DNS 區域:
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 端點狀態。以下是相關最佳做法:
- 如果端點沒有任何有效部署項目,Vertex AI 可能會刪除服務附件並重新建立。重新建立服務連結時,請確保 PSC 端點處於連線狀態 (方法是重新建立轉送規則)。
- 如果端點有已部署的有效模型,服務附件不會變更。如要保留服務附件,請建立流量分割,並在取消部署舊版之前,逐步將流量遷移至新模型版本。
- 每個服務附件最多可有 1,000 個連線。
- 轉送規則也有配額限制。詳情請參閱 Cloud Load Balancing 配額與限制。
限制
使用 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值。