TPU-Ressourcen verwalten

Auf dieser Seite wird beschrieben, wie Sie Cloud TPU-Ressourcen mit folgenden Methoden verwalten:

Cloud TPU hat zwei VM-Architekturen: TPU-Knoten und TPU-VM. Die beiden VM-Architekturen werden unter Systemarchitektur beschrieben. Die in diesem Dokument beschriebenen gcloud-Befehle können für beide TPU-Konfigurationen verwendet werden. Welche gcloud-Befehle Sie verwenden, hängt von der verwendeten TPU-Konfiguration ab. Jeder gcloud-Befehl wird in einem Abschnitt mit Tabs angezeigt. Wählen Sie den Tab für die TPU-Konfiguration aus, die Sie verwenden möchten, und auf der Webseite wird der entsprechende gcloud-Befehl angezeigt. Sofern Sie nicht unbedingt TPU-Knoten verwenden müssen, empfehlen wir die Verwendung von TPU-VMs. Ab Cloud TPU v4 wird nur die TPU-VM-Architektur unterstützt.

Vorbereitung

Bevor Sie diese Verfahren ausführen, müssen Sie die Google Cloud CLI installieren, ein Google Cloud-Projekt erstellen und die Cloud TPU API aktivieren. Eine Anleitung dazu finden Sie unter Projekt einrichten und Cloud TPU API aktivieren.

Wenn Sie die Google Cloud CLI verwenden, können Sie Google Cloud Shell oder eine Compute Engine-VM verwenden oder die Google Cloud CLI lokal installieren. Über Google Cloud Shell können Sie mit Cloud TPUs interagieren, ohne eine Software installieren zu müssen. Google Cloud Shell kann nach einer gewissen Zeit der Inaktivität getrennt werden. Wenn Sie Befehle mit langer Ausführungszeit ausführen, empfehlen wir, die Google Cloud CLI auf Ihrem lokalen Computer zu installieren. Weitere Informationen zur Google Cloud CLI finden Sie in der Referenz zu gcloud.

Cloud TPUs bereitstellen

Sie können eine Cloud TPU mit gcloud, der Google Cloud Console oder der Cloud TPU API bereitstellen.

Mit gcloud gibt es zwei Methoden zum Bereitstellen von TPUs:

  1. Ressourcen in der Warteschlange werden verwendet: gcloud alpha compute tpus queued-resources create
  2. Create Node API verwenden: gcloud alpha compute tpus tpu-vm create

Die Best Practice ist die Bereitstellung mit Ressourcen in der Warteschlange. Wenn Sie Ressourcen in der Warteschlange anfordern, wird die Anfrage einer vom Cloud TPU-Dienst verwalteten Warteschlange hinzugefügt. Wenn die angeforderte Ressource verfügbar ist, wird sie Ihrem Google Cloud-Projekt zur sofortigen ausschließlichen Verwendung zugewiesen.

Informationen zum Erstellen einer TPU mit Ressourcen in der Warteschlange finden Sie unter Ressourcen in der Warteschlange.

Wenn Sie die Verwendung von Multislices verwenden, lesen Sie die Einführung in Multislices.

Geben Sie bei Verwendung von Mehrfachsegmenten die folgenden zusätzlichen Parameter an, wenn Sie Ressourcen in der Warteschlange anfordern:

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional

Cloud TPU mit der Create Node API erstellen

Zum Erstellen einer TPU mit der Create Node API führen Sie den Befehl gcloud compute tpus tpu-vm create aus.

TPU-VMs

Sie können TPU-Konfigurationen in Bezug auf TensorCores oder TPU-Chips angeben. Weitere Informationen finden Sie unter Systemarchitektur im Abschnitt zur verwendeten TPU-Version.

Der folgende Befehl verwendet eine TensorCore-basierte Konfiguration:

$ gcloud alpha compute tpus tpu-vm create tpu-name \
  --zone=us-central2-b \
  --accelerator-type=v4-8 \
  --version=tpu-software-version

Beschreibung der Befehls-Flags

zone
Die Zone, in der Sie Ihre Cloud TPU erstellen möchten.
accelerator-type
Der Beschleunigertyp gibt die Version und Größe der Cloud TPU an, die Sie erstellen möchten. Weitere Informationen zu unterstützten Beschleunigertypen für die einzelnen TPU-Versionen finden Sie unter TPU-Versionen.
version
Die TPU-Softwareversion.
shielded-secure-boot (optional)
Gibt an, dass die TPU-Instanzen mit aktiviertem Secure Boot erstellt werden. Dadurch werden sie implizit zu Shielded VM-Instanzen. Siehe Was ist Shielded VM? , um weitere Details zu erhalten.

