將耐用的區塊儲存空間附加至 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 |
|
唯讀模式 | 在唯讀模式下,可同時連接至多個執行個體。執行個體無法在此模式下寫入磁碟。必須開啟這項設定,才能進行唯讀分享。 | READ_ONLY_MANY |
read-only |
|
您可以將連接至單一主機 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-balanced
、hyperdisk-ml
或pd-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-only
或read-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-only
或read-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
指令旗標說明
如果 VM 因故關機,您可能需要在重新啟動 VM 後掛接磁碟。如要瞭解如何啟用磁碟,在 VM 重新啟動時自動掛接,請參閱「設定系統重新啟動時自動掛接」。
如要進一步瞭解如何自動刪除磁碟,請參閱「修改 Hyperdisk」和「修改永久磁碟」。
格式化及掛接磁碟
如果您將新的空白磁碟掛接到 TPU VM,必須先格式化並掛接磁碟,才能使用該磁碟。如果附加的磁碟已包含資料,您必須先掛接磁碟才能使用。
如要進一步瞭解如何格式化及掛接非開機磁碟,請參閱「在 Linux VM 上格式化及掛接非開機磁碟」。
使用 SSH 連線至 TPU VM:
$ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE
如果您使用多主機 TPU,這項指令會將您連線至 TPU 節點集區中的第一個 TPU (也稱為工作站 0)。
在 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
。如果磁碟尚未格式化,請使用
mkfs
工具格式化連接的磁碟。 如果磁碟的裝置名稱不同,請替換 sdb。如要使用其他檔案系統,請替換 ext4。(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
建立目錄,將磁碟掛接至 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"
使用
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"
設定磁碟的讀取與寫入權限。舉例來說,下列指令會授予所有使用者對磁碟的寫入存取權。
(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 資源。
如果您尚未中斷與 Cloud TPU 的連線,請中斷連線:
(vm)$ exit
系統現在顯示的提示訊息應為
username@projectname
,代表您位於 Cloud Shell。刪除 Cloud TPU:
$ gcloud compute tpus tpu-vm delete TPU_NAME \ --zone=ZONE
確認 Cloud TPU 已刪除。刪除作業可能需要幾分鐘才能完成。
$ gcloud compute tpus tpu-vm list --zone=ZONE
列出您建立磁碟的可用區中的所有磁碟,確認磁碟是否在 TPU VM 刪除時自動刪除:
$ gcloud compute disks list --filter="zone:( ZONE )"
如果刪除 TPU VM 時未一併刪除磁碟,請使用下列指令刪除磁碟:
$ gcloud compute disks delete DISK_NAME \ --zone ZONE