Langlebigen Blockspeicher an eine TPU-VM anhängen

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

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

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

In der folgenden Tabelle sind die unterstützten Festplattentypen für die einzelnen TPU-Versionen aufgeführt:

TPU-Version Unterstützte Laufwerktypen Maximale Anzahl nichtflüchtiger Laufwerke pro VM
(einschließlich des Bootlaufwerks)
v6e Hyperdisk Balanced
Hyperdisk ML
PDs werden von v6e nicht unterstützt
v5p Abgestimmter nichtflüchtiger Speicher 128
v5e Abgestimmter nichtflüchtiger Speicher 128
v4 Abgestimmter nichtflüchtiger Speicher 128
v3 Abgestimmter nichtflüchtiger Speicher 128
v2 Abgestimmter nichtflüchtiger Speicher 128

Zugriffsmodi

Sie können ein Laufwerk, das an eine TPU angehängt ist, im Modus „Einzelner Autor“ oder „Nur lesen“ 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 einen einzelnen Autor Dies ist der Standardzugriffsmodus. Das Laufwerk kann jederzeit an maximal eine Instanz angehängt werden. Die Instanz hat Lese-/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 Nur-Lese-Modus. 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 Single-Host-TPU (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 nicht zwei oder mehr TPU-VMs gleichzeitig auf ein Laufwerk schreiben, müssen Sie alle Laufwerke, die an eine TPU mit mehreren Hosts angehängt sind, als schreibgeschützt konfigurieren. Schreibgeschützte Laufwerke sind nützlich, um ein Dataset für die Verarbeitung auf einem TPU-Slice zu speichern.

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 ein Laufwerk zu erstellen:

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

Beschreibung der Befehls-Flags

DISK_NAME
Der 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 Laufwerkstyp. Verwenden Sie einen der folgenden Werte: hyperdisk-balanced, hyperdisk-ml oder pd-balanced.

Für Hyperdisk können Sie optional das Flag --access-mode 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 schreibgeschützter Zugriff von mehreren Instanzen.

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

Laufwerk anhängen

Sie können ein Laufwerk-Volume an Ihre TPU-VM anhängen, wenn Sie die TPU-VM erstellen, oder Sie können es nach der Erstellung der TPU-VM anhängen.

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.

Das folgende Beispiel zeigt, wie Sie beim Erstellen einer TPU-VM mit in die Warteschlange eingereihten Ressourcen ein Laufwerkvolumen 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 Anfrage für die Ressource in der Warteschlange.
TPU_NAME
Der Name der neuen TPU.
PROJECT_ID
Die ID des Google Cloud Projekts, in dem die TPU erstellt werden soll.
ZONE
Der Name der Zone, in der die Cloud TPU erstellt werden soll.
ACCELERATOR_TYPE
Der Beschleunigertyp gibt die Version und Größe der Cloud TPU an, die Sie erstellen möchten. Weitere Informationen zu den unterstützten Beschleunigertypen für die einzelnen TPU-Versionen finden Sie unter TPU-Versionen.
TPU_SOFTWARE_VERSION
Die TPU-Softwareversion.
DISK_NAME
Der Name des Laufwerks, das an die TPU-VM angehängt werden soll.
MODE
Der Modus des Laufwerks. Der Modus muss einer der folgenden Werte sein: read-only oder read-write. Wenn keine Angabe erfolgt, wird der Standardmodus read-write verwendet. 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 Google Cloud Projekts, in dem die TPU erstellt werden soll.
ZONE
Der Name der Zone, in der die Cloud TPU erstellt werden soll.
ACCELERATOR_TYPE
Der Beschleunigertyp gibt die Version und Größe der Cloud TPU an, die Sie erstellen möchten. Weitere Informationen zu den unterstützten Beschleunigertypen für die einzelnen TPU-Versionen finden Sie unter TPU-Versionen.
TPU_SOFTWARE_VERSION
Die TPU-Softwareversion.
DISK_NAME
Der Name des Laufwerks, das an die TPU-VM angehängt werden soll.
MODE
Der Modus des Laufwerks. Der Modus muss einer der folgenden Werte sein: read-only oder read-write. Wenn keine Angabe erfolgt, wird der Standardmodus read-write verwendet. 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 einer der folgenden Werte sein: read-only oder read-write. Wenn keine Angabe erfolgt, wird der Standardmodus read-write verwendet. Dies muss dem Zugriffsmodus des Laufwerks entsprechen.

Wenn Ihre VM aus irgendeinem Grund heruntergefahren wird, müssen Sie das Laufwerk möglicherweise bereitstellen, nachdem Sie die VM neu gestartet haben. Informationen dazu, wie Sie festlegen, dass Ihr Laufwerk beim VM-Neustart automatisch bereitgestellt wird, finden Sie unter Automatische Bereitstellung beim Systemneustart konfigurieren.

Weitere Informationen zum automatischen Löschen eines Laufwerks finden Sie unter Hyperdisk ändern und Persistent Disk ä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-Bootlaufwerks 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, werden Sie mit diesem Befehl mit der ersten TPU im TPU-Slice (auch als Worker 0 bezeichnet) verbunden.

  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 angehängten 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 einbinden. Der Name des Laufwerks sollte für alle TPU-VMs gleich sein, dies ist jedoch nicht garantiert. Wenn Sie das Laufwerk beispielsweise trennen und dann wieder anhängen, wird der Gerätename inkrementiert und ändert sich von sdb zu sdc.

  3. Wenn das Laufwerk noch nicht formatiert wurde, formatieren Sie das angehängte Laufwerk 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, in dem das Laufwerk auf der TPU bereitgestellt werden soll.

    Wenn Sie eine TPU mit einem Host verwenden, führen Sie den folgenden Befehl auf Ihrer TPU aus, um ein Verzeichnis zum Einbinden 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-Slice erstellt.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
  5. Hängen Sie das Laufwerk mit dem mount-Tool an Ihre TPU an.

    Wenn Sie eine Single-Host-TPU verwenden, führen Sie den folgenden Befehl aus, um das Laufwerk auf Ihrer TPU-VM zu mounten:

    (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. Dadurch wird das Laufwerk auf allen TPU-VMs in Ihrem TPU-Slice 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 die Festplatte 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 die Festplatte beim Löschen der TPU-VM nicht gelöscht wurde, löschen Sie sie mit dem folgenden Befehl:

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE