创建和删除 TPU

运行机器学习 (ML) 模型需要 Compute Engine 虚拟机和 Cloud TPU 资源。本页面介绍如何使用以下工具管理这些资源:

  • ctpu 实用程序,提供专用于管理 Cloud TPU 资源的 CLI
  • gcloud command-line tool,提供连接 Google Cloud Platform (GCP) 的主 CLI
  • Cloud Console,是面向 GCP 资源的集成式管理控制台

前提条件

为了运行这些程序,您需要设置 Google Cloud Platform (GCP) 项目。如果没有项目,请参阅创建和管理项目设置一个。

设置 Compute Engine 虚拟机

ctpu

ctpu 实用程序可以同时或单独创建 Compute Engine 虚拟机和 Cloud TPU 资源。在此过程中,ctpu 仅用于创建 Compute Engine 虚拟机。

  1. Cloud Shell 中,运行下述命令以创建 Compute Engine 虚拟机:
  2. $ ctpu up --vm-only --zone=zone [optional: --name --machine-type --disk-size-gb]
    

    参数 说明
    vm-only 仅创建 Compute Engine 虚拟机。
    zone 拟在其中创建 Cloud TPU 的地区。例如 us-central1-b
    name 为 Compute Engine 虚拟机指定一个名称。如果未指定名称,则默认名称为您的用户名。
    machine-type 这是要用于虚拟机的机器类型。如需了解支持的机器类型,请参阅机器类型。默认值为 n1-standard-1。
    disk-size-gb 虚拟机的磁盘大小,以 GB 为单位。例如,300 GB。如果未指定大小,则默认为 20 GB。

如需了解所有 ctpu 选项,请参阅ctpu参考文档

gcloud 命令

使用 gcloud 命令在 Cloud Shell 中与 Google Cloud 进行交互。

  1. 如果您没有将 Cloud Shell 用作命令界面,请为您的操作系统安装 Cloud SDK,以设置 gcloud 命令行工具。
  2. 配置 gcloud 以使用您的项目。
  3. gcloud config set project project-name
    
  4. 指定要在其中创建 Compute Engine 虚拟机的地区。例如 us-central1-b
  5. $ gcloud config set compute/zone zone
    
  6. 启动 Compute Engine 虚拟机。

    由于您已在上一个命令中指定地区,因此虚拟机实例将在该地区中创建。

  7.    gcloud compute instances create vm-name \
       --machine-type=machine-type \
       --image-project=ml-images \
       --image-family=tensorflow-vm-image \
       --boot-disk-size=boot-disk-size \
       --scopes=cloud-platform
       
    参数 说明
    vm-name 为 Compute Engine 虚拟机指定一个名称。
    machine-type 这是要用于虚拟机的机器类型。如需了解支持的机器类型,请参阅机器类型
    image-project 将对其解析所有映像和映像系列引用的项目。使用 ml-images
    image-family 这是将用于初始化启动磁盘的 TensorFlow 映像系列,例如 tf-1-15 或 tf-2-1。
    boot-disk-size 虚拟机的启动磁盘大小,以 GB 为单位。例如,300 GB。如果未指定大小,则默认为 20 GB。
    scopes 使用 cloud-platform

    这会生成如下所示的输出:

    NAME         ZONE           MACHINE_TYPE    PREEMPTIBLE INTERNAL_IP  EXTERNAL_IP    STATUS
    demo-vm-tpu  us-central1-b  n1-standard-1               10.138.0.2   35.247.15.162  RUNNING
    
  8. 远程连接到您的 Compute Engine 虚拟机:
    $ gcloud compute ssh vm-name --zone=zone
    

控制台

