Langlebigen Blockspeicher an eine TPU-VM anhängen

Eine TPU-VM enthält ein 100-GiB-Bootlaufwerk. In einigen Fällen benötigt Ihre TPU-VM möglicherweise zusätzlichen Speicher für das Training oder die Vorverarbeitung. Sie können ein Google Cloud Hyperdisk- oder Persistent Disk-Volume hinzufügen, um die Kapazität des lokalen Laufwerks zu erweitern.

Für die höchste Leistung und erweiterte Funktionen empfiehlt Google die Verwendung von Hyperdisk, sofern diese Option für Ihre TPU verfügbar ist. Verwenden Sie andernfalls die Option „Persistent Disk“. Weitere Informationen zu Blockspeicheroptionen in der Compute Engine finden Sie unter Datenträgertyp auswählen.

TPU-Unterstützung für Hyperdisk und Persistent Disk

In der folgenden Tabelle sind die unterstützten Laufwerkstypen für jede TPU-Version aufgeführt:

TPU-Version Unterstützte Laufwerktypen
v6e Hyperdisk Balanced
Hyperdisk ML
v5p Abgestimmter nichtflüchtiger Speicher
v5e Abgestimmter nichtflüchtiger Speicher
v4 Abgestimmter nichtflüchtiger Speicher
v3 Abgestimmter nichtflüchtiger Speicher
v2 Abgestimmter nichtflüchtiger Speicher

Zugriffsmodi

Sie können ein an eine TPU angeschlossenes Laufwerk im Modus „Einzelner Autor“ oder „Nur-Lese“ konfigurieren, wie in der folgenden Tabelle dargestellt:

Zugriffsmodus Beschreibung Wert in der Compute Engine API Wert in der Cloud TPU API Unterstützte Laufwerktypen
Modus für einzelne Autoren Dies ist der Standardzugriffsmodus. Das Laufwerk kann jederzeit an maximal eine Instanz angehängt werden. Die Instanz hat Lese- und Schreibzugriff auf das Laufwerk. READ_WRITE_SINGLE read-write
  • Hyperdisk Balanced
  • Hyperdisk ML
  • Abgestimmter nichtflüchtiger Speicher
Schreibgeschützt Ermöglicht das gleichzeitige Anhängen an mehrere Instanzen im Lesemodus. Instanzen können in diesem Modus nicht auf das Laufwerk schreiben. Erforderlich für die schreibgeschützte Freigabe. READ_ONLY_MANY read-only
  • Hyperdisk Balanced
  • Abgestimmter nichtflüchtiger Speicher

Sie können ein Laufwerk, das an eine TPU mit einem einzelnen Host (z. B. v6e-8, v5p-8 oder v5litepod-8) angehängt ist, im Modus „Einzelner Autor“ oder „Schreibgeschützt“ konfigurieren.

Wenn Sie ein Laufwerk an eine Multi-Host-TPU anhängen, wird es an jede VM in dieser TPU angehängt. Damit zwei oder mehr TPU-VMs nicht gleichzeitig auf ein Laufwerk schreiben, müssen Sie alle an eine TPU mit mehreren Hosts angehängten Laufwerke als schreibgeschützt konfigurieren. Lesezugriffslaufwerke eignen sich zum Speichern eines Datensatzes zur Verarbeitung auf einem TPU-Speicherbereich.

Vorbereitung

Sie müssen ein Google Cloud -Konto und ein Projekt eingerichtet haben, bevor Sie die folgenden Verfahren verwenden. Weitere Informationen finden Sie unter Cloud TPU-Umgebung einrichten.

Laufwerk erstellen

Verwenden Sie den folgenden Befehl, um einen Datenträger zu erstellen:

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

Beschreibung der Befehls-Flags

DISK_NAME
Name des neuen Laufwerks.
DISK_SIZE
Die Größe des neuen Laufwerks. Der Wert muss eine ganze Zahl sein, gefolgt von der Größeneinheit GiB für Gibibyte oder TiB für Tebibyte. Wenn keine Größeneinheit angegeben ist, wird von GB ausgegangen.
ZONE
Der Name der Zone, in der das neue Laufwerk erstellt werden soll. Dies muss dieselbe Zone sein, die zum Erstellen der TPU verwendet wurde.
DISK_TYPE
Der Typ des Laufwerks. Verwenden Sie einen der folgenden Werte: hyperdisk-balanced, hyperdisk-ml oder pd-balanced.

Für Hyperdisk können Sie das Flag --access-mode optional mit einem der folgenden Werte angeben:

  • READ_WRITE_SINGLE: Lese-/Schreibzugriff von einer Instanz. Das ist die Standardeinstellung.
  • READ_ONLY_MANY: (Nur Hyperdisk ML) Gleichzeitiger Lesezugriff von mehreren Instanzen.

