與使用公開 IP 相比,使用私人 IP 連線至訓練工作可提供更高的網路安全性,並減少網路延遲時間。如要使用私人 IP,您可以使用虛擬私有雲 (VPC),將網路與任何類型的 Vertex AI 自訂訓練工作對接。這可讓訓練程式碼存取Google Cloud 或內部部署網路中的私人 IP 位址。
本指南說明如何在您設定虛擬私有雲網路對接,將網路與 Vertex AI CustomJob
、HyperparameterTuningJob
或自訂 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 欄位中指定網路:
如果您要建立
CustomJob
,請指定CustomJob.jobSpec.network
欄位。如果您使用的是 Google Cloud CLI,則可以在
gcloud ai custom-jobs create
指令中使用--config
標記,指定network
欄位。進一步瞭解如何建立
CustomJob
。如果您要建立
HyperparameterTuningJob
,請指定HyperparameterTuningJob.trialJobSpec.network
欄位。如果您使用的是 gcloud CLI,則可以在
gcloud ai hpt-tuning-jobs create
指令中使用--config
標記,指定network
欄位。進一步瞭解如何建立
HyperparameterTuningJob
。如果您在未進行超參數調整的情況下建立
TrainingPipeline
,請指定TrainingPipeline.trainingTaskInputs.network
欄位。進一步瞭解如何建立自訂
TrainingPipeline
。如果您要使用超參數調整功能建立
TrainingPipeline
,請指定TrainingPipeline.trainingTaskInputs.trialJobSpec.network
欄位。
如果您未指定網路名稱,Vertex AI 會在沒有對等連線的情況下執行自訂訓練,且無法存取專案中的私人 IP。
範例:使用 gcloud CLI 建立 CustomJob
以下範例說明如何使用 gcloud 指令列執行使用預先建構容器的 CustomJob
時指定網路。如果您以其他方式執行自訂訓練,請根據您使用的自訂訓練工作類型,新增 network
欄位。
建立
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
建立訓練應用程式,以便在 Vertex AI 中執行。
建立
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
如要瞭解如何替換此指令中的預留位置,請參閱「建立自訂訓練工作」一文。
在不同網路上執行工作
您無法在另一個網路仍在進行自訂訓練的同時,對新網路執行自訂訓練。切換至其他網路前,您必須等待所有提交的 CustomJob
、HyperparameterTuningJob
和自訂 TrainingPipeline
資源完成,或必須取消這些資源。
測試訓練工作存取權
本節說明如何測試自訂訓練資源是否能存取網路中的私人 IP 位址。
- 在 VPC 網路中建立 Compute Engine 執行個體。
- 檢查防火牆規則,確認防火牆規則不會限制 Vertex AI 網路的輸入流量。如果是這樣,請新增規則,確保 Vertex AI 網路可存取您為 Vertex AI (和其他服務供應者) 保留的 IP 範圍。
- 在 VM 執行個體上設定本機伺服器,以便為 Vertex AI
CustomJob
建立端點供其存取。 - 建立 Python 訓練應用程式,以便在 Vertex AI 中執行。請建立可存取您在上一個步驟中設定的端點的程式碼,而非模型訓練程式碼。
- 按照先前的範例建立
CustomJob
。
常見問題
本節列出設定 VPC 網路對等互連與 Vertex AI 時的常見問題。
設定 Vertex AI 使用網路時,請指定完整的網路名稱:
"projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"
請務必先確認您並未在某個聯播網上執行自訂訓練,再對其他聯播網執行自訂訓練。
請確認您已為網路連線的所有服務供應者 (包括 Vertex AI) 分配足夠的 IP 範圍。
如需其他疑難排解資訊,請參閱 VPC 網路對等互連疑難排解指南。
後續步驟
- 進一步瞭解虛擬私有雲網路對等互連。
- 請參閱虛擬私人雲端設計的參考架構和最佳做法。