通过 Google Cloud Console 创建虚拟机并建立对其的远程访问。

  1. 从左侧导航栏中选择 Compute Engine > 虚拟机实例,然后点击“创建实例”。
  2. 从“创建实例”页面的顶部菜单栏中,选择创建实例并指定实例名称、区域和机器类型。
  3. 参数 说明
    name 指定 Compute Engine 虚拟机的名称。您可以指定任何实例名称,但请对虚拟机实例和 Cloud TPU 使用同一名称。
    region 如果您已设置 Cloud Storage 存储分区,则此值应与存储分区的位置匹配。
    machine type 指定要用于 Compute Engine 虚拟机的机器类型。从下拉菜单中选择一个机器类型。
  4. 点击启动磁盘 > 更改按钮。这将打开一个新窗口,您可以在其中选择虚拟机操作系统和版本。
  5. 操作系统下拉列表中,选择 Deep Learning on Linux
  6. 版本下,选择与您要运行的 TensorFlow 版本(例如 TF2-1)配合使用的 Debian GUC/Lunix 版本。
  7. 启动磁盘页面底部,点击选择以完成操作系统和版本选择。
  8. 身份和 API 访问权限 > 访问权限范围下,选择允许所有 Cloud API 的完整访问权限
  9. 转到 Compute Engine > 虚拟机实例。找到虚拟机名称对应的实例,然后点击 SSH 以连接到该实例。

设置 Cloud TPU

按照虚拟机设置过程设置 Compute Engine 虚拟机,然后再设置 Cloud TPU。您可以使用 ctpu 实用程序、gcloud 命令或 Cloud Console 来分配和启动 TPU 资源。

ctpu

Cloud Shell 中运行以下命令以创建 Cloud TPU。

$ ctpu up --tpu-only --name=tpu-name --zone=zone [optional: --tpu-size]
参数 说明
name 指定 Cloud TPU 的名称。使用您在 Compute Engine 虚拟机上所用的同一名称。
zone 拟在其中创建 Cloud TPU 的地区。该地区应与 Compute Engine 虚拟机所用的地区相同。例如 us-central1-b
tpu-size 这是要使用的 TPU 类型。默认值为 v2-8。如需了解支持的 TPU 类型和地区,请参阅类型和地区

gcloud 命令

Cloud SDK 是一组工具,可用于在 Cloud Shell 中与 Google Cloud 进行交互。

  1. 通过 Cloud SDK 安装 gcloud 命令行工具
  2. 使用 gcloud 命令行工具指定 Google Cloud 项目:
    $ gcloud config set project project-name
    
  3. 指定要在其中创建 Cloud TPU 资源的地区。该地区应与 Compute Engine 虚拟机所用的地区相同。例如 us-central1-b
    $ gcloud config set compute/zone zone
    

    Cloud TPU 可在以下地区使用:

    美国

    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
  4. 创建新的 Cloud TPU 资源。

    由于您已在上一个命令中指定地区,因此 Cloud TPU 将在该地区中创建。

    $ gcloud compute tpus create tpu-name \
          --network=network-ID or default \
          --accelerator-type=tpu-version \
          --version=2.1
    
    参数 说明
    tpu-name 指定 Cloud TPU 的名称。使用与 Compute Engine 虚拟机名称相同的名称。
    network-ID or default 如果您知道自己的网络 ID,请使用该 ID,否则请输入默认值
    accelerator-type 这是您的 TPU 类型。如需了解您的地区支持的 TPU 类型,请参阅 TPU 类型
    version 与 Cloud TPU 搭配使用的 TensorFlow 版本。此版本必须与用于编写模型的 TensorFlow 版本相同。

    这会生成如下所示的输出:

    NAME         ZONE           ACCELERATOR_TYPE NETWORK_ENDPOINT  NETWORK  RANGE         STATUS
    demo-vm-tpu  us-central1-b  v2-8             10.240.1.2:8470   default  10.240.1.0/29 READY
    
  5. 远程连接到您的 Compute Engine 虚拟机:
    $ gcloud compute ssh vm-name
    
  6. 创建一个包含您的 TPU 名称的环境变量:
    $ export TPU_NAME=tpu-name
    

控制台

    创建、启动和连接到您的 Cloud TPU。

  1. 在左侧导航栏上,转到 Compute Engine > TPU,然后点击“创建 TPU 节点”。
  2. 创建 Cloud TPU 页面上,使用下拉菜单指定 TPU 名称、地区、TPU 类型、TPU 软件版本和网络。
  3. 参数 说明
    name 指定 Cloud TPU 的名称。使用与 Compute Engine 虚拟机名称相同的名称。
    zone 拟在其中创建 Cloud TPU 的地区。例如 us-central1-b
    TPU type 这是您的 TPU 类型。如需了解您的地区支持的 TPU 类型,请参阅 TPU 类型
    TPU software version 与 Cloud TPU 搭配使用的 TensorFlow 或 PyTorch 版本。此版本必须与用于创建模型的 TensorFlow 或 PyTorch 的版本相同。
    network-ID or default 如果您知道自己的网络 ID,请使用该 ID,否则请输入默认值
  4. 转到 Compute Engine > 虚拟机实例。找到虚拟机名称对应的实例,然后点击 SSH 以连接到该实例。
  5. 在虚拟机中,创建一个包含您的 TPU 名称的环境变量:
    $ export TPU_NAME=tpu-name
    

