将 VPC 网络对等互连与 Training 结合使用

您可以将 AI Platform Training 作业配置为与 Virtual Private Cloud (VPC) 建立对等互连。这样,您的训练作业即可访问 Google Cloud 或本地网络内的专用 IP 地址。与使用公共 IP 地址相比,使用专用 IP 地址连接到训练作业可提高网络安全性并缩短网络延迟时间。

本指南介绍了如何使用 VPC 网络对等互连,将您的网络与 AI Platform Training 作业建立对等互连,从而为 AI Platform Training 配置专用 IP 地址。建议已熟悉 Google Cloud 网络概念的网络管理员阅读本指南。

概览

本指南包含以下任务:

  • 为 VPC 配置专用服务访问通道。这将在您的 VPC 与 Google 的共享 VPC 网络之间建立对等互连连接。
  • 考虑您需要为 AI Platform Training 预留的 IP 地址范围。
  • 如果适用,请导出自定义路由,以供 AI Platform Training 导入。
  • 验证您的对等互连连接的状态。
  • 在网络上提交一个训练作业。
  • 请先检查一个网络上是否存在活跃的训练作业,然后再在另一个网络上提交作业。
  • 测试训练作业可以访问您网络中的专用 IP 地址。

准备工作

  • 选择要与 AI Platform Training 作业建立对等互连的 VPC。
  • 选择或创建一个 Google Cloud 项目,以使用 AI Platform Training 运行训练作业。
  • 确保您的 Google Cloud 项目已启用结算功能

  • 启用 Compute Engine API, AI Platform Training & Prediction, and the Service Networking API。

    启用 API

  • (可选)您可以使用共享 VPC。在使用共享 VPC 时,您通常会在单独的 Google Cloud 项目(而非 VPC 宿主项目)中运行训练作业。在这两个项目中启用 Compute Engine API 和 Service Networking API。了解如何配置共享 VPC
  • 如果您要运行本指南中的 gcloud 命令行示例,请安装 gcloud CLI

权限

如果您不是 Project Owner 或 Project Editor,请确保您拥有 Compute Network Admin 角色,该角色包括管理网络资源所需的权限。

要在 AI Platform Training 上运行作业,您需要 AI Platform Training Admin 或 AI Platform Training Developer 角色所包含的权限。 详细了解 AI Platform Training IAM 角色

使用本地网络对等互连

对于与本地网络之间的 VPC 网络对等互连,还需要执行其他一些步骤:

  1. 将您的本地网络连接到您的 VPC。为此,您可以使用 VPN 隧道
  2. 设置从 VPC 到本地网络的自定义路由
  3. 导出自定义路由,以供 AI Platform Training 导入。

为您的 VPC 设置专用服务访问通道

设置专用服务访问通道时,您可以在自己的网络与 Google 或第三方服务(服务提供方)拥有的网络之间建立专用连接。 本例中的服务提供方是 AI Platform Training。要设置专用服务访问通道,请为服务提供方预留一个 IP 地址范围,然后使用 AI Platform Training 创建对等互连连接。

如果您已拥有配置了专用服务访问通道的 VPC,并且要使用该 VPC 与训练作业建立对等互连,请转到导出自定义路由

  1. 为项目 ID、区域名称、预留范围的名称和网络名称设置环境变量。
    • 如果您使用共享 VPC,请使用 VPC 宿主项目的项目 ID。否则,请使用您用于运行训练作业的 Google Cloud 项目的项目 ID。
    • 选择一个符合条件的地区,以便与 AI Platform Training 结合使用。
  2. 启用所需的 API。如果您使用共享 VPC,请务必在 VPC 宿主项目和用于运行训练作业的 Google Cloud 项目中启用 API。
  3. 使用 gcloud compute addresses create 设置预留范围。
  4. 使用 gcloud services vpc-peerings connect 在您的 VPC 宿主项目与 Google 的 Service Networking 之间建立对等互连连接。

    PROJECT_ID=YOUR_PROJECT_ID
    gcloud config set project $PROJECT_ID
    
    REGION=YOUR_REGION
    
    # This is for display only; you can name the range anything.
    PEERING_RANGE_NAME=google-reserved-range
    
    NETWORK=YOUR_NETWORK_NAME
    
    # NOTE: `prefix-length=16` means a CIDR block with mask /16 will be
    # reserved for use by Google services, such as AI Platform Training.
    gcloud compute addresses create $PEERING_RANGE_NAME \
      --global \
      --prefix-length=16 \
      --description="peering range for Google service" \
      --network=$NETWORK \
      --purpose=VPC_PEERING
    
    # Create the VPC connection.
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK \
      --ranges=$PEERING_RANGE_NAME \
      --project=$PROJECT_ID
    

详细了解专用服务访问通道

为 AI Platform Training 预留 IP 地址范围

当您为服务提供方预留 IP 地址范围时,该范围将可供 AI Platform Training 以及其他服务使用。因此,如果您计划将其他服务连接到同一预留范围,则还必须确保该范围足够大,以避免 IP 耗尽。

您可以保守地估算每个训练作业使用的地址数量,如下所示:

nextPow2(32 * NUMBER_OF_POOLS * max(POOL_SIZE))

下表显示了您可以使用预留范围(/16/19)运行的并行训练作业的数量上限(假设该范围中的 IP 地址几乎仅供 AI Platform Training 使用)。

