與使用公開 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 |
進一步瞭解如何設定工作站集區,以進行分散式訓練。
檢查現有對等互連連線的狀態
如果您有與 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 CLI 執行使用預先建構容器的 CustomJob
時指定網路。如果您以其他方式執行自訂訓練,請network
新增 欄位,如您使用的自訂訓練工作類型所述。
建立
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
建立訓練應用程式,以便在 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
建立存取端點。 - 建立要在 Vertex AI 上執行的 Python 訓練應用程式。 請建立可存取您在上一步驟中設定端點的程式碼,而非模型訓練程式碼。
- 按照先前的範例建立
CustomJob
。
常見問題
本節列出設定虛擬私有雲網路對等互連與 Vertex AI 時的一些常見問題。
設定 Vertex AI 使用您的網路時,請指定完整網路名稱:
"projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"
請務必先停止在某個網路執行自訂訓練,再於其他網路執行自訂訓練。
請確認您已為網路連線的所有服務生產者 (包括 Vertex AI) 分配足夠的 IP 範圍。
如需其他疑難排解資訊,請參閱 VPC 網路對等互連疑難排解指南。
後續步驟
- 進一步瞭解 VPC 網路對等互連。
- 如需虛擬私有雲設計的參考架構和最佳做法,請參閱這篇文章。