设置 Compute Engine 虚拟机和 Cloud TPU 资源

您可以使用 ctpu 实用程序、gcloud 命令或 Cloud Console 来分配和启动虚拟机和 TPU 资源。

ctpu

Cloud Shell 中运行以下命令。ctpu 实用程序会同时创建 Compute Engine 虚拟机和 Cloud TPU 资源,并为它们赋予相同的名称。

$ ctpu up [optional: --name --zone --tpu-size --machine-type --disk-size-gb]
参数 说明
name 同时为 Compute Engine 虚拟机和 Cloud TPU 指定名称。
zone 拟在其中创建 Cloud TPU 的地区。例如 us-central1-b
tpu-size 这是要使用的 TPU 类型。默认值为 v2-8。如需了解支持的 TPU 类型和地区,请参阅类型和地区
machine type 指定要用于 Compute Engine 虚拟机的机器类型。从下拉菜单中选择一个机器类型。
disk-size-gb 虚拟机的磁盘大小,以 GB 为单位。例如,300 GB。如果未指定大小,则默认为 20 GB。

gcloud 命令

Cloud SDK 是一组工具,可用于在 Cloud Shell 中与 Google Cloud 进行交互。

  1. 通过 Cloud SDK 安装 gcloud 命令行工具
  2. 使用 gcloud 命令行工具指定 Google Cloud 项目:
    $ gcloud config set project project-name
    
  3. 指定要在其中创建 Compute Engine 虚拟机和 Cloud TPU 资源的地区。本示例使用的是 us-central1-b 地区:
    $ gcloud config set compute/zone zone
    

    Cloud TPU 可在以下地区使用:

    美国

    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
  4. 创建 Compute Engine 虚拟机以与 Cloud TPU 交互。

    由于您已在上一个命令中指定地区,因此虚拟机实例将在该地区中创建。

    $ gcloud compute instances create vm-name\
       --machine-type=n1-standard-1 \
       --image-project=ml-images \
       --image-family=tensorflow-vm-image \
       --boot-disk-size=boot-disk-size \
       --scopes=cloud-platform
    
    参数 说明
    vm-name 为 Compute Engine 虚拟机指定一个名称。
    machine-type 这是要用于虚拟机的机器类型。如需了解支持的机器类型,请参阅机器类型
    image-project 将对其解析所有映像和映像系列引用的项目。使用 ml-images
    image-family 这是将用于初始化启动磁盘的 TensorFlow 映像系列,例如 tf-1-15 或 tf-2-1。
    boot-disk-size 虚拟机的磁盘大小,以 GB 为单位。例如,300 GB。如果未指定大小,则默认为 20 GB。
    scopes 使用 cloud-platform

    这会生成如下所示的输出:

    NAME         ZONE           MACHINE_TYPE    PREEMPTIBLE INTERNAL_IP  EXTERNAL_IP    STATUS
    demo-vm-tpu  us-central1-b  n1-standard-1               10.138.0.2   35.247.15.162  RUNNING
    
  5. 创建新的 Cloud TPU 资源。
    $ gcloud compute tpus create tpu-name \
          --zone=zone \
          --network=network-id or default \
          --accelerator-type=tpu-version \
          --version=2.1
    
    参数 说明
    tpu-name 指定 Cloud TPU 的名称。使用与 Compute Engine 虚拟机名称相同的名称。
    zone 拟在其中创建 Cloud TPU 的地区。例如 us-central1-b
    network-ID or default 如果您知道自己的网络 ID,请使用该 ID,否则请输入默认值
    accelerator-type 这是您的 TPU 类型。如需了解您的地区支持的 TPU 类型,请参阅 TPU 类型
    tpu-version 与 Cloud TPU 搭配使用的 TensorFlow 版本。此版本必须与用于创建模型的 TensorFlow 版本相同。

    这会生成如下所示的输出:

    NAME         ZONE           ACCELERATOR_TYPE NETWORK_ENDPOINT  NETWORK  RANGE         STATUS
    demo-vm-tpu  us-central1-b  v2-8             10.240.1.2:8470   default  10.240.1.0/29 READY
    
  6. 远程连接到您的 Compute Engine 虚拟机:
    $ gcloud compute ssh vm-name --zone=zone
    
  7. 创建一个包含您的 TPU 名称的环境变量:
    $ export TPU_NAME=tpu-name
    

