将 TPU 连接到共享 VPC 网络

将 TPU 主机连接到共享 VPC 的方式取决于您使用的 TPU 架构(TPU 虚拟机或 TPU 节点)。如需详细了解 TPU 架构,请参阅 TPU 系统架构

将 TPU 虚拟机连接到共享 VPC 网络

配置 VPC 宿主项目

使用 TPU 虚拟机架构时,您需要向服务项目中的 TPU 服务帐号授予管理宿主项目中的资源的权限。您可以使用“TPU 共享 VPC 代理”(roles/tpu.xpnAgent) 角色执行此操作。运行以下 gcloud 命令以授予此角色绑定。

gcloud projects add-iam-policy-binding host-project-id \
--member=serviceAccount:service-your-service-project-number@gcp-sa-tpu.iam.gserviceaccount.com \
--role=roles/tpu.xpnAgent

创建连接到共享 VPC 网络的 TPU 虚拟机

首先确定可用区中可用的加速器类型和版本

gcloud compute tpus accelerator-types list --zone zone
gcloud compute tpus versions list --zone zone

创建 TPU 时,您需要将 TPU 虚拟机连接到共享 VPC 网络。请使用 --network 标记指定您的共享 VPC:

gcloud compute tpus tpu-vm create tpu-name \
--zone zone \
--accelerator-type accelerator-type \
--network projects/host-project-id/global/networks/host-network \
--version runtime-version \
--project your-service-project-id

您可以使用 gcloud compute tpus tpu-vm describe 命令验证您的 TPU 虚拟机是否已连接到您的共享 VPC:

$ gcloud compute tpus tpu-vm describe tpu-name --zone zone

响应包含您的 TPU 虚拟机连接到的网络:

acceleratorType: v3-8
apiVersion: V2
cidrBlock: 10.128.0.0/20
createTime: '2022-06-17T21:32:13.859274143Z'
health: HEALTHY
id: '0000000000000000000'
name: projects/my-project/locations/us-central1-b/nodes/my-tpu
networkConfig:
  enableExternalIps: true
  network: projects/my-project/global/networks/default
  subnetwork: projects/my-project/regions/us-central1/subnetworks/default
networkEndpoints:
- accessConfig:
    externalIp: 000.000.000.000
  ipAddress: 10.128.0.104
  port: 8470
runtimeVersion: tpu-vm-tf-2.8.0
schedulingConfig: {}
serviceAccount:
  email: 00000000000-compute@developer.gserviceaccount.com
  scope:
  - https://www.googleapis.com/auth/devstorage.read_write
  - https://www.googleapis.com/auth/logging.write
  - https://www.googleapis.com/auth/service.management
  - https://www.googleapis.com/auth/servicecontrol
  - https://www.googleapis.com/auth/cloud-platform
  - https://www.googleapis.com/auth/pubsub
shieldedInstanceConfig: {}
state: READY

删除 TPU 虚拟机

使用完 TPU 虚拟机后,请务必将其删除。

gcloud compute tpus tpu-vm delete tpu-name \
--zone zone \

将 TPU 节点连接到共享 VPC

配置 Private Services Access

在将 TPU 节点与共享 VPC 配合使用之前,您需要建立专用服务访问通道连接

  1. 使用以下 Google Cloud CLI 命令启用 Service Networking API。每个 Cloud Platform 项目只需执行一次此操作。

    gcloud services enable servicenetworking.googleapis.com
    
  2. 分配一个预留地址范围,以供 Service Networking 使用。prefix-length 不得超过 24。例如:

    gcloud compute addresses create sn-range-1 --global \
    --addresses=10.110.0.0 \
    --prefix-length=16 \
    --purpose=VPC_PEERING \
    --network=network-name
  3. 建立专用服务访问连接。

    $ gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \
    --ranges=sn-range-1 \
    --network=network-name
    
  4. 验证已创建 VPC 对等互连。以下命令可以列出指定网络的所有 VPC 对等互连。

    gcloud services vpc-peerings list --network=network-name
    

将 TPU 节点连接到共享 VPC 网络

创建 TPU 时,您需要将 TPU 节点连接到共享 VPC 网络。请使用 --network 标记指定您的共享 VPC:

$ gcloud compute tpus execution-groups create \
  --name=tpu-name \
  --zone=zone \
  --tf-version=2.12.0 \
  --machine-type=n1-standard-1 \
  --accelerator-type=v3-8 \
  --network=network-name

检索特定 TPU 节点的相关信息

$ gcloud compute tpus describe tpu-name --zone zone

响应包含以下信息:

acceleratorType: v3-8
apiVersion: V1
cidrBlock: 00.0.000.000/29
createTime: '2022-11-30T18:59:20.655858097Z'
health: HEALTHY
ipAddress: 00.000.0.000
name: projects/ml-writers/locations/us-central1-a/nodes/mikegre-vcp
network: global/networks/mikegre-vpc
networkEndpoints:
- ipAddress: 00.0.000.000
  port: 8470
port: '8470'
schedulingConfig: {}
serviceAccount: service-00000000000@cloud-tpu.iam.gserviceaccount.com
state: READY
tensorflowVersion: 2.10.0

删除 TPU 节点

使用完 TPU 节点后,请务必将其删除。

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone
### 删除 VPC 对等互连 可以使用 Compute Networking API 断开对等互连连接。 这些调用应在共享 VPC 宿主项目中进行。 1. 列出所有 VPC 对等互连,以查找要删除的对等互连的名称。
   $ gcloud compute networks peerings list --network=network-name
   
  1. 删除 VPC 对等互连。

    $ gcloud compute networks peerings delete peering-name --network=network-name