在 GKE 上运行 Cloud TPU 应用

本指南介绍如何完成以下任务:

如需详细演示,请阅读教程以了解如何使用 Cloud TPU 和 GKE 训练 TensorFlow ResNet-50 模型。

在 GKE 上运行 Cloud TPU 应用的优势

Cloud TPU 训练应用可配置为在 GKE pod 内的 GKE 容器中运行。这样配置有以下优势:

  • 简化设置和管理:使用 Cloud TPU 时,您需要一个 Compute Engine 虚拟机来运行工作负载,还需要为 Cloud TPU 设置一个 CIDR(无类别域间路由)块。GKE 可替您设置虚拟机和 CIDR 块以及管理虚拟机。

  • 优化费用:您只需支付作业活动期间的 TPU 费用。GKE 会根据作业的资源要求自动创建和删除 TPU。

  • 使用灵活:只需在您的 Pod 规范中更改一行内容即可申请其他硬件加速器(CPU、GPU 或 TPU):

    kind: Pod
    spec:
      containers:
      - name: example-container
        resources:
          limits:
            cloud-tpus.google.com/v2: 8
            # See the line above for TPU, or below for CPU / GPU.
            # cpu: 2
            # nvidia.com/gpu: 1
    
  • 扩容能力:GKE 提供的 API(Job API 和 Deployment API)可助您轻松扩容到数百个 GKE pod 和 Cloud TPU 节点。

  • 容错能力:GKE 的 Job API 连同 TensorFlow 检查点机制共同提供了“运行到完成”的语义。如果虚拟机实例或 Cloud TPU 节点发生故障,您的训练作业将使用从检查点读取的最新状态自动重新运行。

Cloud TPU 和 GKE 配置要求和限制

定义 GKE 配置时,请注意以下事项:

  • 您必须使用 GKE 1.13.4-gke.5 或更高版本。您可以按照如下所述在 gcloud container clusters create 命令中添加 --cluster-version 参数以指定版本。要详细了解版本信息,请参阅 SDK 文档
  • 您必须使用 TensorFlow 1.15.5 或更高版本。您应该按如下所述在 Kubernetes Pod 规范中指定 Cloud TPU 所用的 TensorFlow 版本。
  • 您必须在提供 Cloud TPU 的地区创建 GKE 集群和节点池,还必须创建 Cloud Storage 存储分区,将您的训练数据和模型保存在 GKE 集群所属的区域中。 以下区域可供使用:

    美国

    TPU 类型 (v2) TPU v2 核心数 TPU 总内存 区域/地区
    v2-8 8 64 GiB us-central1-b
    us-central1-c
    us-central1-f
    v2-32 32 256 GiB us-central1-a
    v2-128 128 1 TiB us-central1-a
    v2-256 256 2 TiB us-central1-a
    v2-512 512 4 TiB us-central1-a
    TPU 类型 (v3) TPU v3 核心数 TPU 总内存 可用地区
    v3-8 8 128 GiB us-central1-a
    us-central1-b
    us-central1-f

    欧洲

    TPU 类型 (v2) TPU v2 核心数 TPU 总内存 区域/地区
    v2-8 8 64 GiB europe-west4-a
    v2-32 32 256 GiB europe-west4-a
    v2-128 128 1 TiB europe-west4-a
    v2-256 256 2 TiB europe-west4-a
    v2-512 512 4 TiB europe-west4-a
    TPU 类型 (v3) TPU v3 核心数 TPU 总内存 可用地区
    v3-8 8 128 GiB europe-west4-a
    v3-32 32 512 GiB europe-west4-a
    v3-64 64 1 TiB europe-west4-a
    v3-128 128 2 TiB europe-west4-a
    v3-256 256 4 TiB europe-west4-a
    v3-512 512 8 TiB europe-west4-a
    v3-1024 1024 16 TiB europe-west4-a
    v3-2048 2048 32 TiB europe-west4-a

    亚太地区

    TPU 类型 (v2) TPU v2 核心数 TPU 总内存 区域/地区
    v2-8 8 64 GiB asia-east1-c
  • 每个容器最多可以申请一个 Cloud TPU,但 Pod 中的多个容器可以各自申请一个 Cloud TPU。
  • 集群自动扩缩器在 GKE 1.13.4-gke.5 或更高版本上支持 Cloud TPU。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 结合使用 GKE 和 Cloud TPU 时,您的项目会 使用 Google Cloud 的计费组件。如需估算您的费用,请查看 Cloud TPU 价格GKE 价格;并且在使用完资源之后,按照相关说明清理资源

  5. 在 Cloud Console中启用以下API:

