将持久性块存储挂接到 TPU 虚拟机

TPU 虚拟机包含一个 10 GB 的启动磁盘。在某些情况下,您可能需要额外的存储空间进行训练或预处理。添加 Google Cloud Hyperdisk永久性磁盘 (PD) 卷以扩展 本地磁盘容量。

为了获得最高性能和高级功能,请使用 Hyperdisk(如果适用于您的 TPU 版本)。 否则,请使用 Persistent Disk。如需详细了解 Compute Engine 中的块存储选项,请参阅选择磁盘类型

TPU 对 Hyperdisk 和永久性磁盘的支持

下表展示了每个 TPU 版本支持的磁盘类型:

TPU 版本 支持的磁盘类型 每个虚拟机的磁盘数量上限
(包括启动磁盘)
TPU7x Hyperdisk Balanced
Hyperdisk ML
128
v6e Hyperdisk Balanced
Hyperdisk ML
32
v5p Hyperdisk ML
平衡永久性磁盘
128

访问模式

将挂接到单个 TPU 虚拟机(也称为单主机 TPU 切片)的磁盘(例如 ct6e-standard-4t)配置为读写 (rw) 或只读 (ro) 模式。

将磁盘挂接到多主机 TPU 切片时,该磁盘会挂接到切片中的每个虚拟机。为了防止多个 TPU 虚拟机同时写入磁盘,您必须将挂接到多主机 TPU 切片的所有磁盘都配置为只读 (ro)。只读磁盘对于存储数据集以在 TPU 切片上进行处理非常有用。

前提条件

在使用这些步骤之前,请设置 Google Cloud 账号和项目。如需了解详情,请参阅设置 Cloud TPU 环境

创建磁盘

如需创建磁盘,请使用以下命令:

gcloud compute disks create DISK_NAME \
    --size DISK_SIZE  \
    --zone ZONE \
    --type DISK_TYPE

替换以下占位符:

  • DISK_NAME:新磁盘的名称。
  • DISK_SIZE:新磁盘的大小。该值必须是一个整数,后跟大小单位(GB 表示吉比字节,或 TB 表示太比字节)。如果您未指定大小单位,系统会假定为 GB。
  • ZONE:要在其中创建新磁盘的可用区 的名称。这必须与您创建 TPU 的可用区相同。
  • DISK_TYPE:磁盘类型。 请使用以下值之一:hyperdisk-balancedhyperdisk-mlpd-balanced

对于 Hyperdisk,您可以选择使用以下值之一指定 --access-mode 标志:

  • READ_WRITE_SINGLE:从一个实例进行读写访问(默认)。
  • READ_ONLY_MANY:(仅限 Hyperdisk ML) 从多个实例同时进行只读 访问。

如需详细了解如何创建磁盘,请参阅创建新的 Hyperdisk 卷创建新的 Persistent Disk

挂接磁盘

您可以在创建 TPU 虚拟机或切片时挂接磁盘卷,也可以在创建后挂接磁盘卷。

在创建 TPU 虚拟机时挂接磁盘

创建 TPU 虚拟机或实例模板时,请使用 --disk 标志挂接磁盘卷。

在创建单个 TPU 虚拟机时挂接磁盘

以下示例展示了如何在创建单个 TPU 虚拟机时挂接磁盘卷:

  gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --disk=name=DISK_NAME,device-name=DEVICE_NAME,mode=MODE

替换以下占位符:

  • TPU_NAME:TPU 虚拟机的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型 (例如 ct6e-standard-8t)。
  • IMAGE_FAMILY:TPU 虚拟机的 操作系统映像系列 。如果您要安装特定操作系统版本,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
  • IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为 ubuntu-os-accelerator-images
  • ZONE:TPU 虚拟机的可用区
  • DEVICE_NAME:用于 磁盘的设备的名称。此名称用于在操作系统中标识磁盘。
  • MODE:磁盘的模式。此值可以是 rw(读写)或 ro(只读)。如需了解详情,请参阅访问模式

在创建多主机 TPU 切片时挂接磁盘

创建多主机 TPU 切片时,您必须指定 mode=read-only(仅限 Hyperdisk ML 和平衡永久性磁盘)。如需了解详情,请参阅 访问模式

如需在多主机 TPU 切片中挂接磁盘,请创建一个挂接了磁盘的实例模板,创建一个工作负载政策,然后创建一个 MIG:

  1. 创建实例模板

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --disk=name=DISK_NAME,mode=MODE
    

    替换以下占位符:

    • INSTANCE_TEMPLATE_NAME:实例 模板的名称。
    • MACHINE_TYPE:TPU 虚拟机的机器类型 ,例如ct6e-standard-8t
    • IMAGE_FAMILY:TPU 虚拟机的 操作系统映像系列 。如果您要安装特定操作系统版本,请使用 --image 标志。如需详细了解操作系统映像,请参阅操作系统映像
    • IMAGE_PROJECT:包含操作系统映像的项目。 对于 TPU 映像,此值为 ubuntu-os-accelerator-images
    • DISK_NAME:要挂接到 TPU 虚拟机的磁盘的名称。
    • MODE:磁盘的模式。对于多主机 TPU 切片,模式必须为 ro(只读)。
  2. 创建工作负载政策

    gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \
    --type=high-throughput \
    --accelerator-topology=TOPOLOGY
    

    替换以下占位符:

    • WORKLOAD_POLICY_NAME:工作负载政策的名称。
    • TOPOLOGY:TPU 虚拟机的拓扑,例如 4x4x8。如需详细了解每个 TPU 版本的拓扑,请参阅 系统架构
  3. 创建 MIG:

    gcloud compute instance-groups managed create MIG_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --template=TEMPLATE_NAME \
        --size=SIZE \
        --workload-policy=WORKLOAD_POLICY_NAME
    

    替换以下占位符:

    • MIG_NAME:MIG 的名称。
    • PROJECT_ID:项目 ID。
    • ZONE:Cloud TPU 所在的可用区
    • TEMPLATE_NAME:实例模板的名称。
    • SIZE:多主机 TPU 切片的虚拟机数量。
    • WORKLOAD_POLICY_NAME:工作负载政策的名称。

