使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

将永久性磁盘添加到 TPU 虚拟机

TPU 虚拟机包含一个 100GB 的启动磁盘。在某些情况下,您可能需要更多本地存储空间来进行训练或预处理。您可以添加永久性磁盘来扩展本地磁盘容量。

概览

挂接到单设备 TPU(v2-8、v3-8、v4-8 等)的永久性磁盘可以配置为 read-writeread-only。当您将一个永久性磁盘挂接到属于 TPU Pod 的 TPU 虚拟机时,该磁盘会挂接到该 Pod 中的每个 TPU 虚拟机。为防止 Pod 中的两个或更多 TPU 虚拟机同时向永久性磁盘写入数据,您必须将一个 Pod 中挂接到 TPU 虚拟机的所有永久性磁盘配置为 read-onlyread-only 磁盘可用于在 TPU Pod 上存储数据集以进行处理。

创建永久性磁盘并将其挂接到 TPU 虚拟机后,必须装载永久性磁盘,指定永久性磁盘可以在文件系统中的什么位置访问。如需了解详情,请参阅装载磁盘

前提条件

您需要先设置 Google Cloud 帐号和项目,然后才能按照以下步骤执行操作。如果您尚未设置 Cloud TPU 项目,请先按照设置帐号和 Cloud TPU 项目中的步骤操作,然后再继续。

简要步骤

设置永久性磁盘的简要步骤如下:

  1. 创建永久性磁盘
  2. 将永久性磁盘挂接到 TPU 虚拟机
  3. 装载永久性磁盘
  4. 清理 TPU 虚拟机和永久性磁盘资源

设置 TPU 虚拟机和永久性磁盘

创建 TPU 虚拟机时,您可以将永久性磁盘挂接到 TPU 虚拟机。您还可以将永久性磁盘挂接到现有的 TPU 虚拟机。

创建永久性磁盘

使用以下命令创建永久性磁盘:

  $ gcloud compute disks create disk-name \
    --size disk-size  \
    --zone zone \
    --type pd-balanced

命令标志说明

disk-name
您为永久性磁盘选择的名称。
disk-size
永久性磁盘的大小(以 GB 为单位)。
zone
要在其中创建永久性磁盘的可用区。此地区必须与用于创建 TPU 的地区相同。
type
要添加的磁盘类型。支持的类型为:“pd-standard”、“pd-ssd”或“pd-Balance”。

挂接永久性磁盘

您可以在创建 TPU 虚拟机时将一个永久性磁盘挂接到 TPU 虚拟机,也可以在创建 TPU 虚拟机后添加一个永久性磁盘。

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

创建 TPU 虚拟机时,请使用 --data-disk 标志挂接永久性磁盘。如果您要创建 TPU Pod,则必须指定 mode=read-only。如果您要创建单个 TPU 设备,您可以指定 mode=read-onlymode=read-write。以下命令会创建一个 TPU 并将永久性磁盘模式设置为 read-write

  $ 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 虚拟机的永久性磁盘的名称和读写模式。

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

使用 gcloud alpha compute tpus tpu-vm attach-disk 命令将永久性磁盘挂接到现有 TPU 虚拟机。如需了解详情和查看示例,请参阅 gcloud 文档。

  $ gcloud alpha compute tpus tpu-vm attach-disk tpu-name \
    --zone=zone \
    --disk=disk-name \
    --mode=disk-mode

命令标志说明

tpu-name
TPU 资源的名称。
zone
Cloud TPU 所在的可用区
disk-name
要挂接到 TPU 虚拟机的永久性磁盘的名称。
mode
磁盘的模式。模式必须是“只读”或“读写”。

如果要在删除 TPU 虚拟机时也删除永久性磁盘,则需要使用以下命令设置永久性磁盘的自动删除状态:

$ gcloud 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
您的永久性磁盘的名称。

如果您的虚拟机因任何原因关停,则永久性磁盘可能断开连接。请参阅配置系统重启时自动装载以使永久性磁盘在虚拟机重启时自动装载。如需了解详情,请参阅修改永久性磁盘

装载永久性磁盘

如需从 TPU 虚拟机访问永久性磁盘,您必须装载该磁盘。这将指定 TPU 虚拟机文件系统中可访问永久性磁盘的位置。

  1. 使用 SSH 连接到您的 TPU 虚拟机:

    $ gcloud compute tpus tpu-vm ssh tpu-name --zone zone
    

    使用 TPU Pod 时,Pod 中的每个 TPU 各有一个 TPU 虚拟机。上述命令将同时适用于 TPU 设备和 TPU Pod。如果您使用的是 TPU Pod,此命令会将您连接到 Pod 中的第一个 TPU(也称为工作器 0)。

  2. 在 TPU 虚拟机中,列出挂接到 TPU 虚拟机的磁盘:

    (vm)$ sudo lsblk
    

    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 是启动磁盘,sdb 是永久性磁盘。挂接的永久性磁盘的名称取决于挂接到虚拟机的永久性磁盘数量。

    使用 TPU Pod 时,您需要在 Pod 的所有 TPU 虚拟机上装载永久性磁盘。所有 TPU 虚拟机的永久性磁盘名称都应相同,但无法保证。例如,如果您分离永久性磁盘,然后再重新挂接,则设备名称将递增,从 sdb 更改为 sdc,依此类推。

  3. 如果磁盘尚未格式化,请立即格式化挂接的永久性磁盘:

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
    
  4. 创建用于装载永久性磁盘的目录:

    如果您使用的是 TPU 设备,请运行以下命令来创建一个目录来装载永久性磁盘:

    (vm)$ sudo mkdir -p /mnt/disks/persist
    

    如果您使用的是 TPU Pod,请在 TPU 虚拟机之外运行以下命令。这将在 Pod 中的所有 TPU 虚拟机上创建该目录。

    gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/persist"
    
  5. 装载永久性磁盘:

    如果您使用的是 TPU 设备,请运行以下命令,在永久性磁盘虚拟机上装载永久性磁盘。

    (vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist

    如果您使用的是 TPU Pod,请在 TPU 虚拟机之外运行以下命令。它将在您的 Pod 的所有 TPU 虚拟机上装载永久性磁盘。

    (vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist"

清理

用完 TPU 资源后,请将其删除。

  1. 断开与 Compute Engine 实例的连接(如果您尚未这样做):

    (vm)$ exit
    

    您的提示符现在应为 username@projectname,表明您位于 Cloud Shell 中。

  2. 删除您的 Cloud TPU 和 Compute Engine 资源。

    $ gcloud compute tpus tpu-vm delete tpu-name \
     --zone=zone
    
  3. 通过运行 gcloud list 验证资源是否已删除。删除操作可能需要几分钟时间才能完成。gcloud list 的输出不应显示此过程创建的任何 TPU 虚拟机资源。

    TPU 虚拟机

    $ gcloud compute tpus tpu-vm list --zone=zone
    

    TPU 节点

    $ gcloud compute tpus execution-groups list --zone zone
    
  4. 通过列出您创建永久性磁盘的可用区中的所有磁盘,验证永久性磁盘在 TPU 虚拟机删除时是否已自动删除:

    $ gcloud compute disks list --filter="zone:( us-central1-b )"
    

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

    $ gcloud compute disks delete disk-name \
    --zone zone