Mit dem folgenden Befehl wird eine TPU mit einer bestimmten Topologie erstellt:

  $ gcloud alpha compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --type=v4 \
    --topology=2x2x1 \
    --version=tpu-software-version

Erforderliche Flags

tpu-name
Der Name der TPU-VM, die Sie erstellen.
zone
Die Zone, in der Sie Ihre Cloud TPU erstellen.
type
Die Version der Cloud TPU, die Sie erstellen möchten. Weitere Informationen zu TPU-Versionen finden Sie unter TPU-Versionen.
topology
Informationen zu den unterstützten Topologien finden Sie im Abschnitt Topologie.
version
Die TPU-Softwareversion, die Sie verwenden möchten. Weitere Informationen finden Sie unter TPU-Softwareversionen.

Weitere Informationen zu unterstützten TPU-Typen und Topologien finden Sie unter TPU-Versionen.

TPU-Knoten

$ gcloud compute tpus execution-groups create --name=tpu-name \
  --zone=us-central1-a \
  --tf-version=2.12.0 \
  --machine-type=n1-standard-1 \
  --accelerator-type=v3-8

Beschreibung der Befehls-Flags

zone
Die Zone, in der Sie die Cloud TPU erstellen möchten.

tf-version
Die Version von Tensorflow, die der gcloud-Befehl auf Ihrer VM installiert.

machine-type
Der Maschinentyp der Compute Engine-VM, die 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 unterstützten Beschleunigertypen für die einzelnen TPU-Versionen finden Sie unter TPU-Versionen.

Cloud TPU in der Google Cloud Console erstellen

  1. Rufen Sie die Google Cloud Console auf.
  2. Wählen Sie im Navigationsmenü Compute Engine > TPUs aus.
  3. Klicken Sie auf TPU-Knoten erstellen.
  4. Geben Sie im Feld Name den Namen einer TPU-Instanz ein.
  5. Wählen Sie im Feld Zone die Zone aus, in der die TPU erstellt werden soll.
  6. Wählen Sie unter TPU-Einstellungen entweder TPU-VM-Architektur oder TPU-Knotenarchitektur aus. Die TPU-Konfiguration bestimmt, ob Sie die TPU als TPU-VM oder TPU-Knoten erstellen. Weitere Informationen finden Sie unter Systemarchitektur.
  7. Wählen Sie unter TPU-Typ den TPU-Typ aus, den Sie erstellen möchten.
  8. Wählen Sie für die TPU-Softwareversion die Softwareversion aus. Beim Erstellen einer Cloud TPU-VM gibt die TPU-Softwareversion die Version der zu installierenden TPU-Laufzeit an. Beim Erstellen eines Cloud TPU-Knotens können Sie mit der TPU-Softwareversion das ML-Framework auswählen, das auf der VM des Knotens installiert ist. Es sind keine weiteren Einstellungen erforderlich. Weitere Informationen finden Sie unter Unterstützte Modelle.
  9. Klicken Sie auf Erstellen, um Ihre Ressourcen zu erstellen.

Cloud TPU-VM mit curl erstellen

Der folgende Befehl verwendet curl, um eine TPU zu erstellen.

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

Pflichtfelder

runtime_version
Die Cloud TPU-Laufzeitversion, die Sie verwenden möchten.
project
Der Name Ihres registrierten Google Cloud-Projekts.
zone
Die Zone, in der Sie Ihre Cloud TPU erstellen.
node_name
Der Name der TPU-VM, die Sie erstellen.

Startskript ausführen

Sie können auf jeder TPU-VM ein Startskript ausführen. Geben Sie dazu beim Erstellen der TPU-VM den Parameter --metadata startup-script an. Mit dem folgenden Befehl wird eine TPU-VM mithilfe eines Startskripts erstellt.

$ gcloud compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --metadata startup-script='#! /bin/bash
      pip3 install numpy
      EOF'

Verbindung zu einer Cloud TPU herstellen

Sie können über SSH eine Verbindung zu einer TPU herstellen.

TPU-VMs

Wenn Sie TPU-VMs verwenden, müssen Sie über SSH explizit eine Verbindung zu Ihrer TPU-VM herstellen.

  • Stellen Sie mit dem Befehl gcloud compute tpus tpu-vm ssh über SSH eine Verbindung zur TPU-VM her.

    Wenn Sie Segmente mit mehr als 4 Chips anfordern, erstellt Cloud TPU für jede Gruppe von 4 Chips eine TPU-VM.

    Zum Installieren der Binärdateien oder zum Ausführen von Code können Sie mit tpu-vm ssh command eine Verbindung zu jeder TPU-VM herstellen.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}
    

    Verwenden Sie das Flag --worker, das einem 0-basierten Index folgt, um auf eine bestimmte TPU-VM zuzugreifen oder Binärdateien auf jeder TPU-VM mit SSH zu installieren:

    gcloud compute tpus tpu-vm ssh ${TPU_NAME} --worker=1
    

    Wenn Sie mehr als eine TPU-VM haben, führen Sie mit den Flags --worker=all und --command einen Befehl gleichzeitig auf allen TPU-VMs aus. Beispiel:

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}  --project ${PROJECT_ID} \
    --zone  ${ZONE} \
    --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'
    

    Für Multislices können Sie entweder einen Befehl auf einer einzelnen VM ausführen (unter Verwendung des enumerierten TPU-Namens) oder die Flags --node=all, --worker=all und --command verwenden, um den Befehl mit einem optionalen --batch-size-Feld auf allen TPU-VMs aller Segmente des Multislice auszuführen.

    gcloud alpha compute tpus queued-resources ssh ${QUEUED_RESOURCE_ID} \
    --project ${PROJECT_ID} --zone ${ZONE} --node=all --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html' --batch-size=4
    
    $ gcloud compute tpus tpu-vm ssh tpu-name --zone=zone
  • Verwenden Sie SSH im Browser. Gehen Sie dazu so vor:

    1. Rufen Sie in der Google Cloud Console die Seite TPUs auf:

      Zu den TPUs

    2. Klicken Sie in der Liste der TPU-VMs in der Zeile der TPU-VM, zu der Sie eine Verbindung herstellen möchten, auf SSH.

TPU-Knoten

Standardmäßig versucht der gcloud-Befehl, mit dem Sie TPU-Knoten erstellen, automatisch eine SSH-Verbindung zu Ihrem TPU-Knoten herzustellen. Wenn Sie TPU-Knoten verwenden und nicht über den Befehl gcloud mit der Compute Engine-Instanz verbunden sind, können Sie so eine Verbindung herstellen:

$ gcloud compute ssh tpu-name \
  --zone=zone

Nachdem die TPU-VM erstellt wurde, können Sie die Logs aus dem Startskript aufrufen. Dazu stellen Sie mit SSH eine Verbindung zur TPU-VM her und führen den folgenden Befehl aus:

$ cat /var/log/syslog | grep startup-script

Cloud TPU-Ressourcen auflisten

Sie können alle Ihre Cloud TPU in einer bestimmten Zone auflisten.

Cloud TPU-Ressourcen mit gcloud auflisten

Welche Befehle Sie verwenden, hängt davon ab, ob Sie TPU-VMs oder TPU-Knoten verwenden. Weitere Informationen finden Sie unter Systemarchitektur.

TPU-VMs

$ gcloud compute tpus tpu-vm list --zone=zone

TPU-Knoten

$ gcloud compute tpus execution-groups list --zone=zone

Dieser Befehl listet die Cloud TPU-Ressourcen in der angegebenen Zone auf. Wenn derzeit keine Ressourcen eingerichtet sind, werden in der Ausgabe nur Striche für die VM und die TPU angezeigt. Wenn eine Ressource aktiv ist und die andere nicht, wird eine Meldung angezeigt, die auf einen fehlerhaften Status hinweist. Sie müssen die nicht ausgeführte Ressource starten oder neu starten.

Cloud TPU-Ressourcen in der Google Cloud Console auflisten

  1. Rufen Sie die Google Cloud Console auf.

  2. Wählen Sie im Navigationsmenü Compute Engine > TPUs aus. In der Console wird die Seite mit den TPUs angezeigt.

Informationen zu Ihrer Cloud TPU abrufen

Sie können Informationen zu einer angegebenen Cloud TPU abrufen.

Informationen zu einer Cloud TPU mit gcloud abrufen

Welche Befehle Sie verwenden, hängt davon ab, ob Sie TPU-VMs oder TPU-Knoten verwenden. Weitere Informationen finden Sie unter Systemarchitektur.

TPU-VMs

$ gcloud compute tpus tpu-vm describe tpu-name \
  --zone=zone

TPU-Knoten

$ gcloud compute tpus execution-groups describe tpu-name \
  --zone=zone

Informationen zu einer Cloud TPU in der Google Cloud Console abrufen

  1. Rufen Sie die Google Cloud Console auf.
  2. Wählen Sie im Navigationsmenü Compute Engine > TPUs aus. In der Console wird die Seite mit den TPUs angezeigt.
  3. Klicken Sie auf den Namen Ihrer Cloud TPU. Die Cloud TPU-Detailseite wird angezeigt.

Cloud TPU-Ressourcen anhalten

Sie können eine Cloud TPU anhalten, um Gebühren zu vermeiden, ohne die Konfiguration und Software Ihrer VM zu verlieren. TPU-Pods oder TPUs, die über die API für Warteschlangenressourcen zugewiesen wurden, können nicht beendet werden. Damit keine weiteren Gebühren für TPUs anfallen, die über die API für Ressourcen in der Warteschlange zugewiesen wurden, müssen Sie die TPU löschen.

Cloud TPU mit gcloud beenden

Welche Befehle Sie zum Beenden einer Cloud TPU verwenden, hängt davon ab, ob Sie TPU-VMs oder TPU-Knoten verwenden. Weitere Informationen finden Sie unter Systemarchitektur.

TPU-VMs

$ gcloud compute tpus tpu-vm stop tpu-name \
--zone=zone

TPU-Knoten

$ gcloud compute tpus stop tpu-name \
--zone=zone

Cloud TPU in der Google Cloud Console beenden

  1. Rufen Sie die Google Cloud Console auf.

  2. Wählen Sie im Navigationsmenü Compute Engine > TPUs aus. In der Console wird die Seite mit den TPUs angezeigt.

  3. Klicken Sie auf das Kästchen neben Ihrer Cloud TPU und dann auf Anhalten.

Cloud TPU-Ressourcen starten

Sie können eine Cloud TPU starten, wenn sie beendet wurde.

Cloud TPU mit gcloud starten

Sie können eine beendete Cloud TPU starten, um sie wieder zu verwenden.

Welchen Befehl Sie zum Starten einer beendeten Cloud TPU verwenden, hängt davon ab, ob Sie TPU-VMs oder TPU-Knoten verwenden. Weitere Informationen finden Sie unter Systemarchitektur.

TPU-VMs

$ gcloud compute tpus tpu-vm start tpu-name --zone=zone

TPU-Knoten

$ gcloud compute tpus start tpu-name --zone=zone

Cloud TPU in der Google Cloud Console starten

  1. Rufen Sie die Google Cloud Console auf.

  2. Wählen Sie im Navigationsmenü Compute Engine > TPUs aus. In der Console wird die Seite mit den TPUs angezeigt.

  3. Klicken Sie auf das Kästchen neben der Cloud TPU und dann auf Start.

TPU-VM löschen

Der verwendete Befehl hängt davon ab, ob Sie TPU-VMs oder TPU-Knoten verwenden. Weitere Informationen finden Sie unter Systemarchitektur.

TPU-VMs

Löschen Sie Ihre TPU-VM-Slices am Ende Ihrer Sitzung.

 gcloud compute tpus tpu-vm delete ${TPU_NAME} --project=${PROJECT_ID}
 --zone=${ZONE} --quiet

Beschreibung der Befehls-Flags

zone
Die Zone, in der Sie Ihre Cloud TPU löschen möchten.

TPU-Knoten

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone

Beschreibung der Befehls-Flags

zone
Die Zone, in der Sie Ihre Cloud TPU löschen möchten.

Cloud TPU in der Google Cloud Console löschen

  1. Rufen Sie die Google Cloud Console auf.

  2. Wählen Sie im Navigationsmenü Compute Engine > TPUs aus. In der Console wird die Seite mit den TPUs angezeigt.

  3. Klicken Sie auf das Kästchen neben der Cloud TPU und dann auf Löschen.

Erweiterte Konfigurationen

Benutzerdefinierte Netzwerkressourcen

Wenn Sie die TPU erstellen, können Sie das Netzwerk und/oder ein Subnetzwerk angeben. Senden Sie dazu entweder einen gcloud-Befehl oder einen curl-Aufruf.

Geben Sie das Netzwerk oder Subnetzwerk in der gcloud-Befehlszeile an:

--network [NETWORK] --subnetwork [SUBNETWORK]

Verwenden Sie Folgendes, um das Netzwerk oder Subnetzwerk in einem curl-Aufruf anzugeben:

network_config: {network: '[NETWORK]', subnet: '[SUBNETWORK]', enable_external_ips: true}

Netzwerk

Sie können optional das Netzwerk angeben, das für die TPU verwendet werden soll. Wenn keine Angabe erfolgt, wird das Netzwerk default verwendet.

Gültige Netzwerkformate:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-##}/global/networks/{network}
projects/{proj-id}/global/networks/{network}
projects/{proj-##}/global/networks/{network}
global/networks/{network}
{network}

Subnetzwerk

Sie können das Subnetzwerk angeben, um ein bestimmtes Subnetzwerk zu verwenden. Das angegebene Subnetzwerk muss sich in derselben Region wie die Zone befinden, in der die TPU ausgeführt wird.

Gültige Formate:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
regions/{region}/subnetworks/{subnetwork}
{subnetwork}

Privater Google-Zugriff

Wenn Sie eine SSH-Verbindung zu den TPU-VMs herstellen möchten, müssen Sie entweder Zugriffskonfigurationen für die TPU-VMs hinzufügen oder den privaten Google-Zugriff für das Subnetzwerk aktivieren, mit dem die TPU-VMs verbunden sind.

Zum Hinzufügen von Zugriffskonfigurationen muss enable_external_ips festgelegt werden. Wenn Sie eine TPU erstellen, ist enable_external_ips standardmäßig festgelegt. Wenn Sie die Funktion deaktivieren möchten, geben Sie den folgenden Befehl an:

--internal-ips

Oder verwenden Sie einen curl-Anruf:

network_config: {enable_external_ips: true}

Nachdem Sie den privater Google-Zugriff konfiguriert haben, stellen Sie über SSH eine Verbindung zur VM her.

Benutzerdefiniertes Dienstkonto

Jeder TPU-VM ist ein Dienstkonto zugeordnet, mit dem in Ihrem Namen API-Anfragen gestellt werden. TPU-VMs verwenden dieses Dienstkonto, um Cloud TPU APIs aufzurufen und auf Cloud Storage und andere Dienste zuzugreifen. Standardmäßig verwendet Ihre TPU-VM das Compute Engine-Standarddienstkonto.

Beim Erstellen einer TPU-VM können Sie mit dem Flag --service-account ein benutzerdefiniertes Dienstkonto angeben. Das Dienstkonto muss in dem Google Cloud-Projekt definiert sein, in dem Sie Ihre TPU-VM erstellen. Benutzerdefinierte Dienstkonten, die für TPU-VMs verwendet werden, müssen die Rolle TPU Viewer haben, um die Cloud TPU API aufzurufen. Wenn der auf Ihrer TPU-VM ausgeführte Code andere Google Cloud-Dienste aufruft, muss er die für den Zugriff auf diese Dienste erforderlichen Rollen haben.

Beim Erstellen einer TPU können Sie mit dem Flag --service-account ein benutzerdefiniertes Dienstkonto angeben. Weitere Informationen zu Dienstkonten finden Sie unter Dienstkonten.

Verwenden Sie die folgenden Befehle, um ein benutzerdefiniertes Dienstkonto anzugeben.

TPU-VM mit der gcloud-Befehlszeile erstellen

$ gcloud alpha compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --service-account=your-service-account

TPU-VM mit curl erstellen

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  service_account: {email: 'your-service-account'} \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden möchten, müssen Sie das Dienstkonto für Ihre Google Cloud Storage-Buckets autorisieren. Weitere Informationen finden Sie unter Verbindung zu Cloud Storage-Buckets herstellen.

Benutzerdefinierte VM-SSH-Methoden

  1. Richten Sie eine Firewall für SSH ein.

    Das Standardnetzwerk ist vorkonfiguriert, um den SSH-Zugriff auf alle VMs zuzulassen. Wenn Sie das Standardnetzwerk nicht verwenden oder die Standardnetzwerkeinstellungen bearbeitet wurden, müssen Sie den SSH-Zugriff möglicherweise explizit aktivieren, indem Sie eine Firewallregel hinzufügen:

    $ gcloud CLI compute firewall-rules create \
    --network=network allow-ssh \
    --allow=tcp:22
    
  2. Stellen Sie eine SSH-Verbindung zu den TPU-VMs her.

    $ gcloud compute tpus tpu-vm ssh tpu-name \
    --zone=us-central2-b \
    --project=project-id
    

    Pflichtfelder

    • tpu-name: Name des TPU-Knotens.
    • zone: Der Standort des TPU-Knotens. Derzeit wird nur us-central2-b unterstützt.
    • project-id: Das Projekt, das Sie oben erstellt haben.

    Eine Liste der optionalen Felder finden Sie in der gcloud API-Dokumentation.