创建服务帐号和 Cloud Storage 存储分区

您需要一个 Cloud Storage 存储分区来存储机器学习模型的训练结果。

  1. 打开一个 Cloud Shell 窗口。

    打开 Cloud Shell

  2. 为项目 ID 创建一个变量。

    export PROJECT_ID=project-id
    
  3. 使用 gcloud API 为 Cloud TPU 项目创建服务帐号。

    gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
    

    该命令将返回以下格式的 Cloud TPU 服务帐号:

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    
  4. 创建一个新的存储分区,并指定以下选项:

    • 您选择的唯一名称。
    • 位置类型:region
    • 位置:us-central1
    • 默认存储类别:Standard
    • 访问权限控制机制:fine-grained

    在使用存储分区之前,您需要向 Cloud TPU 服务帐号授予存储分区的访问权限。为 Cloud TPU 服务帐号设置精细 ACL

授权 Cloud TPU 访问 Cloud Storage 存储分区

您需要向 Cloud TPU 提供对 Cloud Storage 对象的读取/写入权限。为此,您必须向 Cloud TPU 使用的服务帐号授予必需的访问权限。请按照相关指南授予对存储分区的访问权限

创建支持 Cloud TPU 的新集群

您可以使用 Cloud Console 或 gcloud 工具创建支持 Cloud TPU 的集群。

要查看相关说明,请选择下述某一选项:

控制台

按照下述说明创建一个支持 Cloud TPU 的 GKE 集群:

  1. 转到 Cloud Console 上的 GKE 页面。

    转到 GKE 页面

  2. 点击创建集群

  3. 为集群指定名称。该名称在项目和地区中必须是唯一的。

  4. 对于位置类型,请选择地区,然后选择您计划在其中使用 Cloud TPU 资源的所需地区。在本例中,选择 us-central1-b 可用区。

  5. 务必将主版本设置为 1.13.4-gke.5 或更高版本,以支持 Cloud TPU。

  6. 在导航窗格的要配置的节点池下,点击安全

  7. 选择允许所有 Cloud API 的完整访问权限。这可确保集群中的所有节点都能访问您的 Cloud Storage 存储分区。要实现访问,该集群和存储分区必须位于同一项目中。默认情况下,Kubernetes pod 继承其所部署到的节点的访问权限范围。如果您想要根据每个 Pod 来限制访问权限,请参阅 GKE 指南通过服务帐号进行身份验证

  8. 在导航窗格的集群下,点击网络

  9. 选择启用 VPC 原生流量路由(使用别名 IP),如果当前项目不存在 VPC 网络,您需要创建一个 VPC 网络

  10. 在导航窗格的集群下,点击功能

  11. 选择启用 Cloud TPU

  12. 根据需要配置集群的其余选项。将其余选项保留为默认值。

  13. 点击创建

  14. 连接到该集群。具体做法是,从 Console Kubernetes 集群页面选择您的集群,然后点击连接按钮。系统将显示要在 Cloud Shell 中运行以进行连接的 gcloud 命令。

gcloud