控制台

  1. 创建并启动虚拟机。
    1. 在左侧导航栏上,转到 Compute Engine > 虚拟机实例,然后点击“创建实例”。
    2. 创建实例页面上,指定实例名称、区域和机器类型。
    3. 参数 说明
      name 指定 Compute Engine 虚拟机的名称。您可以指定任何实例名称,但请对虚拟机实例和 Cloud TPU 使用同一名称。
      region 如果您已设置 Cloud Storage 存储分区,则此值应与存储分区的位置匹配。
      machine type 指定要用于 Compute Engine 虚拟机的机器类型。从下拉菜单中选择一个机器类型。
  2. 创建、启动和连接到您的 Cloud TPU。
    1. 在左侧导航栏上,转到 Compute Engine > TPU,然后点击“创建 TPU 节点”。
    2. 创建 Cloud TPU 页面上,使用下拉菜单指定 TPU 名称、地区、TPU 类型、TPU 软件版本、网络和内部 IP 地址供 Cloud TPU 使用。
    3. 参数 说明
      name 指定 Cloud TPU 的名称。使用与 Compute Engine 虚拟机名称相同的名称。
      zone 拟在其中创建 Cloud TPU 的地区。例如 us-central1-b
      TPU type 这是您的 TPU 类型。如需了解您的地区支持的 TPU 类型,请参阅 TPU 类型
      TPU software version 与 Cloud TPU 搭配使用的 TensorFlow 或 PyTorch 版本。此版本必须与用于创建模型的 TensorFlow 或 PyTorch 的版本相同。
      network-ID or default 如果您知道自己的网络 ID,请使用该 ID,否则请输入默认值
    4. 转到 Compute Engine > 虚拟机实例。找到虚拟机名称对应的实例,然后点击 SSH 以连接到该实例。

停用 Cloud TPU 资源

从 Cloud TPU 启动之时起,我们就会开始针对 Cloud TPU 资源向您收费,即便 Cloud TPU 并未在训练模型时也是如此。为避免在 Cloud TPU 非活动时产生费用,您可将其停用,再在准备训练模型时重启。

本部分介绍如何使用 ctpu 实用程序、gcloud 命令或 Cloud Console 停止 Cloud TPU。

ctpu

  1. 运行 ctpu status 命令,指定设置 Cloud TPU 的地区。

    $ ctpu status --zone=zone

    这会显示该地区中的 Compute Engine 虚拟机和 Cloud TPU 资源的状态。

    Your cluster is running!
    Compute Engine VM:  RUNNING
    Cloud TPU:          RUNNING
    
  2. 如果 Cloud TPU 资源正在运行,请使用以下命令将其停止。

    $ ctpu pause --zone=zone

    此操作会在指定地区停止 Compute Engine 虚拟机并删除 Cloud TPU 资源。若要仅重启 Compute Engine 虚拟机,请运行以下命令,并在命令中包含虚拟机所需的其他任何标志:

    $ ctpu up --vm-only --zone=zone 

    如需重启 Cloud TPU,请运行 ctpu up 命令,并在命令中包含您首次启动 Cloud TPU 时设置的标志。

gcloud

  1. Cloud Shell 中运行以下命令,列出您的地区中可用的 Cloud TPU 资源。

    $ gcloud compute tpus list --zone=zone
    

    命令会显示您的地区中的 Cloud TPU 资源:

    NAME       ZONE           ACCELERATOR_TYPE  NETWORK_ENDPOINT   NETWORK  RANGE          STATUS
    demo-tpu   us-central1-b  v2-8              10.240.1.2:8470    default  10.240.1.0/29  READY
    
  2. 运行以下命令以停用 Cloud TPU:

    $ gcloud compute tpus stop tpu-name --zone=zone
    

控制台

    从左侧导航栏中选择 Compute Engine > TPU。点击页面顶部菜单栏中的“停止”。

    如需重启 Cloud TPU,请点击“开始”。

