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

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

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

Hyperdisk 和 Persistent Disk 的 TPU 支援

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

TPU 版本 支援的磁碟類型 每個 VM 的磁碟數量上限
(包括開機磁碟)
v6e Hyperdisk Balanced
Hyperdisk ML
32
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 代表吉位元組,TB 代表太位元組。如未指定大小單位,系統會假設為 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