将永久性磁盘添加到 TPU 虚拟机
本文档介绍如何设置永久性磁盘并将其挂接到 TPU 虚拟机。
概览
TPU 虚拟机包含一个 100GB 的启动磁盘。对于某些数据集,您可能需要更多本地存储进行训练或预处理。如需训练这些模型,您可以添加永久性磁盘来扩展本地磁盘容量。
您可以在创建 TPU 虚拟机时将永久性磁盘添加到 TPU 虚拟机,也可以在创建 TPU 虚拟机后添加永久性磁盘。
前提条件
在按照以下步骤操作之前,您需要先设置 GCP 帐号和项目。如果您尚未设置 Cloud TPU 项目,请先按照设置帐号和 Cloud TPU 项目中的步骤操作,然后再继续。
简要步骤
使用 TPU 虚拟机设置永久性磁盘的简要步骤如下:
- 创建永久性磁盘
- 使用永久性磁盘启动 TPU 虚拟机或将永久性磁盘添加到现有 TPU 虚拟机
- 通过 SSH 连接到 TPU 虚拟机
- 列出挂接的磁盘
- 设置挂接的永久性磁盘的格式
- 创建用于装载永久性磁盘的目录
- 装载永久性磁盘
- 为永久性磁盘设置权限
- 清理 TPU 虚拟机和永久性磁盘资源
设置 TPU 虚拟机和永久性磁盘
在 Cloud Shell 中,创建一个永久性磁盘:
$ gcloud compute disks create disk-name \ --size disk-size \ --zone zone \ --type pd-balanced
启动挂接了永久性磁盘的 TPU 虚拟机,或向现有 TPU 虚拟机添加永久性磁盘。
$ gcloud compute tpus tpu-vm create tpu-name \ --project project-id \ --zone=zone \ --accelerator-type=v3-8 \ --version=Cloud TPU software version \ --data-disk source=projects/project-id/zones/zone/disks/disk-name,mode=read-write
命令标志说明
tpu-name
- 您为 TPU 资源选择的名称。
project
- 您的项目 ID。
zone
- 拟在其中创建 Cloud TPU 的可用区。
accelerator-type
- 要创建的 Cloud TPU 的类型。
version
- 适用于框架的 Cloud TPU 软件版本。
data-disk
- 要挂接到 TPU 虚拟机的永久性磁盘的名称和读/写模式。
通过 SSH 连接到 TPU 虚拟机
$ gcloud compute tpus tpu-vm ssh tpu-name --zone zone
从 TPU 虚拟机中,列出挂接到 TPU 虚拟机的磁盘:
(vm)$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 55.5M 1 loop /snap/core18/1997 loop1 7:1 0 67.6M 1 loop /snap/lxd/20326 loop2 7:2 0 32.3M 1 loop /snap/snapd/11588 loop3 7:3 0 32.1M 1 loop /snap/snapd/11841 loop4 7:4 0 55.4M 1 loop /snap/core18/2066 sda 8:0 0 300G 0 disk ├─sda1 8:1 0 299.9G 0 part / ├─sda14 8:14 0 4M 0 part └─sda15 8:15 0 106M 0 part /boot/efi sdb 8:16 0 10G 0 disk # persistent disk
sda 是该虚拟机的启动磁盘。挂接的永久性磁盘的名称取决于挂接到该虚拟机的永久性磁盘的数量。
格式化挂接的永久性磁盘:
(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
创建用于装载永久性磁盘的目录:
(vm)$ sudo mkdir -p /mnt/disks/persist
装载永久性磁盘:
(vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist
为永久性磁盘设置权限:
(vm)$ sudo chmod a+w /mnt/disks/persist
如果要在删除 TPU 虚拟机时删除永久性磁盘,您需要使用以下命令设置永久性磁盘的自动删除状态:
$ gcloud alpha compute instances set-disk-auto-delete vm-instance \ --zone=zone \ --auto-delete \ --disk=disk-name
命令标志说明
vm-instance
- 通过 SSH 连接到 TPU 虚拟机后,shell 提示符会更改为包含您的用户 ID,后跟生成的虚拟机实例名称(例如,pjohnston@t1v-n-……$)。请将 vm-instance 替换为生成的虚拟机实例名称。
zone
- 永久性磁盘所在的可用区。
auto-delete
- 在 TPU 资源删除后,自动删除永久性磁盘。
disk-name
- 您的永久性磁盘的名称。
如果您不希望自动删除永久性磁盘,请跳过此命令。您可以随时使用清理命令中显示的命令手动移除永久性磁盘。
如果您的虚拟机因任何原因关闭,则永久性磁盘可能会断开连接。请参阅在系统重启时配置自动装载,以使您的永久性磁盘在虚拟机重启时自动装载。如需了解详情,请参阅修改永久性磁盘。
清理
断开与 Compute Engine 实例的连接(如果您尚未这样做):
(vm)$ exit
您的提示符现在应为
username@projectname
,表明您位于 Cloud Shell 中。删除您的 Cloud TPU 和 Compute Engine 资源。
$ gcloud compute tpus tpu-vm delete tpu-name \ --zone=zone
通过运行
gcloud list
验证资源是否已删除。删除操作可能需要几分钟时间才能完成。gcloud list
的输出不应显示此过程创建的任何 TPU 虚拟机资源。TPU 虚拟机
$ gcloud compute tpus tpu-vm list --zone=zone
TPU 节点
$ gcloud compute tpus execution-groups list --zone zone
通过列出您创建永久性磁盘的可用区中的所有磁盘,验证永久性磁盘在 TPU 虚拟机删除时是否已自动删除:
$ gcloud compute disks list --filter="zone:( us-central1-b )"
如果永久性磁盘在 TPU 虚拟机删除时未删除,请使用以下命令将其删除:
$ gcloud compute disks delete disk-name \ --zone zone