Nichtflüchtigen Speicher zu einer TPU-VM hinzufügen
Eine TPU-VM enthält ein 100-GB-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 einen nichtflüchtigen Speicher hinzufügen, um die Kapazität des lokalen Laufwerks zu erweitern.
Übersicht
Ein nichtflüchtiger Datenträger, der an eine TPU mit einem einzelnen Gerät (v2-8, v3-8, v4-8 usw.) angehängt ist, kann als read-write
oder read-only
konfiguriert werden. Wenn Sie einen nichtflüchtigen Datenträger an eine TPU-VM anhängen, die Teil eines TPU-Pod ist, wird das Laufwerk an jede TPU-VM in diesem Pod angehängt. Damit zwei oder mehr TPU-VMs in einem Pod nicht gleichzeitig auf einen nichtflüchtigen Speicher schreiben, müssen alle nichtflüchtigen Speicher, die an eine TPU-VM in einem Pod angehängt sind, als read-only
konfiguriert werden. read-only
-Laufwerke eignen sich zum Speichern eines Datensatzes zur Verarbeitung auf einem TPU-Pod.
Nachdem Sie einen nichtflüchtigen Speicher erstellt und an Ihre TPU-VM angehängt haben, müssen Sie ihn bereitstellen und angeben, wo im Dateisystem darauf zugegriffen werden kann. Weitere Informationen finden Sie unter Laufwerke bereitstellen.
Vorbereitung
Sie müssen ein Google Cloud-Konto und ein Projekt eingerichtet haben, bevor Sie die folgenden Verfahren verwenden. Wenn Sie noch kein Cloud TPU-Projekt eingerichtet haben, folgen Sie der Anleitung unter Cloud TPU-Umgebung einrichten, bevor Sie fortfahren.
Allgemeine Schritte
Dies sind die allgemeinen Schritte zum Einrichten eines nichtflüchtigen Speichers:
- Persistent Disk erstellen
- Nichtflüchtigen Speicher an eine TPU-VM anhängen
- Nichtflüchtigen Speicher bereitstellen
- TPU-VM-Ressourcen und nichtflüchtige Speicherressourcen bereinigen
TPU-VM und nichtflüchtigen Speicher einrichten
Sie können einen nichtflüchtigen Speicher beim Erstellen einer TPU-VM anhängen. Sie können einen nichtflüchtigen Speicher auch an eine vorhandene TPU-VM anhängen.
Persistent Disk erstellen
Verwenden Sie den folgenden Befehl, um einen nichtflüchtigen Speicher zu erstellen:
$ gcloud compute disks create disk-name \ --size disk-size \ --zone zone \ --type pd-balanced
Beschreibung der Befehls-Flags
disk-name
- Ein Name Ihrer Wahl für den nichtflüchtigen Speicher.
disk-size
- : Die Größe des nichtflüchtigen Speichers in GB.
zone
- Die Zone, in der der nichtflüchtige Speicher erstellt werden soll. Dies muss dieselbe Zone sein, die zum Erstellen der TPU verwendet wurde.
type
- Der
hinzuzufügende Laufwerkstyp. Unterstützte Typen sind
pd-standard
,pd-ssd
oderpd-balanced
.
Nichtflüchtigen Speicher anhängen
Sie können Ihrer TPU-VM beim Erstellen einen nichtflüchtigen Speicher anhängen oder einen hinzufügen, nachdem die TPU-VM erstellt wurde.
Nichtflüchtigen Speicher beim Erstellen einer TPU-VM anhängen
.Verwenden Sie das Flag --data-disk
, um beim Erstellen einer TPU-VM einen nichtflüchtigen Speicher anzubringen.
Wenn Sie einen TPU-Pod erstellen, müssen Sie mode=read-only
angeben. Wenn Sie ein einzelnes TPU-Gerät erstellen, können Sie mode=read-only
oder mode=read-write
angeben.
Mit dem folgenden Befehl wird eine einzelne TPU erstellt und der Modus für nichtflüchtigen Speicher auf read-write
festgelegt:
$ gcloud compute tpus tpu-vm create tpu-name \ --project project-id \ --zone=zone \ --accelerator-type=v3-8 \ --version=tpu-vm-image \ --data-disk source=projects/project-id/zones/zone/disks/disk-name,mode=read-write
Beschreibung der Befehls-Flags
tpu-name
- Der Name, den Sie für die TPU-Ressourcen ausgewählt haben.
project
- Ihre Projekt-ID.
zone
- Die 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.
version
- Das TPU-VM-Image für Ihr Framework.
data-disk
- Der Name und der Lese-/Schreibmodus des nichtflüchtigen Speichers, der an die TPU-VM angehängt werden soll.
Nichtflüchtigen Speicher an eine vorhandene TPU-VM anhängen
Verwenden Sie den Befehl gcloud alpha compute tpus tpu-vm attach-disk
, um einen nichtflüchtigen Datenträger an eine vorhandene TPU-VM anzuhängen. Weitere Informationen und Beispiele finden Sie in der gcloud
-Dokumentation.
$ gcloud alpha compute tpus tpu-vm attach-disk tpu-name \ --zone=zone \ --disk=disk-name \ --mode=disk-mode
Beschreibung der Befehls-Flags
tpu-name
- Der Name der TPU-Ressourcen.
zone
- Die Zone, in der sich die Cloud TPU befindet.
disk-name
- Der Name des nichtflüchtigen Speichers, der an die TPU-VM angehängt werden soll.
mode
- Der Modus des Laufwerks. Der Modus muss
read-only
oderread-write
sein.
Wenn Sie den nichtflüchtigen Speicher beim Löschen der TPU-VM löschen möchten, müssen Sie den Status des nichtflüchtigen Speichers für das automatische Löschen mit folgendem Befehl festlegen:
$ gcloud compute instances set-disk-auto-delete vm-instance \ --zone=zone \ --auto-delete \ --disk=disk-name
Beschreibung der Befehls-Flags
vm-instance
- Nachdem Sie eine SSH-Verbindung zur TPU-VM hergestellt haben, ändert sich Ihre Shell-Eingabeaufforderung und enthält Ihre Nutzer-ID gefolgt von einem generierten VM-Instanznamen (z. B. pjohnston@t1v-n-...$). Ersetzen Sie vm-instance durch den generierten VM-Instanznamen,
zone
- Die Zone, in der sich der nichtflüchtige Speicher befindet.
auto-delete
- Den nichtflüchtigen Speicher automatisch löschen, wenn die TPU-Ressourcen gelöscht werden.
disk-name
- Ein Name für den nichtflüchtigen Speicher.
Wenn Ihre VM aus irgendeinem Grund heruntergefahren wird, wird möglicherweise der nichtflüchtige Speicher getrennt. Unter Automatische Bereitstellung beim Systemneustart konfigurieren erfahren Sie, wie Ihr nichtflüchtiger Speicher beim VM-Neustart automatisch bereitgestellt werden kann.
Weitere Informationen zum automatischen Löschen eines nichtflüchtigen Speichers finden Sie unter Nichtflüchtigen Speicher ändern.
Nichtflüchtigen Speicher bereitstellen
Wenn Sie von einer TPU-VM auf einen nichtflüchtigen Speicher zugreifen möchten, müssen Sie das Laufwerk bereitstellen. Hier wird ein Speicherort im Dateisystem der TPU-VM angegeben, auf den der nichtflüchtige Speicher zugreifen kann.
Stellen Sie über SSH eine Verbindung zu Ihrer TPU-VM her:
$ gcloud compute tpus tpu-vm ssh tpu-name --zone zone
Bei einem TPU-Pod gibt es für jede TPU im Pod eine TPU-VM. Der vorherige Befehl funktioniert sowohl für TPU-Geräte als auch für TPU-Pods. Wenn Sie TPU-Pods verwenden, stellt dieser Befehl eine Verbindung zur ersten TPU im Pod her (auch Worker 0 genannt).
Listen Sie auf der TPU-VM die an die TPU-VM angehängten Laufwerke auf:
(vm)$ sudo lsblk
Die Ausgabe des Befehls
lsblk
sollte in etwa so aussehen: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 <== Persistent Disk
In diesem Beispiel ist
sda
das Bootlaufwerk undsdb
der Name des neu angeschlossenen nichtflüchtigen Speichers. Der Name des angehängten nichtflüchtigen Speichers hängt davon ab, wie viele nichtflüchtige Speicher an die VM angehängt sind.Wenn Sie einen TPU-Pod verwenden, müssen Sie den nichtflüchtigen Speicher auf allen TPU-VMs in Ihrem Pod bereitstellen. Der Name des nichtflüchtigen Speichers sollte für alle TPU-VMs gleich sein, ist aber nicht garantiert. Wenn Sie beispielsweise den nichtflüchtigen Speicher trennen und dann wieder anschließen, wird der Gerätename inkrementiert und ändert sich von
sdb
insdc
.Wenn das Laufwerk noch nicht formatiert wurde, formatieren Sie es jetzt:
(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
Erstellen Sie ein Verzeichnis zum Bereitstellen des nichtflüchtigen Speichers:
Wenn Sie ein TPU-Gerät verwenden, führen Sie den folgenden Befehl aus, um ein Verzeichnis zum Bereitstellen des nichtflüchtigen Speichers zu erstellen:
(vm)$ sudo mkdir -p /mnt/disks/persist
Wenn Sie einen TPU-Pod verwenden, führen Sie den folgenden Befehl außerhalb Ihrer TPU-VM aus. Dadurch wird das Verzeichnis auf allen TPU-VMs im Pod erstellt.
(vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/persist"
Stellen Sie den nichtflüchtigen Speicher bereit:
Wenn Sie ein TPU-Gerät verwenden, führen Sie den folgenden Befehl aus, um den nichtflüchtigen Speicher auf Ihrer TPU-VM bereitzustellen.
(vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist
Wenn Sie einen TPU-Pod verwenden, führen Sie den folgenden Befehl außerhalb Ihrer TPU-VM aus. Der nichtflüchtige Speicher wird auf allen TPU-VMs in Ihrem Pod bereitgestellt.
(vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist"
Bereitstellung eines nichtflüchtigen Speichers trennen
Führen Sie den folgenden Befehl aus, um ein nichtflüchtiges Laufwerk bereitzustellen:
$ 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-Ressourcen.
zone
- Die Zone, in der sich die Cloud TPU befindet.
disk-name
- Der Name des nichtflüchtigen Speichers, der von der TPU-VM getrennt werden soll.
Bereinigen
Löschen Sie Ihre TPU-Ressourcen, wenn Sie sie nicht mehr benötigen.
Trennen Sie die Verbindung zur Compute Engine-Instanz, sofern noch nicht geschehen:
(vm)$ exit
Die Eingabeaufforderung sollte nun
username@projectname
lauten und angeben, dass Sie sich in Cloud Shell befinden.Löschen Sie Ihre Cloud TPU- und Compute Engine-Ressourcen.
$ gcloud compute tpus tpu-vm delete tpu-name \ --zone=zone
Prüfen Sie, ob die Ressourcen gelöscht wurden. Führen Sie dazu
gcloud list
aus. Der Löschvorgang kann einige Minuten dauern. Die Ausgabe vongcloud list
sollte keine der von diesem Verfahren erstellten TPU-VM-Ressourcen anzeigen.$ gcloud compute tpus tpu-vm list --zone=zone
Prüfen Sie, ob der nichtflüchtige Speicher beim Löschen der TPU-VM automatisch gelöscht wurde. Listen Sie dazu alle Laufwerke in der Zone auf, in der Sie den nichtflüchtigen Speicher erstellt haben:
$ gcloud compute disks list --filter="zone:( us-central1-b )"
Wenn der nichtflüchtige Speicher beim Löschen der TPU-VM nicht gelöscht wurde, löschen Sie ihn mit den folgenden Befehlen:
$ gcloud compute disks delete disk-name \ --zone zone