查看 Compute Engine 虚拟机和 Cloud TPU 资源

本部分介绍如何使用 ctpu 实用程序、gcloud 命令或 Cloud Console 查看当前活动的虚拟机和 TPU 资源。

ctpu

运行 ctpu status 命令,并指定在其中设置了 Compute Engine 虚拟机和 Cloud TPU 资源的地区。

$ ctpu status --zone=zone 

这会显示该地区中的 Compute Engine 虚拟机和 Cloud TPU 资源的状态。

Your cluster is running!
Compute Engine VM:  RUNNING
Cloud TPU:          RUNNING

如果当前没有设置资源,则输出内容中虚拟机和 TPU 位置将只显示破折号。如果一个资源处于活动状态而另一资源非活动,则您将看到一条说明运行状况不佳的消息。此时,您需要启动或重启当前未运行的资源。

gcloud

  1. Cloud Shell 中运行以下命令,列出特定地区中可用的 Compute Engine 虚拟机资源。在本例中,将显示 us-central1-b 和 europe-west4-a 中的虚拟机资源:

    $ gcloud compute instances list --filter="zone:( us-central1-b europe-west4-a )"
    

    以上命令可显示您创建的虚拟机资源的详细信息。例如:

    NAME      ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
    demo-tpu  us-central1-b  n1-standard-1               10.128.0.33  35.232.214.205  RUNNING
    
    
  2. Cloud Shell 运行以下命令,列出您的地区中可用的 Cloud TPU 资源。在本例中,我们显示所选地区为 us-central1-b

    $ gcloud compute tpus list --zone=us-central1-b
    

    这会显示 us-central1-b 中的 Cloud TPU 资源:

    NAME       ZONE           ACCELERATOR_TYPE  NETWORK_ENDPOINT   NETWORK  RANGE          STATUS
    demo-tpu   us-central1-b  v2-8              10.240.1.2:8470    default  10.240.1.0/29  READY
    

控制台

  1. 在左侧的导航菜单中,选择 Compute Engine > TPU

    此时会显示所有活跃的 Compute Engine 资源的列表。

  2. 在左侧导航菜单上,选择 Compute Engine > 虚拟机实例

    此时会显示所有活跃的 Compute Engine 资源的列表。

删除 Compute Engine 虚拟机和 Cloud TPU 资源

您可以使用 ctpu 实用程序、gcloud 命令或 Cloud Console 删除虚拟机和 TPU 资源。

ctpu

Cloud Shell运行以下命令。ctpu 实用程序会将 Compute Engine 虚拟机和 Cloud TPU 资源一并删除。

$ ctpu delete [optional: --zone]

gcloud

Cloud Shell 运行以下命令,删除 Cloud TPU 和 Compute Engine 虚拟机资源。您必须在命令行中包含 Cloud TPU 资源名称、地区和项目 ID。首先请删除 Cloud TPU,因为您需要运行的 Compute Engine 虚拟机来删除 Cloud TPU 资源。

  1. 删除 Cloud TPU 资源:
    $ gcloud compute tpus delete tpu-name --project=project-name --zone=zone
    
  2. 删除 Compute Engine 实例:
    $ gcloud compute instances delete vm-name --project=project-name --zone=zone
    
  3. 删除 Google 在 Cloud TPU 设置过程中自动创建的 VPC 网络。

    转到 Cloud Console 中的 VPC 网络 (VPC Networking) 页面

  4. 选择 VPC 网络。此网络条目的 ID 以 cp-to-tp-peering 开头。

    在页面顶部,点击删除以删除选择的 VPC 网络。

  5. 删除完资源后,使用 gsutil 命令删除您创建的所有 Cloud Storage 存储分区。将 bucket-name 替换为您的 Cloud Storage 存储分区的名称:
    $ gsutil rm -r gs://bucket-name
    

控制台

  1. 删除您的虚拟机。
    1. 在左侧导航栏上,转到 Compute Engine > 虚拟机实例
    2. 从列表中选择您的虚拟机实例。点击页面顶部的垃圾桶图标。
  2. 删除您的 Cloud TPU。
    1. 在左侧导航栏上,转到 Compute Engine > TPU
    2. 从列表中选择您的 TPU 资源。点击页面顶部的垃圾桶图标。