Weitere Informationen zum Erstellen von Laufwerken finden Sie unter Neues Hyperdisk-Volume erstellen und Neues Persistent Disk-Volume erstellen.

Laufwerk anschließen

Sie können Ihrer TPU-VM beim Erstellen ein Laufwerk-Volume zuweisen oder dies auch nach dem Erstellen tun.

Laufwerk beim Erstellen einer TPU-VM anhängen

Verwenden Sie das Flag --data-disk, um beim Erstellen einer TPU-VM ein Laufwerk-Volume anzuhängen.

Wenn Sie eine TPU mit mehreren Hosts erstellen, müssen Sie mode=read-only angeben (nur Hyperdisk ML und Balanced Persistent Disk). Wenn Sie eine TPU mit einem einzelnen Host erstellen, können Sie mode=read-only (nur Hyperdisk ML und Balanced Persistent Disk) oder mode=read-write angeben. Weitere Informationen finden Sie unter Zugriffsmodi.

Im folgenden Beispiel wird gezeigt, wie Sie beim Erstellen einer TPU-VM mit anstehenden Ressourcen ein Laufwerk anhängen:

$ 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

Beschreibung der Befehls-Flags

QR_NAME
Der Name der anstehenden Ressourcenanfrage.
TPU_NAME
Der Name der neuen TPU.
PROJECT_ID
Die ID des Projekts Google Cloud , in dem die TPU erstellt werden soll.
ZONE
Der Name der Zone, in der die Cloud TPU erstellt werden soll.
ACCELERATOR_TYPE
Mit dem Beschleunigertyp geben Sie die Version und Größe der Cloud TPU an, die Sie erstellen möchten. Weitere Informationen zu den unterstützten Beschleunigertypen für jede TPU-Version finden Sie unter TPU-Versionen.
TPU_SOFTWARE_VERSION
Die Version der TPU-Software.
DISK_NAME
Der Name des Laufwerks, das an die TPU-VM angehängt werden soll.
MODE
Der Modus des Laufwerks. Der Modus muss read-only oder read-write sein. Wenn keine Angabe erfolgt, ist der Standardmodus read-write. Weitere Informationen finden Sie unter Zugriffsmodus.

Sie können auch ein Laufwerk anhängen, wenn Sie eine TPU-VM mit dem Befehl gcloud compute tpus tpu-vm create erstellen:

$ 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

Beschreibung der Befehls-Flags

TPU_NAME
Der Name der neuen TPU.
PROJECT_ID
Die ID des Projekts Google Cloud , in dem die TPU erstellt werden soll.
ZONE
Der Name der Zone, in der die Cloud TPU erstellt werden soll.
ACCELERATOR_TYPE
Mit dem Beschleunigertyp geben Sie die Version und Größe der Cloud TPU an, die Sie erstellen möchten. Weitere Informationen zu den unterstützten Beschleunigertypen für jede TPU-Version finden Sie unter TPU-Versionen.
TPU_SOFTWARE_VERSION
Die Version der TPU-Software.
DISK_NAME
Der Name des Laufwerks, das an die TPU-VM angehängt werden soll.
MODE
Der Modus des Laufwerks. Der Modus muss read-only oder read-write sein. Wenn keine Angabe erfolgt, ist der Standardmodus read-write. Weitere Informationen finden Sie unter Zugriffsmodi.

Laufwerk an eine vorhandene TPU-VM anhängen

Verwenden Sie den Befehl gcloud alpha compute tpus tpu-vm attach-disk, um ein Laufwerk an eine vorhandene TPU-VM anzuhängen.

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

Beschreibung der Befehls-Flags

TPU_NAME
Der Name der TPU.
ZONE
Die Zone, in der sich die Cloud TPU befindet.
DISK_NAME
Der Name des Laufwerks, das an die TPU-VM angehängt werden soll.
MODE
Der Modus des Laufwerks. Der Modus muss read-only oder read-write sein. Wenn keine Angabe erfolgt, ist der Standardmodus read-write. Dieser muss mit dem Zugriffsmodus des Laufwerks übereinstimmen.

Wenn Ihre VM aus irgendeinem Grund heruntergefahren wird, müssen Sie das Laufwerk möglicherweise nach dem Neustart der VM bereitstellen. Informationen zum automatischen Bereitstellen des Laufwerks beim Neustart der VM finden Sie unter Automatische Bereitstellung beim Systemneustart konfigurieren.

Weitere Informationen zum automatischen Löschen eines Laufwerks finden Sie unter Hyperdisk ändern und Nichtflüchtigen Speicher ändern.

Laufwerk formatieren und bereitstellen

Wenn Sie an Ihre TPU-VM ein neues, leeres Laufwerk angehängt haben, müssen Sie das Laufwerk formatieren und bereitstellen, bevor Sie es verwenden können. Wenn Sie ein Laufwerk angehängt haben, das bereits Daten enthält, müssen Sie es bereitstellen, bevor Sie es verwenden können.

