将持久性块存储挂接到 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 |
访问模式
以读写 (rw) 或只读 (ro) 模式配置挂接到单个 TPU 虚拟机(也称为单主机 TPU 切片)的磁盘,例如 ct6e-standard-4t。
将磁盘挂接到多主机 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-balanced、hyperdisk-ml或pd-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:
创建实例模板
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(只读)。
创建工作负载政策
gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \ --type=high-throughput \ --accelerator-topology=TOPOLOGY替换以下占位符:
- WORKLOAD_POLICY_NAME:工作负载政策的名称。
- TOPOLOGY:TPU 虚拟机的拓扑,例如
4x4x8。如需详细了解每个 TPU 版本的拓扑,请参阅 系统架构。
创建 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-balanced、hyperdisk-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:磁盘的模式。如需了解详情,请参阅 访问模式。
如果您的虚拟机因任何原因而关停,您可能需要在重启虚拟机后装载磁盘。如需了解如何使磁盘在虚拟机重启时自动装载 ,请参阅配置系统重启时的自动装载。
如需详细了解如何自动删除磁盘,请参阅修改 Hyperdisk 和修改 永久性磁盘。
格式化并装载磁盘
如果您将新的空白磁盘挂接到 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 资源。
断开与 Cloud TPU 的连接(如果您尚未这样做):
exit删除 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 所在的可用区。
验证 Cloud TPU 删除操作。删除操作可能需要几分钟时间才能完成。
gcloud compute instances list --zone=ZONE通过列出您在其中创建磁盘的可用区中的所有磁盘,验证磁盘在 TPU 虚拟机删除时是否已自动删除:
gcloud compute disks list --filter="zone:( ZONE )"替换以下占位符:
- ZONE:Cloud TPU 所在的可用区。
如果磁盘在 TPU 虚拟机删除时未删除,请使用以下命令将其删除:
gcloud compute disks delete DISK_NAME \ --zone=ZONE替换以下占位符:
- DISK_NAME:要删除的磁盘的名称。
- ZONE:Cloud TPU 所在的可用区。