與使用公開 IP 相比,使用私人 IP 連線至訓練工作可提供更高的網路安全性,並減少網路延遲時間。如要使用私人 IP,請使用虛擬私有雲 (VPC),將網路與任何類型的 Gemini Enterprise Agent Platform 無伺服器訓練作業對等互連。這可讓訓練程式碼存取Google Cloud 或地端部署網路中的私人 IP 位址。
本指南說明如何設定虛擬私有雲網路對等互連,將網路與 Agent Platform CustomJob、HyperparameterTuningJob 或自訂 TrainingPipeline 資源對等互連,然後在網路中執行無伺服器訓練作業。
總覽
使用私人 IP 提交無伺服器訓練作業前,請務必設定私人服務連線,在網路和 Agent Platform 之間建立對等互連連線。如果已完成設定,可以使用現有的對等互連連線。
本指南涵蓋下列工作:
- 瞭解要為無伺服器訓練預留哪些 IP 範圍。
- 確認現有對等互連連線的狀態。
- 在網路上執行 Gemini Enterprise Agent Platform 無伺服器訓練。
- 先檢查一個網路上是否正在進行訓練,再訓練另一個網路。
- 測試訓練程式碼是否可存取網路中的私人 IP。
為無伺服器訓練預留 IP 範圍
為服務生產者預留 IP 範圍時,Agent Platform 和其他服務都可以使用該範圍。下表顯示使用 /16 至 /18 預留範圍時,可執行的並行訓練工作數量上限 (假設該範圍幾乎完全由 Agent Platform 使用)。如果您使用相同範圍與其他服務生產者連線,請分配較大的範圍來容納他們,以免 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 | ||
進一步瞭解如何設定工作站集區,以進行分散式訓練。
檢查現有對等互連連線的狀態
如果您有與 Agent Platform 搭配使用的現有對等互連連線,可以列出這些連線來檢查狀態:
gcloud compute networks peerings list --network NETWORK_NAME
您應該會看到對等互連連線的狀態為 ACTIVE。
進一步瞭解有效對等互連連線。
執行無伺服器訓練
執行無伺服器訓練時,您必須指定要讓 Agent Platform 存取的網路名稱。
視您執行無伺服器訓練的方式而定,請在下列其中一個 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欄位。
如未指定網路名稱,Agent Platform 會執行無伺服器訓練,但不使用對等互連連線,也無法存取專案中的私人 IP。
範例:使用 gcloud CLI 建立 CustomJob
以下範例說明如何使用 gcloud CLI 執行 CustomJob (使用預先建構的容器時),指定網路。如果您以其他方式執行無伺服器訓練,請按照所用無伺服器訓練工作類型的說明,新增 network 欄位。
建立
config.yaml檔案來指定網路。如果您使用 Shared VPC,請使用虛擬私有雲主專案編號。確認網路名稱格式正確無誤:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") cat <<EOF > config.yaml network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME EOF建立訓練應用程式,以便在 Agent Platform 上執行。
建立
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。
- 在虛擬私有雲網路中建立 Compute Engine 執行個體。
- 檢查防火牆規則,確認規則不會限制從 Agent Platform 網路輸入的流量。如果是,請新增規則,確保 Agent Platform 網路可以存取您為 Agent Platform (和其他服務生產者) 保留的 IP 範圍。
- 在 VM 執行個體上設定本機伺服器,以便為 Agent Platform
CustomJob建立存取端點。 - 建立要在 Agent Platform 上執行的 Python 訓練應用程式。請建立可存取您在上一個步驟中設定的端點的程式碼,而非模型訓練程式碼。
- 按照先前的範例建立
CustomJob。
常見問題
本節列出透過 Agent Platform 設定虛擬私有雲網路對等互連時,可能會遇到的一些常見問題。
設定 Agent Platform 使用您的網路時,請指定完整網路名稱:
"projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"
請確認您未在某個網路上執行無伺服器訓練,再於其他網路上執行無伺服器訓練。
請確認您已為網路連線的所有服務生產者 (包括 Agent Platform) 分配足夠的 IP 範圍。
如需其他疑難排解資訊,請參閱 VPC 網路對等互連疑難排解指南。
後續步驟
- 進一步瞭解 VPC 網路對等互連。
- 如要瞭解虛擬私有雲設計的參考架構和最佳做法,請參閱這篇文章。