將耐用的區塊儲存空間附加至 TPU VM

TPU VM 包含 100 GiB 的開機磁碟。在某些情況下,TPU VM 可能需要額外儲存空間,才能進行訓練或預先處理。您可以新增 Google Cloud Hyperdisk永久磁碟 (PD) 磁碟區,擴充本機磁碟容量。

如要獲得最高效能和進階功能,Google 建議使用 Hyperdisk (如果 TPU 支援的話)。否則請使用永久磁碟。如要進一步瞭解 Compute Engine 中的區塊儲存空間選項,請參閱「選擇磁碟類型」。

Hyperdisk 和 Persistent Disk 的 TPU 支援

下表列出各 TPU 版本支援的磁碟類型:

TPU 版本 支援的磁碟類型 每個 VM 的 PD 數量上限
(包括開機磁碟)
v6e Hyperdisk Balanced
Hyperdisk ML
v6e 不支援 PD
v5p 已平衡的永久磁碟 128
v5e 已平衡的永久磁碟 128
v4 已平衡的永久磁碟 128
v3 已平衡的永久磁碟 128
v2 已平衡的永久磁碟 128

存取模式

您可以設定連接至 TPU 的磁碟,使其處於單一寫入者或唯讀模式,如下表所示:

存取模式 說明 Compute Engine API 中的值 Cloud TPU API 中的值 支援的磁碟類型
單一寫手模式 這是預設存取模式。允許磁碟隨時連接至最多一個執行個體。執行個體具備磁碟的讀寫存取權。 READ_WRITE_SINGLE read-write
  • Hyperdisk Balanced
  • Hyperdisk ML
  • 已平衡的永久磁碟
唯讀模式 在唯讀模式下,可同時連接至多個執行個體。執行個體無法在此模式下寫入磁碟。必須開啟這項設定,才能進行唯讀分享。 READ_ONLY_MANY read-only
  • Hyperdisk Balanced
  • 已平衡的永久磁碟

您可以將連接至單一主機 TPU (例如 v6e-8、v5p-8 或 v5litepod-8) 的磁碟設定為單一寫入器或唯讀模式。

將磁碟連接至多主機 TPU 時,磁碟會連接至該 TPU 中的每個 VM。如要避免兩部以上的 TPU VM 同時寫入磁碟,您必須將連接至多主機 TPU 的所有磁碟設為唯讀。唯讀磁碟適合用來儲存資料集,以便在 TPU 節點上處理。

必要條件

您必須先設定 Google Cloud 帳戶和專案,才能使用下列程序。詳情請參閱「設定 Cloud TPU 環境」。

建立磁碟

使用下列指令建立磁碟:

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

指令旗標說明

DISK_NAME
新磁碟的名稱。
DISK_SIZE
新磁碟的大小。值必須是整數,後接大小單位,例如 GB 代表 gibibyte,TB 代表 tebibyte。如未指定大小單位,系統會假設為 GB。
ZONE
要建立新磁碟的區域名稱。這個區域必須與用於建立 TPU 的區域相同。
DISK_TYPE
磁碟類型。請使用下列其中一個值:hyperdisk-balancedhyperdisk-mlpd-balanced

如果是 Hyperdisk,您可以視需要指定 --access-mode 標記,並使用下列其中一個值:

  • READ_WRITE_SINGLE:從一個執行個體讀取/寫入。此為預設值。
  • READ_ONLY_MANY:(僅限 Hyperdisk ML) 從多個執行個體並行存取唯讀資料。

如要進一步瞭解如何建立磁碟,請參閱「建立新的 Hyperdisk 磁碟區」和「建立新的永久磁碟磁碟區」。

連結磁碟

建立 TPU VM 時,您可以將磁碟區連接至 TPU VM,也可以在建立 TPU VM 後再連接。

建立 TPU VM 時連接磁碟

建立 TPU VM 時,請使用 --data-disk 標記連結磁碟區。

如要建立多主機 TPU,您必須指定 mode=read-only (僅適用於 Hyperdisk ML 和 Balanced 永久磁碟)。如果您要建立單一主機 TPU,可以指定 mode=read-only (僅限 Hyperdisk ML 和平衡永久磁碟) 或 mode=read-write。詳情請參閱「存取模式」。

下列範例說明如何使用佇列資源建立 TPU VM 時,附加磁碟區:

$ gcloud compute tpus queued-resources create QR_NAME \
    --node-id=TPU_NAME
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --runtime-version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

指令旗標說明

QR_NAME
排入佇列的資源要求名稱。
TPU_NAME
新 TPU 的名稱。
PROJECT_ID
要在其中建立 TPU 的 Google Cloud 專案 ID。
ZONE
要建立 Cloud TPU 的區域名稱。
ACCELERATOR_TYPE
加速器類型會指定您要建立的 Cloud TPU 版本和大小。如要進一步瞭解各個 TPU 版本支援的加速器類型,請參閱 TPU 版本
TPU_SOFTWARE_VERSION
TPU 軟體版本
DISK_NAME
要連結至 TPU VM 的磁碟名稱。
MODE
磁碟模式。模式必須是 read-onlyread-write。如未指定,預設模式為 read-write。詳情請參閱「存取模式」。

