配置网络和 Cloud TPU 访问权限

本页介绍了如何为 Cloud TPU 设置自定义网络和访问权限配置,包括:

  • 指定自定义网络和子网
  • 指定内部 IP 地址
  • 启用对 TPU 的 SSH 访问
  • 将自定义服务账号附加到 TPU
  • 启用自定义 SSH 方法

前提条件

在运行这些步骤之前,您必须安装 Google Cloud CLI、创建 Google Cloud 项目并启用 Cloud TPU API。如需查看相关说明,请参阅设置 Cloud TPU 环境

指定自定义网络和子网

您可以选择指定要为 TPU 使用的网络和子网。如果未指定网络,TPU 将位于 default 网络中。子网需要与 TPU 运行的可用区位于同一区域。

  1. 创建符合以下有效格式之一的网络:

    • https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network}
    • compute/{version}/projects/{proj-id}/global/networks/{network}
    • compute/{version}/projects/{proj-##}/global/networks/{network}
    • projects/{proj-id}/global/networks/{network}
    • projects/{proj-##}/global/networks/{network}
    • global/networks/{network}
    • {network}

    如需了解详情,请参阅创建和管理 VPC 网络

  2. 创建一个与以下有效格式之一匹配的子网:

    • https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
    • projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
    • regions/{region}/subnetworks/{subnetwork}
    • {subnetwork}

    如需了解详情,请参阅创建和管理 VPC 网络

  3. 创建 TPU,并指定自定义网络和子网:

    gcloud

    如需使用 gcloud CLI 指定网络和子网,请将 --network--subnetwork 标志添加到创建请求中:

        $ gcloud compute tpus tpu-vm create TPU_NAME \
            --zone=us-central2-b \
            --accelerator-type=v4-8 \
            --version=TPU_SOFTWARE_VERSION
            --network=NETWORK
            --subnetwork=SUBNETWORK

    curl

    如需在 curl 调用中指定网络和子网,请将 networksubnetwork 字段添加到请求正文中:

        $ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
            runtime_version:'tpu-vm-tf-2.18.0-pjrt', \
            network_config: {network: 'NETWORK', subnetwork: 'SUBNETWORK', enable_external_ips: true}, \
            shielded_instance_config: { enable_secure_boot: true }}" \
            https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

启用内部 IP 地址

创建 TPU 时,系统会默认为每个 TPU 虚拟机创建外部 IP 地址。

如果您想改为为 TPU 虚拟机创建内部 IP 地址,请在创建 TPU 时使用 --internal-ips 标志。

gcloud

如果您使用的是队列型资源,请执行以下操作:

gcloud compute tpus queued-resources create your-queued-resource-id \
  --node-id your-node-id \
  --project your-project \
  --zone us-central2-b \
  --accelerator-type v4-8 \
  --runtime-version tpu_software_version \
  --internal-ips

如果您使用的是 Create Node API:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --zone=us-central2-b \
    --accelerator-type=v4-8 \
    --version=tpu_software_version \
    --internal-ips

curl

在请求正文中将 enable_external_ips 字段设置为 false

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
    runtime_version:'tpu-vm-tf-2.18.0-pjrt', \
    network_config: {enable_external_ips: false}, \
    shielded_instance_config: { enable_secure_boot: true }}" \
    https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

启用自定义 SSH 方法

如需使用 SSH 连接到 TPU,您需要为 TPU 启用外部 IP 地址,或者为 TPU 虚拟机连接到的子网启用专用 Google 访问通道

启用专用 Google 访问通道

没有外部 IP 地址的 TPU 可以使用专用 Google 访问通道访问 Google API 和服务。如需详细了解如何启用专用 Google 访问通道,请参阅配置专用 Google 访问通道

配置专用 Google 访问通道后,使用 SSH 连接到虚拟机

关联自定义服务账号

每个 TPU 虚拟机都有一个关联的服务账号,该账号用于代表您发出 API 请求。TPU VM 使用此服务账号调用 Cloud TPU API 并访问 Cloud Storage 和其他服务。默认情况下,您的 TPU VM 使用默认的 Compute Engine 服务账号

服务账号必须在创建 TPU VM 的同一 Google Cloud 项目中定义。用于 TPU 虚拟机的自定义服务账号必须具有 TPU 查看器角色,才能调用 Cloud TPU API。如果 TPU 虚拟机中运行的代码调用其他 Google Cloud 服务,则必须具有访问这些服务所需的角色。

如需详细了解服务账号,请参阅服务账号

使用以下命令指定自定义服务账号。

gcloud

创建 TPU 时,请使用 --service-account 标志:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --zone=us-central2-b \
    --accelerator-type=TPU_TYPE \
    --version=tpu-vm-tf-2.18.0-pjrt \
    --service-account=SERVICE_ACCOUNT

curl

在请求正文中设置 service_account 字段:

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
    runtime_version:'tpu-vm-tf-2.18.0-pjrt', \
    network_config: {enable_external_ips: true}, \
    shielded_instance_config: { enable_secure_boot: true }}" \
    service_account: {email: 'SERVICE_ACCOUNT'} \
    https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

启用自定义 SSH 方法

默认网络允许通过 SSH 访问所有 TPU 虚拟机。如果您使用的是默认网络以外的网络,或者更改了默认网络设置,则需要通过添加防火墙规则来明确启用 SSH 访问:

$ gcloud compute tpus tpu-vm compute firewall-rules create \
    --network=NETWORK allow-ssh \
    --allow=tcp:22