使用私人 IP 進行 Vertex AI 無伺服器訓練

與使用公開 IP 相比,使用私人 IP 連線至訓練工作可提供更高的網路安全性,並減少網路延遲時間。如要使用私人 IP,請使用虛擬私有雲 (VPC),將網路與任何類型的 Vertex AI 無伺服器訓練工作對等互連。這樣一來,訓練程式碼就能存取Google Cloud 或地端部署網路中的私人 IP 位址。

本指南說明如何設定虛擬私有雲網路對等互連,以便與 Vertex AI CustomJobHyperparameterTuningJob 或自訂 TrainingPipeline 資源對等互連,並在網路中執行無伺服器訓練工作。

總覽

使用私人 IP 提交無伺服器訓練工作前,請務必設定私人服務存取權,在網路和 Vertex AI 之間建立對等互連連線。如果已完成設定,可以使用現有的對等互連連線。

本指南涵蓋下列工作:

  • 瞭解要為無伺服器訓練預留哪些 IP 範圍。
  • 確認現有對等互連連線的狀態。
  • 在您的網路上執行 Vertex AI 無伺服器訓練。
  • 先檢查一個網路上是否正在進行訓練,再訓練另一個網路。
  • 測試訓練程式碼是否可存取網路中的私人 IP。

為無伺服器訓練預留 IP 範圍

為服務生產端預留 IP 範圍後,Vertex AI 和其他服務就能使用該範圍。下表顯示使用 /16 至 /18 保留範圍時,可執行的平行訓練工作數量上限 (假設範圍幾乎完全由 Vertex AI 使用)。如果您使用相同範圍連線至其他服務生產端,請分配較大的範圍來容納這些服務生產端,以免 IP 位址用盡。

訓練工作的機器設定 保留範圍 平行工作數量上限
最多 8 個節點。
舉例來說:第一個工作站集區有 1 個主要副本,第二個工作站集區有 6 個副本,第三個工作站集區有 1 個工作站 (做為參數伺服器)
/16 63
/17 31
/18 15
最多 16 個節點。
舉例來說:第一個工作站集區中有 1 個主要副本,第二個工作站集區中有 14 個副本,第三個工作站集區中有 1 個工作站 (做為參數伺服器)
/16 31
/17 15
/18 7
最多 32 個節點。
例如:第一個工作站集區中有 1 個主要副本,第二個工作站集區中有 30 個副本,第三個工作站集區中有 1 個工作站 (做為參數伺服器)
/16 15
/17 7
/18 3

進一步瞭解如何設定工作站集區,以進行分散式訓練

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

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

gcloud compute networks peerings list --network NETWORK_NAME

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

執行無伺服器訓練

執行無伺服器訓練時,您必須指定要讓 Vertex AI 存取的網路名稱。

視您執行無伺服器訓練的方式而定,請在下列其中一個 API 欄位中指定網路:

如未指定網路名稱,Vertex AI 會執行無伺服器訓練,但不會建立對等互連連線,也無法存取專案中的私人 IP。

範例:使用 gcloud CLI 建立 CustomJob

以下範例說明如何使用 gcloud CLI 執行 CustomJob,並指定使用預先建構的容器。如果您以其他方式執行無伺服器訓練,請network按照您使用的無伺服器訓練作業類型所述,新增 network 欄位。

  1. 建立 config.yaml 檔案來指定網路。如果您使用共用虛擬私有雲,請使用虛擬私有雲主專案編號。

    確認網路名稱格式正確無誤:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    
    cat <<EOF > config.yaml
    network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
    EOF
    
  2. 建立訓練應用程式,在 Vertex AI 上執行。

  3. 建立 CustomJob,並傳遞 config.yaml 檔案:

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --python-package-uris=PYTHON_PACKAGE_URIS \
      --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,python-module=PYTHON_MODULE \
      --config=config.yaml
    

如要瞭解如何替換這項指令中的預留位置,請參閱「建立自訂訓練工作」。

在不同網路上執行工作

如果您仍在其他網路上執行無伺服器訓練,就無法在新網路上執行無伺服器訓練。切換網路前,您必須等待所有已提交的 CustomJobHyperparameterTuningJob 和自訂 TrainingPipeline 資源完成,或取消這些資源。

測試訓練工作存取權

本節說明如何測試無伺服器訓練資源是否可存取網路中的私人 IP。

  1. 在 VPC 網路中建立 Compute Engine 執行個體。
  2. 檢查防火牆規則,確認規則不會限制從 Vertex AI 網路輸入。如果是,請新增規則,確保 Vertex AI 網路可以存取您為 Vertex AI (和其他服務生產者) 保留的 IP 範圍。
  3. 在 VM 執行個體上設定本機伺服器,以便為 Vertex AI CustomJob 建立存取端點。
  4. 建立要在 Vertex AI 上執行的 Python 訓練應用程式。 請建立可存取您在上一步驟中設定端點的程式碼,而非模型訓練程式碼。
  5. 按照先前的範例建立 CustomJob

常見問題

本節列出設定虛擬私有雲網路對等互連與 Vertex AI 時的一些常見問題。

  • 設定 Vertex AI 使用您的網路時,請指定完整網路名稱:

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • 請確認您未在某個網路上執行無伺服器訓練,再於其他網路上執行無伺服器訓練。

  • 請確認您已為網路連線的所有服務生產者 (包括 Vertex AI) 分配足夠的 IP 範圍。

如需其他疑難排解資訊,請參閱 VPC 網路對等互連疑難排解指南

後續步驟