您也可以使用 gcloud compute tpus tpu-vm create 指令建立 TPU VM 時,一併連結磁碟:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

指令旗標說明

TPU_NAME
新 TPU 的名稱。
PROJECT_ID
要在其中建立 TPU 的 Google Cloud 專案 ID。
ZONE
要建立 Cloud TPU 的區域名稱。
ACCELERATOR_TYPE
加速器類型會指定您要建立的 Cloud TPU 版本和大小。如要進一步瞭解各個 TPU 版本支援的加速器類型,請參閱 TPU 版本
TPU_SOFTWARE_VERSION
TPU 軟體版本
DISK_NAME
要連結至 TPU VM 的磁碟名稱。
MODE
磁碟模式。模式必須是 read-onlyread-write。如未指定,預設模式為 read-write。詳情請參閱「存取模式」。

將磁碟連接至現有的 TPU VM

使用 gcloud alpha compute tpus tpu-vm attach-disk 指令將磁碟連結至現有的 TPU VM。

$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME \
    --mode=MODE

指令旗標說明

TPU_NAME
TPU 的名稱。
ZONE
Cloud TPU 所在的區域
DISK_NAME
要連結至 TPU VM 的磁碟名稱。
MODE
磁碟模式。模式必須是 read-onlyread-write。如未指定,預設模式為 read-write。這必須與磁碟的存取模式相符。

如果 VM 因故關機,您可能需要在重新啟動 VM 後掛接磁碟。如要瞭解如何啟用磁碟,在 VM 重新啟動時自動掛接,請參閱「設定系統重新啟動時自動掛接」。

如要進一步瞭解如何自動刪除磁碟,請參閱「修改 Hyperdisk」和「修改永久磁碟」。

格式化及掛接磁碟

如果您將新的空白磁碟掛接到 TPU VM,必須先格式化並掛接磁碟,才能使用該磁碟。如果附加的磁碟已包含資料,您必須先掛接磁碟才能使用。

如要進一步瞭解如何格式化及掛接非開機磁碟,請參閱「在 Linux VM 上格式化及掛接非開機磁碟」。

  1. 使用 SSH 連線至 TPU VM:

    $ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE

    如果您使用多主機 TPU,這項指令會將您連線至 TPU 節點集區中的第一個 TPU (也稱為工作站 0)。

  2. 在 TPU VM 中,列出附加至 TPU VM 的磁碟:

    (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
    

    在這個範例中,sda 是開機磁碟,sdb 則是新附加磁碟的名稱。附加磁碟的名稱取決於附加至 VM 的磁碟數量。

    使用多主機 TPU 時,您需要在 TPU 配量中的所有 TPU VM 上掛接磁碟。所有 TPU VM 的磁碟名稱應相同,但這並非必要條件。舉例來說,如果先卸離磁碟再重新附加,裝置名稱就會遞增,從 sdb 變更為 sdc

  3. 如果磁碟尚未格式化,請使用 mkfs 工具格式化連接的磁碟。 如果磁碟的裝置名稱不同,請替換 sdb。如要使用其他檔案系統,請替換 ext4

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
  4. 建立目錄,將磁碟掛接至 TPU。

    如果您使用的是單一主機 TPU,請從 TPU 執行下列指令,建立要掛接磁碟的目錄:

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

    MOUNT_DIR 替換為要掛接磁碟的目錄。

    如果您使用多主機 TPU,請在 TPU VM 外部執行下列指令。這項指令會在 TPU 區塊中的所有 TPU VM 上建立目錄。

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
  5. 使用 mount 工具將磁碟掛接至 TPU。

    如果您使用的是單一主機 TPU,請執行下列指令,在 TPU VM 上掛接磁碟:

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

    如果您使用多主機 TPU,請在 TPU VM 外部執行下列指令。這會將磁碟掛接至 TPU 配量中的所有 TPU VM。

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
  6. 設定磁碟的讀取與寫入權限。舉例來說,下列指令會授予所有使用者對磁碟的寫入存取權。

    (vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR

卸載磁碟

如要從 TPU VM 卸載 (分離) 磁碟,請執行下列指令:

$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME

指令旗標說明

TPU_NAME
TPU 的名稱。
ZONE
Cloud TPU 所在的區域
DISK_NAME
要從 TPU VM 卸離的磁碟名稱。

清除所用資源

完成後,請刪除 Cloud TPU 和 Compute Engine 資源。

  1. 如果您尚未中斷與 Cloud TPU 的連線,請中斷連線:

    (vm)$ exit

    系統現在顯示的提示訊息應為 username@projectname,代表您位於 Cloud Shell。

  2. 刪除 Cloud TPU:

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. 確認 Cloud TPU 已刪除。刪除作業可能需要幾分鐘才能完成。

    $ gcloud compute tpus tpu-vm list --zone=ZONE
  4. 列出您建立磁碟的可用區中的所有磁碟,確認磁碟是否在 TPU VM 刪除時自動刪除:

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

    如果刪除 TPU VM 時未一併刪除磁碟,請使用下列指令刪除磁碟:

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE