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

使用私人服務存取端點,透過 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,請考慮放慢流量來緩解這個問題,而非重試。
  • 不支援 Vertex AI Python 用戶端程式庫PredictionServiceClient 的推論要求。
  • 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 格式

私人端點的推論 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. 使用用戶端專案中的推論用戶端,傳送推論要求