Weitere Informationen zum Formatieren und Bereitstellen eines nicht bootfähigen Laufwerks finden Sie unter Nicht-Bootlaufwerk auf einer Linux-VM formatieren und bereitstellen.

  1. Stellen Sie über SSH eine Verbindung zu Ihrer TPU-VM her:

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

    Wenn Sie eine TPU mit mehreren Hosts verwenden, stellt dieser Befehl eine Verbindung zum ersten TPU im TPU-Speicherbereich her (auch Worker 0 genannt).

  2. Listen Sie auf der TPU-VM die an die TPU-VM angehängten Laufwerke auf:

    (vm)$ sudo lsblk

    Die Ausgabe des Befehls lsblk sieht in etwa so aus:

    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
    

    In diesem Beispiel ist sda das Bootlaufwerk und sdb der Name des neu angeschlossenen Laufwerks. Der Name des angehängten Laufwerks hängt davon ab, wie viele Laufwerke an die VM angehängt sind.

    Wenn Sie eine TPU mit mehreren Hosts verwenden, müssen Sie das Laufwerk auf allen TPU-VMs im TPU-Slice bereitstellen. Der Name des Laufwerks sollte für alle TPU-VMs gleich sein, dies ist jedoch nicht garantiert. Wenn Sie das Laufwerk beispielsweise trennen und wieder anschließen, wird der Gerätename inkrementiert und ändert sich von sdb in sdc.

  3. Wenn das Laufwerk noch nicht formatiert wurde, formatieren Sie es mit dem mkfs-Tool. Ersetzen Sie sdb, wenn Ihr Laufwerk einen anderen Gerätenamen hat. Ersetzen Sie ext4, wenn Sie ein anderes Dateisystem verwenden möchten.

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
  4. Erstellen Sie ein Verzeichnis, um das Laufwerk auf der TPU bereitzustellen.

    Wenn Sie eine TPU mit einem einzelnen Host verwenden, führen Sie den folgenden Befehl auf der TPU aus, um ein Verzeichnis zum Bereitstellen des Laufwerks zu erstellen:

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

    Ersetzen Sie MOUNT_DIR durch das Verzeichnis, in dem Sie das Laufwerk bereitstellen möchten.

    Wenn Sie eine TPU mit mehreren Hosts verwenden, führen Sie den folgenden Befehl außerhalb Ihrer TPU-VM aus. Mit diesem Befehl wird das Verzeichnis auf allen TPU-VMs im TPU-Speicherbereich erstellt.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
  5. Verwenden Sie das mount-Tool, um das Laufwerk auf Ihrer TPU bereitzustellen.

    Wenn Sie eine TPU mit einem einzelnen Host verwenden, führen Sie den folgenden Befehl aus, um den Datenträger auf Ihrer TPU-VM bereitzustellen:

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

    Wenn Sie eine TPU mit mehreren Hosts verwenden, führen Sie den folgenden Befehl außerhalb Ihrer TPU-VM aus. Das Laufwerk wird auf allen TPU-VMs in Ihrem TPU-Speicherbereich bereitgestellt.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
  6. Konfigurieren Sie Lese- und Schreibberechtigungen auf dem Laufwerk. Mit dem folgenden Befehl wird beispielsweise allen Nutzern Schreibzugriff auf das Laufwerk gewährt.

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

Bereitstellung eines Laufwerks aufheben

Führen Sie den folgenden Befehl aus, um ein Laufwerk von Ihrer TPU-VM zu trennen:

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

Beschreibung der Befehls-Flags

TPU_NAME
Der Name der TPU.
ZONE
Die Zone, in der sich die Cloud TPU befindet.
DISK_NAME
Der Name des Laufwerks, das von der TPU-VM getrennt werden soll.

Bereinigen

Löschen Sie Ihre Cloud TPU- und Compute Engine-Ressourcen, wenn Sie sie nicht mehr benötigen.

  1. Trennen Sie die Verbindung zur Cloud TPU, sofern noch nicht geschehen:

    (vm)$ exit

    Die Eingabeaufforderung sollte nun username@projectname lauten und angeben, dass Sie sich in Cloud Shell befinden.

  2. Löschen Sie Ihre Cloud TPU.

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. Prüfen Sie, ob die Cloud TPU gelöscht wurde. Der Löschvorgang kann einige Minuten dauern.

    $ gcloud compute tpus tpu-vm list --zone=ZONE
  4. Prüfen Sie, ob das Laufwerk beim Löschen der TPU-VM automatisch gelöscht wurde. Listen Sie dazu alle Laufwerke in der Zone auf, in der Sie das Laufwerk erstellt haben:

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

    Wenn der Datenträger beim Löschen der TPU-VM nicht gelöscht wurde, verwenden Sie den folgenden Befehl, um ihn zu löschen:

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE