创建 Cloud TPU 虚拟机

您可以使用 Create Node API、排队资源 API 或 Google Kubernetes Engine (GKE) 创建 TPU 虚拟机。

当您使用 Google Cloud CLI 运行 gcloud compute tpus tpu-vm create 命令以及使用Google Cloud 控制台创建 TPU 虚拟机时,系统会调用 Create Node API。当您使用“创建节点”API 时,系统会立即处理您的请求。如果没有足够的容量来满足您的请求,则请求会失败。

我们建议使用 Queued Resources API 创建 TPU 虚拟机。使用已排队的资源 API 创建 TPU 虚拟机时,Cloud TPU 服务会将您的已排队的资源请求添加到该服务维护的队列中。请求的资源可用后,该服务会将其分配给您的 Google Cloud 项目,供您立即专门使用。如需了解详情,请参阅管理已排队的资源

如果您想使用 Google Kubernetes Engine (GKE) 管理 TPU 资源,请先创建一个 GKE 集群。然后,向集群添加包含 TPU 切片的节点池。如需了解详情,请参阅 GKE 中的 TPU 简介

前提条件

完成以下前提条件:

  1. 按照为 TPU 设置 Google Cloud 项目中的说明,为 TPU 创建 Google Cloud 项目。

  2. 按照规划 Cloud TPU 资源中所述确定 TPU 要求。

  3. 如果您使用的是某个 Cloud 客户端库,请按照适用于您所用语言的设置说明执行操作。

  4. 设置用于创建具有 8 个芯片的 v5e TPU 的环境变量。以下示例使用具有 8 个芯片的 v5e TPU。您可以指定其他加速器类型和版本。如需了解详情,请参阅 TPU 版本

      export TPU_NAME=your-tpu-name
      export PROJECT_ID=your-project
      export ZONE=us-central1-a
      export ACCELERATOR_TYPE=v5litepod-8
      export VERSION=v2-alpha-tpuv5-lite
    

使用 Create Node API 创建 Cloud TPU

您可以使用 gcloud、 Google Cloud 控制台或 Cloud TPU API 创建 Cloud TPU。

创建 Cloud TPU 时,请指定 TPU 软件版本(也称为运行时版本)。如需确定要使用的软件版本,请参阅 TPU 软件版本

此外,请为所用 TPU 配置指定 TensorCore 或 TPU 芯片的数量。如需了解详情,请参阅系统架构中您所使用的 TPU 版本的相应部分。

gcloud

使用 gcloud compute tpus tpu-vm create 命令通过 Create Node API 创建 TPU。如需配置特定的内部或外部 IP 地址,请参阅外部和内部 IP 地址

以下命令会创建一个具有 8 个 TPU 芯片的 v5e TPU 虚拟机:

gcloud compute tpus tpu-vm create $TPU_NAME \
  --project=$PROJECT_ID
  --zone=$ZONE \
  --accelerator-type=$ACCELERATOR_TYPE \
  --version=$VERSION

命令标志说明

zone
您创建 Cloud TPU 的可用区
accelerator-type
加速器类型用于指定您要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本
version
TPU 软件版本

控制台

本部分介绍如何创建具有 8 个 TPU 芯片的 v5e TPU 虚拟机:

  1. 在 Google Cloud 控制台中,前往 TPU 页面:

    前往 TPU

  2. 点击创建 TPU

  3. 名称字段中,输入 TPU 的名称。

  4. 可用区字段中,选择您创建 TPU 的可用区。

  5. TPU 类型字段中,选择一种加速器类型。 加速器类型用于指定您要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 TPU 版本

  6. TPU 软件版本字段中,选择一个软件版本。创建 Cloud TPU 虚拟机时,TPU 软件版本指定了要安装的 TPU 运行时的版本。如需了解详情,请参阅 TPU 软件版本

  7. 点击创建以创建资源。

curl

以下命令使用 curl 创建一个具有 8 个 TPU 芯片的 v5e TPU 虚拟机。

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: $ACCELERATOR_TYPE, \
runtime_version:'$VERSION', \
network_config: {enable_external_ips: true}, \
shielded_instance_config: { enable_secure_boot: true }}" \
https://tpu.googleapis.com/v2/projects/$PROJECT_ID/locations/$ZONE/nodes?node_id=$TPU_NAME

必填字段

runtime_version
您使用的 Cloud TPU 运行时版本。
project-id
已注册的 Google Cloud 项目的名称。
zone
您创建 Cloud TPU 的可用区
node_name
您创建的 TPU 虚拟机的名称。

Java

此代码示例使用 Java 中的 Cloud TPU API 创建一个具有 8 个 TPU 芯片的 v5e TPU 虚拟机。

如需向 Cloud TPU 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证

import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
import com.google.api.gax.retrying.RetrySettings;
import com.google.cloud.tpu.v2.CreateNodeRequest;
import com.google.cloud.tpu.v2.Node;
import com.google.cloud.tpu.v2.TpuClient;
import com.google.cloud.tpu.v2.TpuSettings;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import org.threeten.bp.Duration;

public class CreateTpuVm {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to create a node.
    String projectId = "YOUR_PROJECT_ID";
    // The zone in which to create the TPU.
    // For more information about supported TPU types for specific zones,
    // see https://cloud.google.com/tpu/docs/regions-zones
    String zone = "europe-west4-a";
    // The name for your TPU.
    String nodeName = "YOUR_TPU_NAME";
    // The accelerator type that specifies the version and size of the Cloud TPU you want to create.
    // For more information about supported accelerator types for each TPU version,
    // see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions.
    String tpuType = "v2-8";
    // Software version that specifies the version of the TPU runtime to install.
    // For more information see https://cloud.google.com/tpu/docs/runtimes
    String tpuSoftwareVersion = "v2-tpuv5-litepod";

    createTpuVm(projectId, zone, nodeName, tpuType, tpuSoftwareVersion);
  }

  // Creates a TPU VM with the specified name, zone, accelerator type, and version.
  public static Node createTpuVm(
      String projectId, String zone, String nodeName, String tpuType, String tpuSoftwareVersion)
      throws IOException, ExecutionException, InterruptedException {
    // With these settings the client library handles the Operation's polling mechanism
    // and prevent CancellationException error
    TpuSettings.Builder clientSettings