按照以下说明操作,使用 gcloud 工具设置环境并创建一个支持 Cloud TPU 的 GKE 集群:

  1. 安装 gcloud 组件,您需要这些组件来运行支持 Cloud TPU 的 GKE:

    $ gcloud components install kubectl 
  2. 使用您的 Google Cloud 项目 ID 来配置 gcloud

    $ gcloud config set project project-name
    

    project-name 替换为您的 Google Cloud 项目的名称。

    当您第一次在新的 Cloud Shell 虚拟机中运行此命令时,系统会显示 Authorize Cloud Shell 页面。点击页面底部的 Authorize 以允许 gcloud 使用您的凭据进行 GCP API 调用。

  3. 对您计划使用 Cloud TPU 资源的可用区配置 gcloud。在本教程中,请使用 us-central1-b 可用区:

    $ gcloud config set compute/zone us-central1-b
    
  4. 使用 gcloud container clusters create 命令在 GKE 上创建一个支持 Cloud TPU 的集群。在以下命令中,将 cluster-name 替换为您选择的集群名称:

    $ gcloud container clusters create cluster-name \
      --cluster-version=1.16 \
      --scopes=cloud-platform \
      --enable-ip-alias \
      --enable-tpu
    

    命令标志说明

    cluster-version
    表示该集群将使用最新的 Kubernetes 1.16 版本。您必须使用 1.13.4-gke.5 或更高版本。
    scopes
    确保集群中的所有节点都能访问您的 Cloud Storage 存储分区。要实现访问,该集群和存储分区必须位于同一项目中。请注意,Kubernetes Pod 默认继承其所部署到的节点的访问权限范围。因此,scopes=cloud-platform 向在该集群中运行的所有 Kubernetes Pod 授予 cloud-platform 范围。如果您想要根据每个 Pod 来限制访问权限,请参阅 GKE 指南通过服务帐号进行身份验证
    enable-ip-alias
    表示集群使用别名 IP 范围。如需在 GKE 上使用 Cloud TPU,这是必需的设置。
    enable-tpu
    表示集群必须支持 Cloud TPU。
    tpu-ipv4-cidr(可选,未在上文中指定)
    表示用于 Cloud TPU 的 CIDR 范围。以 IP/20 的形式指定 IP_RANGE,例如 10.100.0.0/20。如果未指定此标志,则自动分配大小为 /20 的 CIDR 范围。

    创建集群后,您应该会看到类似于以下内容的消息:

    NAME             LOCATION       MASTER_VERSION    MASTER_IP     MACHINE_TYPE   NODE_VERSION      NUM_NODES  STATUS
    cluster-resnet  us-central1-b  1.16.15-gke.4901  34.71.245.25  n1-standard-1  1.16.15-gke.4901  3          RUNNING
    

查看集群操作

启用 Cloud TPU 支持会启动更新操作。对于 区域级集群,此操作大约需要 5 分钟;对于 地区级集群,此操作大约需要 15 分钟,具体取决于集群所在的地区。

如需列出集群中所有正在运行和已完成的操作,请运行以下命令:

   $ gcloud container operations list
   

如需详细了解特定操作,请运行以下命令:

   $ gcloud container operations describe operation-id
   

operation-id 替换为特定操作的 ID。

在 Kubernetes Pod 规范中申请 Cloud TPU

请在 Kubernetes Pod 规范中执行以下操作:

  • 使用以下 Pod 注释指定 Cloud TPU 节点使用的 TensorFlow 版本:

    tf-version.cloud-tpus.google.com: "x.y"
    

    其中,x.y 是 Cloud TPU 支持的 TensorFlow 版本。您必须使用 TensorFlow 1.15.5 或更高版本。为 Kubernetes pod 创建的所有 Cloud TPU 实例必须使用同一 TensorFlow 版本。您必须在容器中使用同一 TensorFlow 版本来构建模型。请参阅支持的版本

  • 在容器规范的 resource 字段下的 limits 部分中指定 Cloud TPU 资源。

    请注意,Cloud TPU 资源的单位是 Cloud TPU 核心的数量。下表列出了所有有效资源请求。

    如果要使用的资源是 Cloud TPU Pod,请申请配额,因为 Cloud TPU Pod 的默认配额为零。

    资源请求 Cloud TPU 类型 所需的 GKE 版本
    cloud-tpus.google.com/v2: 8 Cloud TPU v2 设备(8 核) 1.10.4-gke.2 或更高版本
    cloud-tpus.google.com/v2: 32 v2-32 Cloud TPU Pod(32 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v2: 128 v2-128 Cloud TPU Pod(128 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v2: 256 v2-256 Cloud TPU Pod(256 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v2: 512 v2-512 Cloud TPU Pod(512 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 32 v3-32 Cloud TPU Pod(32 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 64 v3-64 Cloud TPU Pod(64 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 128 v3-128 Cloud TPU Pod(128 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 256 v3-256 Cloud TPU Pod(256 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 512 v3-512 Cloud TPU Pod(512 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 1024 v3-1024 Cloud TPU Pod(1024 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/v3: 2048 v3-2048 Cloud TPU Pod(2048 核)(测试版) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/preemptible-v2: 8 抢占式 Cloud TPU v2 设备(8 核) 1.10.6-gke.1 或更高版本
    cloud-tpus.google.com/v3: 8 Cloud TPU v3 设备(8 核) 1.10.7-gke.6 或更高版本
    cloud-tpus.google.com/preemptible-v3: 8 抢占式 Cloud TPU v3 设备(8 核) 1.10.7-gke.6 或更高版本

    要详细了解如何在 Pod 规范中指定资源和限制,请参阅 Kubernetes 文档

下面所示的示例作业规范申请了一个使用 TensorFlow 2.3 的抢占式 Cloud TPU v2 设备。它还会启动 TensorBoard 过程

Cloud TPU 节点的生命周期取决于请求这些节点的 Kubernetes Pod。安排 Kubernetes Pod 时会按需创建 Cloud TPU,删除 Pod 时会回收此 Cloud TPU。

apiVersion: batch/v1
kind: Job
metadata:
  name: resnet-tpu
spec:
  template:
    metadata:
      annotations:
        # The Cloud TPUs that will be created for this Job will support
        # TensorFlow 2.3. This version MUST match the
        # TensorFlow version that your model is built on.
        tf-version.cloud-tpus.google.com: "2.3"
    spec:
      restartPolicy: Never
      containers:
      - name: resnet-tpu
        # The official TensorFlow 2.3.0 image.
        # https://hub.docker.com/r/tensorflow/tensorflow
        image: tensorflow/tensorflow:2.3.0
        command:
        - bash
        - -c
        - |
          pip install tf-models-official==2.3.0
          python3 -m official.vision.image_classification.resnet.resnet_ctl_imagenet_main \
            --tpu=$(KUBE_GOOGLE_CLOUD_TPU_ENDPOINTS) \
            --distribution_strategy=tpu \
            --steps_per_loop=500 \
            --log_steps=500 \
            --use_synthetic_data=true \
            --dtype=fp32 \
            --enable_tensorboard=true \
            --train_epochs=90 \
            --epochs_between_evals=1 \
            --batch_size=1024 \
            --model_dir=gs://bucket-name/resnet
        resources:
          limits:
            # Request a single Preemptible v2-8 Cloud TPU device to train the
            # model. A single v2-8 Cloud TPU device consists of 4 chips, each of
            # which has 2 cores, so there are 8 cores in total.
            cloud-tpus.google.com/preemptible-v2: 8
      - name: tensorboard
        image: tensorflow/tensorflow:2.2.0
        command:
        - bash
        - -c
        - |
          pip install tensorboard-plugin-profile==2.3.0 cloud-tpu-client
          tensorboard --logdir=gs://bucket-name/resnet --port=6006
        ports:
        - containerPort: 6006

创建作业

请按照以下步骤在 GKE 集群中创建作业并安装 kubectl

  1. 使用文本编辑器创建作业规范 example-job.yaml,并在上述作业规范中进行复制/粘贴。请务必将 --model_dir 参数和 tensorboard 命令中的 bucket-name 变量替换为您的存储分区名称。

  2. 运行该作业:

    $ kubectl create -f example-job.yaml
    
    job "resnet-tpu" created

    此命令创建作业,该作业会自动安排 Pod。

  3. 验证 Pod 是否已安排且 Cloud TPU 节点是否已预配。请求 Cloud TPU 节点的 Pod 可能要等到 5 分钟后才会运行。在 Pod 安排好之前,您将会看到类似如下所示的输出。

    $ kubectl get pods -w
    
    NAME               READY     STATUS    RESTARTS   AGE
    resnet-tpu-cmvlf   0/1       Pending   0          1m
    

    5 分钟后,您应该会看到如下内容:

    NAME               READY     STATUS    RESTARTS   AGE
    resnet-tpu-cmvlf   1/1       Running   0          6m
    

查看 Cloud TPU 状态和日志

请按照以下步骤验证 Kubernetes pod 所使用的 Cloud TPU 实例的状态并查看其日志。

  1. 转到 Cloud Console 上的 GKE 页面。

    转到 GKE 页面

  2. 在左侧导航栏上,点击工作负载

  3. 选择作业。系统会将您转到一个包含托管 Pod 标题的页面。

  4. 托管 Pod 下,选择您的 Kubernetes Pod。系统会将您转到包含容器标题的页面。

    容器下会显示容器列表。此列表包含所有 Cloud TPU 实例。针对每个容器,系统会显示以下信息:

    • 运行状态
    • 指向容器日志的链接

使用 TensorBoard 来直观显示指标和分析性能

TensorBoard 是一套专用于直观地呈现 TensorFlow 数据的工具。TensorBoard 可帮助确定处理过程中的瓶颈,并提出改善性能的建议。

TPU Profiler 是一款 TensorBoard 插件,用于捕获单个 Cloud TPU 上的分析数据并在 TensorBoard 上直观呈现。您使用 TPU Profiler 从正在运行的 TensorFlow 模型中收集跟踪记录信息之后,才能在 TensorBoard 菜单栏上的 Profile 标签页下使用 Cloud TPU 工具选择器。

在 GKE 集群中运行 Tensorboard

请按照以下步骤在 GKE 集群中运行 TensorBoard:

  1. 按照查看 TensorBoard 状态的步骤来验证 TensorBoard 实例是否在容器中运行。

  2. 执行 Port-forward 转到 TensorBoard Kubernetes Pod:

    $ kubectl port-forward pod/resnet-tpu-pod-id 6006
    

    其中 pod-id 是控制台上显示的 GKE Pod 名称的最后一组数字:Kubernetes Engine > 工作负载 > 托管 Pod。例如:resnet-tpu-wxskc

  3. 在 Cloud Shell 右上角的边栏上,点击网页预览按钮并打开端口 6006 以查看 TensorBoard 输出。TensorBoard 界面在浏览器中将以标签页的形式显示。

  4. 从 TensorBoard 页面右上角的下拉菜单中选择 PROFILE

  5. 点击性能剖析文件页面上的捕获性能剖析文件按钮。

  6. 在弹出式菜单中,选择 TPU 名称地址类型,然后输入 TPU 名称。TPU 名称显示在 Cloud Console 中的 Compute Engine > TPU 页面,并采用以下格式:

    gke-cluster-name-cluster-id-tpu-tpu-id
    
    例如:
    gke-demo-cluster-25cee208-tpu-4b90f4c5

  7. 如果您已准备好开始分析,请在弹出菜单上选择捕获按钮,然后等待几秒钟让分析完成。

  8. 刷新浏览器,在 TensorBoard 的 PROFILE 标签页下查看跟踪记录数据。

如需详细了解如何捕获和解释性能剖析文件,请参阅 TensorFlow Profiler 指南

在 Docker 映像中构建模型并将模型容器化

您可以使用已在 Docker 映像中完成容器化的官方 TPU 模型,也可以构建自己的模型,然后对其进行容器化。

  • 使用官方 TPU 模型

    最新的官方 TPU 模型已在 Docker 映像中完成容器化。这些 Docker 映像使用 Dockerfile 构建而成。

  • 构建您自己的模型

    TensorFlow 文档中的 Colab 笔记本提供了有关如何构建自己的模型的示例。

    如果您选择构建自己的模型,请按照以下步骤操作,在 Docker 映像中将模型容器化并推送到 Google Container Registry

    1. 在 Cloud Console中启用以下API:

    2. 创建一个包含以下行的 Dockerfile。

      FROM tensorflow/tensorflow:2.3.0
      
      RUN pip install tf-models-official==2.3.0 tensorboard-plugin-profile==2.3.0 cloud-tpu-client
      
    3. 在 Dockerfile 所在目录中运行以下命令,以构建和标记 Docker 映像。将 my-project 变量替换为您的项目名称,将 my-image 变量替换为映像名称。

      gcloud builds submit . -t gcr.io/my-project/my-image
      

      gcr.io 前缀是指映像托管在其中的 Container Registry。运行此命令不会上传映像。

    4. 运行 docker images 命令以验证构建是否成功:

       docker images
      
      输出:
      REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
      gcr.io/my-project/my-image     v1                  25cfadb1bf28        10 seconds ago      54 MB
      
    5. 更新作业规范以使用该 Docker 映像。将变量 my-projectmy-image 替换为您的项目名称和已定义的映像名称。此外,将 bucket-name 变量替换为您将用于存储模型的训练输出的存储分区的名称。

        image: gcr.io/my-project/my-image
        command:
          - python3
          - -m
          - official.vision.image_classification.resnet.resnet_ctl_imagenet_main
          -  --tpu=$(KUBE_GOOGLE_CLOUD_TPU_ENDPOINTS)
          -  --distribution_strategy=tpu
          -  --steps_per_loop=500
          -  --log_steps=500
          -  --use_synthetic_data=true
          -  --dtype=fp32
          -  --enable_tensorboard=true
          -  --train_epochs=90
          -  --epochs_between_evals=1
          -  --batch_size=1024
          -  --model_dir=gs://<bucket-name>/resnet-output
      
    6. 创建并运行作业,就像使用官方 TPU 模型一样。

在现有集群上启用 Cloud TPU 支持

如需在现有 GKE 集群上启用 Cloud TPU 支持,请在 gcloud 命令行工具中执行以下步骤:

  1. 启用 Cloud TPU 支持:

    gcloud beta container clusters update cluster-name --enable-tpu
    

    cluster-name 替换为您的集群名称。

  2. 更新 kubeconfig 条目:

    gcloud container clusters get-credentials cluster-name
    

设置自定义 CIDR 范围

默认情况下,GKE 会为该集群预配的 TPU 分配一个大小为 /20 的 CIDR 地址块。您可以通过运行以下命令为 Cloud TPU 指定自定义 CIDR 范围:

gcloud beta container clusters update cluster-name \
  --enable-tpu \
  --tpu-ipv4-cidr 10.100.0.0/20

请替换以下内容:

  • cluster-name:现有集群的名称。
  • 10.100.0.0/20:您的自定义 CIDR 范围。

在集群中停用 Cloud TPU

如需在现有 GKE 集群上停用 Cloud TPU 支持,请在 gcloud 命令行工具中执行以下步骤:

  1. 验证您的所有工作负载是否均未使用 Cloud TPU:

    $ kubectl get tpu
    
  2. 在您的集群中停用 Cloud TPU 支持:

    $ gcloud beta container clusters update cluster-name --no-enable-tpu
    

    cluster-name 替换为您的集群名称。

    对于区域级集群,此操作大约需要 5 分钟;对于地区级集群,此操作大约需要 15 分钟,具体取决于集群所在的地区。

  3. 一旦操作完成且未出现错误,您就可以验证集群预配的 TPU 是否已被移除:

    $ gcloud compute tpus list
    

    Cloud TPU 创建的 TPU 的名称采用以下格式:

    $ gke-cluster-name-cluster-id-tpu-tpu-id
    

    请替换以下内容:

    • cluster-name:现有集群的名称。
    • cluster-id:现有集群的 ID。
    • tpu-id:Cloud TPU 的 ID。

    如果出现任何 TPU,则可以通过运行以下命令手动将其删除:

    $ gcloud compute tpus delete gke-cluster-name-cluster-id-tpu-tpu-id
    

清理

在 GKE 上使用 Cloud TPU 后,请清理资源,以避免您的 Cloud Billing 帐号产生额外扣款。

控制台

删除 GKE 集群:

  1. 转到 Cloud Console 上的 GKE 页面。

    转到 GKE 页面

  2. 选择要删除的集群旁边的复选框。

  3. 点击删除

检查完数据后,删除您创建的 Cloud Storage 存储分区:

  1. 转到 Cloud Console 上的 Cloud Storage 页面。

    转到 Cloud Storage 页面

  2. 选择要删除的存储分区旁边的复选框。

  3. 点击删除

请参阅 Cloud Storage 价格指南,了解免费存储限制和其他价格信息。

gcloud

如果您尚未为此会话设置项目和地区,请立即设置。请参阅本指南前面的说明。然后按照下列清理步骤进行操作:

  1. 运行以下命令以删除 GKE 集群,将 cluster-name 替换为您的集群名称,将 project-name 替换为您的 Google Cloud 项目名称:

    $ gcloud container clusters delete cluster-name --project=project-name
    
  2. 检查完数据以后,使用 gsutil 命令删除您创建的 Cloud Storage 存储分区。将 bucket-name 替换为您的 Cloud Storage 存储分区的名称:

    $ gsutil rm -r gs://bucket-name
    

    请参阅 Cloud Storage 价格指南,了解免费存储限制和其他价格信息。

后续步骤

  • 完成在 Cloud TPU 和 GKE 上训练 TensorFlow ResNet-50 模型的教程
  • 使用以下作业规范之一运行更多模型和数据集检索作业:
  • 在 GKE 上下载并预处理 COCO 数据集
  • 在 GKE 上下载并预处理 ImageNet
  • 使用 Cloud TPU 和 GKE 训练 AmoebaNet-D
  • 使用 Cloud TPU 和 GKE 训练 Inception v3
  • 使用 Cloud TPU 和 GKE 训练 RetinaNet