与使用公共 IP 地址相比,使用专用 IP 地址连接到训练作业可提高网络安全性并缩短网络延迟时间。 如需使用专用 IP 地址,您可以使用 虚拟私有云 (VPC) 将网络与任何类型的无服务器训练作业对等互连。这样,您的训练作业即可访问Google Cloud 或本地网络内的专用 IP 地址。
本指南介绍了如何在您已经设置 VPC 网络对等互连以使网络与 Agent Platform CustomJob、HyperparameterTuningJob 或自定��� TrainingPipeline 资源对等互连后,在网络中运行无服务器训练作业。
概览
在使用专用 IP 地址提交无服务器训练作业之前,您必须先配置专用服务访问通道以在您的网络与 Agent Platform 之间创建对等互连连接。如果您已经进行了设置,则可以使用现有的对等互连连接。
本指南包含以下任务:
- 了解为无服务器训练预留的 IP 地址范围。
- 验证您的现有对等互连连接的状态。
- 在您的网络上执行无服务器训练。
- 检查另一个网络上的活跃训练,然后再对另一个网络进行训练。
- 测试训练代码是否可以访问网络中的专用 IP。
为无服务器训练预留 IP 地址范围
当您为服务提供方预留 IP 范围时,该范围可供 Agent Platform 和其他服务使用。此表显示您可以通过 /16 到 /18 的预留范围运行的最大并行训练作业数量(假设此范围几乎被 Agent Platform 独占使用)。如果您与使用同一 IP 地址范围的其他服务提供方连接,请分配更大的范围以适应其他服务提供方,以免 IP 地址用尽。
| 训练作业的机器配置 | 预留 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文件以指定网络。如果您使用的是共享 VPC,请使用您的 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。
- 在 VPC 网络中创建一个 Compute Engine 实例。
- 检查您的防火墙规则,确保它们不会限制来自 Agent Platform 网络的入站流量。如果是这样,请添加一条规则,以确保 Agent Platform 网络可以访问您为 Agent Platform(和其他服务提供方)预留的 IP 地址范围。
- 在虚拟机实例上设置本地服务器,以创建 Agent Platform
CustomJob的端点才能访问。 - 创建 Python 训练应用以在 Agent Platform 上运行。 请创建用于访问您在上一步中设置的端点的代码,而不是模型训练代码。
- 按照前面的示例创建
CustomJob。
常见问题
本部分列出了使用 Agent Platform 配置 VPC 网络对等互连时的一些常见问题。
将 Agent Platform 配置为使用您的网络时,请指定完整的网络名称:
"projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"
在使用其他网络执行无服务器训练之前,请确保不要对网络执行无服务器训练。
确保已为您的网络所连接的所有服务提供方(包括 Agent Platform)分配足够的 IP 地址范围。
如需了解更多问题排查信息,请参阅 VPC 网络对等互连问题排查指南。
后续步骤
- 详细了解 VPC 网络对等互连。
- 如需了解 VPC 设计,请参阅参考架构和最佳做法。