使用私人服務存取端點進行線上推論

使用私人服務存取端點,透過 Vertex AI 提供線上推論結果,可與 Vertex AI 線上推論服務建立低延遲的安全連線。本指南說明如何使用虛擬私有雲網路對等互連,讓網路與 Vertex AI 線上推論服務對等互連,進而在 Vertex AI 上設定私人服務存取權。

總覽

使用私人端點提供線上推論服務前,您必須設定私人服務存取權,在網路和 Vertex AI 之間建立對等互連連線。如果已完成設定,可以使用現有的對等互連連線。

本指南涵蓋下列工作:

  • 驗證現有對等互連連線的狀態。
  • 確認必要的 API 已啟用。
  • 建立私人端點。
  • 將模型部署至私人端點。
    • 每個私人端點僅支援一個模型。這與公開 Vertex AI 端點不同,您可以在公開端點中,將流量分配給部署至同一端點的多個模型。
    • 私人端點支援 AutoML 表格型模型和自訂訓練模型。
  • 將推論結果傳送至私人端點。
  • 清除資源

檢查現有對等互連連線的狀態

如果您有現成對等互連連線搭配 Vertex AI 使用,可以列出這些連線來檢查狀態:

gcloud compute networks peerings list --network NETWORK_NAME

您應該會看到對等互連連線的狀態為 ACTIVE。 進一步瞭解有效對等互連連線

啟用必要的 API

gcloud services enable aiplatform.googleapis.com
gcloud services enable dns.googleapis.com

建立私人端點

如要建立私人端點,請使用 Google Cloud CLI 建立端點時,新增 --network 標記:

gcloud beta ai endpoints create \
  --display-name=ENDPOINT_DISPLAY_NAME \
  --network=FULLY_QUALIFIED_NETWORK_NAME \
  --region=REGION

NETWORK_NAME 替換為完整網路名稱:

projects/PROJECT_NUMBER/global/networks/NETWORK_NAME

如果您建立端點時未指定網路,系統會建立公開端點。

私人端點的限制

請注意私人端點的下列限制:

  • 私人端點不支援流量分割。如要解決這個問題,您可以將模型部署至多個私人端點,並在每個私人端點產生的推論網址之間拆分流量,手動建立流量拆分。
  • 私人端點不支援 SSL/TLS。
  • 如要在私人端點上啟用存取記錄功能,請傳送電子郵件至 vertex-ai-feedback@google.com。
  • 您只能在 Google Cloud專案中,為所有私人端點使用一個網路。如要改用其他電視網,請與 vertex-ai-feedback@google.com 聯絡。
  • 強烈建議您在發生可復原的錯誤時,在用戶端重試。可能包含下列錯誤:
    • 回應空白 (HTTP 錯誤代碼 0),可能是暫時性連線中斷所致。
    • HTTP 錯誤代碼 5xx,表示服務可能暫時無法使用。
  • 如果 HTTP 錯誤代碼 429 表示系統負載過重,請考慮降低流量,以減輕這個問題,而不是重試。
  • 系統不支援來自預測服務 (例如 PredictionServiceClientPredictionServiceClient) 的推論要求。
  • Private Service Access 端點不支援微調基礎模型。如要部署微調過基礎模型,請使用 Private Service Connect 端點

監控私人端點

您可以使用指標資訊主頁,檢查傳送至私人端點的流量可用性和延遲時間。

如要自訂監控,請在 Cloud Monitoring 中查詢下列指標:

  • aiplatform.googleapis.com/prediction/online/private/response_count

    推論回應數量。您可以依據 deployed_model_id 或 HTTP 回應碼篩選這項指標。

  • aiplatform.googleapis.com/prediction/online/private/prediction_latencies

    推論要求的延遲時間 (以毫秒為單位)。您可以依 deployed_model_id 篩選這項指標,但僅限於成功的要求。

瞭解如何在 Metrics Explorer 中選取、查詢及顯示這些指標

部署模型

您可以匯入新模型,或部署已上傳的現有模型。如要上傳新模型,請使用 gcloud ai models upload。詳情請參閱「將模型匯入 Vertex AI」。

  1. 如要將模型部署至私人端點,請參閱部署模型指南。 除了流量分割和手動啟用存取記錄外,您也可以使用其他任何選項部署自訂訓練模型。如要進一步瞭解私人端點與公開端點的差異,請參閱私人端點的限制

  2. 部署端點後,您可以從私有端點的中繼資料取得推論 URI。

    1. 如果您有私人端點的顯示名稱,請執行下列指令來取得端點 ID:

      ENDPOINT_ID=$(gcloud ai endpoints list \
                --region=REGION \
                --filter=displayName:ENDPOINT_DISPLAY_NAME \
                --format="value(ENDPOINT_ID.scope())")
      

      如要查看所有端點的端點 ID 和顯示名稱,請執行下列指令:

      gcloud ai endpoints list --region=REGION
      
    2. 最後,如要取得推論 URI,請執行下列指令:

      gcloud beta ai endpoints describe ENDPOINT_ID \
        --region=REGION \
        --format="value(deployedModels.privateEndpoints.predictHttpUri)"
      

私有推論 URI 格式

與 Vertex AI 公開端點相比,私人端點的推論 URI 看起來有所不同:

http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict

如果您選擇取消部署目前的模型,然後重新部署新模型,系統會重複使用網域名稱,但路徑會包含不同的已部署模型 ID。

將推論結果傳送至私人端點

  1. 在 VPC 網路中建立 Compute Engine 執行個體。請務必在與 Vertex AI 對等互連的相同虛擬私有雲網路中建立執行個體

  2. 透過 SSH 連線至 Compute Engine 執行個體,並視需要安裝推論用戶端。否則,您可以使用 curl。

  3. 預測時,請使用從模型部署作業取得的推論網址。在本範例中,您是從相同虛擬私有雲網路中 Compute Engine 執行個體的推論用戶端傳送要求:

    curl -X POST -d@PATH_TO_JSON_FILE  http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict
    

    在本範例要求中,PATH_TO_JSON_FILE 是推論要求的路徑,並儲存為 JSON 檔案。例如:example-request.json

清除所用資源

您可以與公開模型和端點相同的方式,取消部署模型並刪除私人端點。

範例:測試共用虛擬私有雲中的私人端點

本範例使用兩個專案和共用虛擬私有雲網路: Google Cloud

  • 主專案會代管共用虛擬私有雲網路。
  • 用戶端專案會代管 Compute Engine 執行個體,您可以在該執行個體中執行推論用戶端 (例如 curl) 或自己的 REST 用戶端,藉此傳送推論要求。

在用戶端專案中建立 Compute Engine 執行個體時,該執行個體必須位於主專案共用虛擬私有雲網路的自訂子網路中,且與模型部署的地區相同。

  1. 在主機專案中,為私人服務存取權建立對等互連連線。執行 gcloud services vpc-peerings connect

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=HOST_SHARED_VPC_NAME \
      --ranges=PREDICTION_RESERVED_RANGE_NAME \
      --project=HOST_PROJECT_ID
    
  2. 在用戶端專案中建立端點,並使用主專案的網路名稱。執行 gcloud beta ai endpoints create

    gcloud beta ai endpoints create \
      --display-name=ENDPOINT_DISPLAY_NAME \
      --network=HOST_SHARED_VPC_NAME \
      --region=REGION \
      --project=CLIENT_PROJECT_ID
    
  3. 使用用戶端專案中的推論用戶端傳送推論要求