使用私人 IP 進行自訂訓練

與使用公開 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

進一步瞭解如何設定分散式訓練的 worker 集區

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

如果您有現有的對等連線,可用於與 Vertex AI 連線,請列出這些連線,以便查看狀態:

gcloud compute networks peerings list --network NETWORK_NAME

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

執行自訂訓練

執行自訂訓練時,您必須指定要讓 Vertex AI 存取的網路名稱。

視您執行自訂訓練的方式而定,請在下列任一 API 欄位中指定網路:

如果您未指定網路名稱,Vertex AI 會在沒有對等連線的情況下執行自訂訓練,且無法存取專案中的私人 IP。

範例:使用 gcloud CLI 建立 CustomJob

以下範例說明如何使用 gcloud 指令列執行使用預先建構容器的 CustomJob 時指定網路。如果您以其他方式執行自訂訓練,請根據您使用的自訂訓練工作類型,新增 network 欄位。

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

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

    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. 建立 Python 訓練應用程式,以便在 Vertex AI 中執行。請建立可存取您在上一個步驟中設定的端點的程式碼,而非模型訓練程式碼。
  5. 按照先前的範例建立 CustomJob

常見問題

本節列出設定 VPC 網路對等互連與 Vertex AI 時的常見問題。

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

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • 請務必先確認您並未在某個聯播網上執行自訂訓練,再對其他聯播網執行自訂訓練。

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

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

後續步驟