训练作业的机器配置 预留 IP 地址范围 并行作业的数量上限
最多 8 个节点。
例如:6 个工作器、1 个主实例和 1 个参数服务器。
/16 63
/17 31
/18 15
/19 7
最多 16 个节点。
例如:14 个工作器、1 个主实例和 1 个参数服务器。
/16 31
/17 15
/18 7
/19 3
最多 32 个节点。
例如:30 个工作器、1 个主实例和 1 个参数服务器。
/16 15
/17 7
/18 3
/19 1

详细了解如何为训练作业指定机器类型

导出自定义路由

如果您使用自定义路由,则需要导出这些路由,以供 AI Platform Training 导入。如果您不使用自定义路由,请转到提交训练作业

要导出自定义路由,请在 VPC 中更新对等互连连接。导出自定义路由会将 VPC 网络中所有符合条件的静态和动态路由(例如,到本地网络的路由)发送到服务提供方(在本例中为 AI Platform Training)的网络。这将建立必要的连接,并允许训练作业将流量发回至本地网络。

详细了解与本地网络的专用连接

控制台

  1. 转到 Google Cloud 控制台中的“VPC 网络对等互连”页面。
    转到“VPC 网络对等互连”页面
  2. 选择要更新的对等互连连接。
  3. 点击修改
  4. 选择导出自定义路由

gcloud

  1. 找到要更新的对等互连连接的名称。如果您有多个对等互连连接,请忽略 --format 标志。

    gcloud services vpc-peerings list \
      --network=$NETWORK \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID \
      --format "value(peering)"
    
  2. 更新对等互连连接以导出自定义路由。

    gcloud compute networks peerings update PEERING-NAME \
        --network=$NETWORK \
        --export-custom-routes \
        --project=$PROJECT_ID
    

检查您的对等互连连接的状态

要查看对等互连连接是否处于活跃状态,您可以使用如下代码列出它们

gcloud compute networks peerings list --network $NETWORK

您应该看到,刚刚创建的对等互连的状态为 ACTIVE。 详细了解处于活跃状态的对等互连连接

提交训练作业

提交训练作业时,您需要指定希望 AI Platform Training 有权访问的网络的名称。

如果您在未指定网络名称的情况下提交了训练作业,则训练作业默认会在没有对等互连连接且无权访问项目中专用 IP 的状态下运行。

  1. 创建一个 config.yaml 以指定网络。如果您使用的是共享 VPC,请使用您的 VPC 宿主项目的编号。

    确保网络名称的格式正确无误:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    cat << EOF > config.yaml
    trainingInput:
      scaleTier: BASIC
      network: projects/$PROJECT_NUMBER/global/networks/$NETWORK
    EOF
    
  2. 创建训练应用以提交到 AI Platform Training。

  3. 为训练作业指定其他参数。详细了解提交训练作业所需的参数。

    TRAINER_PACKAGE_PATH="PATH_TO_YOUR_TRAINING_APPLICATION"
    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="YOUR_JOB_NAME_$now"
    MAIN_TRAINER_MODULE="trainer.task"
    JOB_DIR="gs://PATH_TO_OUTPUT_DIRECTORY"
    REGION="us-east1"
    RUNTIME_VERSION="2.11"
    PYTHON_VERSION="3.7"
    
  4. 提交作业,并传递您的 config.yaml 文件:

    gcloud ai-platform jobs submit training $JOB_NAME \
      --module-name $MAIN_TRAINER_MODULE \
      --job-dir $JOB_DIR \
      --region $REGION \
      --runtime-version $RUNTIME_VERSION \
      --python-version $PYTHON_VERSION \
      --package-path $TRAINER_PACKAGE_PATH \
      --config config.yaml
    

在不同网络上运行作业

如果另一个新网络上仍存在活跃的训练作业,您就无法向该网络提交训练作业。在切换到不同的网络之前,您必须等待所有已提交的训练作业完成,或者将其取消。例如,如果您设置了用于测试的网络,并且您在该测试网络上提交了训练作业,那么需要首先在测试网络上搜索活跃的作业,并确保这些作业已经完成或取消,然后再在另一个生产用途的网络上提交训练作业。

列出网络上仍处于活跃状态的训练作业:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
NETWORK_FULL_NAME="projects/$PROJECT_NUMBER/global/networks/$NETWORK"

gcloud ai-platform jobs list \
  --filter "(state=queued OR state=running) AND (trainingInput.network=$NETWORK_FULL_NAME)"

您的输出可能类似于下面这样:

JOB_ID                                             STATUS     CREATED
job_20200502_151443                                QUEUED     2020-05-02T15:14:47

如果列出了任何作业,您可以等待这些作业完成,或使用 gcloud ai-platform jobs cancel 取消其中的每项作业。

测试训练作业访问权限

要测试训练作业是否可以访问网络中的端点,您需要在网络中设置端点,然后提交访问该端点的训练作业。如需了解详情,请参阅测试对等互连连接指南

问题排查

本部分列出了使用 AI Platform Training 配置 VPC 网络对等互连时的一些常见问题。

  • 提交训练作业时,请使用下面这样的完整网络名称:

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • 不要在与您的网络建立了对等互连的训练作业中使用 TPU。在 AI Platform Training 上,VPC 网络对等互连不支持 TPU。

  • 在另一个网络上提交训练作业之前,请先确保网络上没有活跃的训练作业。

  • 确保已为您的网络所连接的所有服务提供方(包括 AI Platform Training)分配足够的 IP 地址范围。

如需了解更多问题排查信息,请参阅 VPC 网络对等互连问题排查指南

后续步骤