在创建包含多个单主机 TPU 切片的 MIG 时挂接磁盘

如果您创建单主机 TPU 切片,则可以指定 mode=read-only(仅限 Hyperdisk ML 和平衡永久性磁盘)或 mode=read-write

如需将持久性存储挂接到包含独立单主机 TPU 切片的 MIG,请配置实例模板,以使用 --create-disk 标志为每个实例创建一个新磁盘:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --disk=name=DISK_NAME,mode=MODE

替换以下占位符:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。
  • MACHINE_TYPE:TPU 虚拟机的机器类型(例如 ct6e-standard-8t)。
  • IMAGE_FAMILY:TPU 虚拟机的操作系统映像系列。
  • IMAGE_PROJECT:包含操作系统映像的项目 (ubuntu-os-accelerator-images)。
  • DISK_NAME:要创建并 挂接到每个 TPU 虚拟机的磁盘的基本名称。
  • DISK_SIZE:磁盘大小(以 GB 为单位)。
  • DISK_TYPE:磁盘类型(例如 pd-balancedhyperdisk-balanced)。

然后,按照上一部分所示创建 MIG, 并将 --size 设置为您选择的 TPU 虚拟机数量。

将磁盘挂接到现有 TPU 虚拟机

如需将磁盘挂接到现有 TPU 虚拟机,请使用 gcloud compute instances attach-disk 命令。

gcloud compute instances attach-disk VM_NAME \
    --zone=ZONE \
    --disk=DISK_NAME \
    --mode=MODE

替换以下占位符:

  • VM_NAME:TPU 虚拟机的名称。
  • ZONE:Cloud TPU 所在的可用区
  • DISK_NAME:要挂接到 TPU 虚拟机的磁盘的名称。
  • MODE:磁盘的模式。如需了解详情,请参阅 访问模式

如果您的虚拟机因任何原因而关停,您可能需要在重启虚拟机后装载磁盘。如需了解如何使磁盘在虚拟机重启时自动装载 ,请参阅配置系统重启时的自动装载

如需详细了解如何自动删除磁盘,请参阅 修改磁盘的自动删除设置

格式化并装载磁盘

如果您将新的空白磁盘挂接到 TPU 虚拟机,则必须先格式化并装载磁盘,然后才能使用磁盘。如果挂接的磁盘已包含数据,则必须先装载该磁盘,然后才能使用它。

如需详细了解如何格式化和装载非启动磁盘,请参阅 在 Linux 虚拟机上格式化和装载非启动磁盘

分离磁盘

如需从 TPU 虚拟机分离磁盘,请运行以下命令:

gcloud compute instances detach-disk VM_NAME \
    --zone=ZONE \
    --disk=DISK_NAME

替换以下占位符:

  • VM_NAME:TPU 虚拟机的名称。
  • ZONE:Cloud TPU 所在的可用区
  • DISK_NAME:要从 TPU 虚拟机分离的磁盘的名称。

如需详细了解如何分离磁盘,请参阅分离磁盘

清理

在完成 Cloud TPU 和 Compute Engine 资源的使用后,请将其删除。

  1. 断开与 Cloud TPU 的连接(如果您尚未这样做):

    exit
    
  2. 删除 TPU 虚拟机:

    gcloud compute instances delete VM_NAME \
        --zone=ZONE
    

    替换以下占位符:

    • VM_NAME:TPU 虚拟机的名称。
    • ZONE:Cloud TPU 所在的可用区

    如果您使用 MIG 创建了多主机 TPU 切片,请改为删除实例组:

    gcloud compute instance-groups managed delete MIG_NAME \
        --zone=ZONE
    

    替换以下占位符:

    • MIG_NAME:MIG 的名称。
    • ZONE:Cloud TPU 所在的可用区
  3. 验证 Cloud TPU 删除操作。删除操作可能需要几分钟时间才能完成。

    gcloud compute instances list --zone=ZONE
    
  4. 通过列出您在其中创建磁盘的可用区中的所有磁盘,验证磁盘在 TPU 虚拟机删除时是否已自动删除:

    gcloud compute disks list --filter="zone:( ZONE )"
    

    替换以下占位符:

    如果磁盘在 TPU 虚拟机删除时未删除,请使用以下命令将其删除:

    gcloud compute disks delete DISK_NAME \
        --zone=ZONE
    

    替换以下占位符:

    • DISK_NAME:要删除的磁盘的名称。
    • ZONE:Cloud TPU 所在的可用区