Trainingsüberblick

Mit AI Platform können Sie Ihre TensorFlow-Trainingsanwendungen in der Cloud ausführen. Darüber hinaus haben Sie damit die Möglichkeit, mit benutzerdefinierten Containern Trainingsjobs mit anderen ML-Frameworks auszuführen. Auf dieser Seite werden die wichtigsten Konzepte beschrieben, die Sie kennen sollten, um mit dem Modelltraining optimale Ergebnisse zu erzielen. Wenn Sie lieber direkt in den Trainingsprozess einsteigen möchten, sehen Sie sich an, wie Sie einen Trainingsjob starten.

Funktionsweise des Trainings

Mit AI Platform wird der Trainingsjob mit Rechenressourcen in der Cloud ausgeführt. Sie können einen integrierten Algorithmus (Beta) mit Ihrem Dataset trainieren, ohne eine Trainingsanwendung schreiben zu müssen. Wenn die integrierten Algorithmen für Ihren Anwendungsfall aber nicht geeignet sind, haben Sie die Möglichkeit, eine Trainingsanwendung zur Ausführung in AI Platform zu erstellen.

Im Folgenden finden Sie eine Übersicht über die Vorgehensweise zur Verwendung einer eigenen Trainingsanwendung:

  1. Sie erstellen eine TensorFlow-Anwendung, die Ihr Modell trainiert. Sie können sie dabei wie für eine lokale Ausführung in Ihrer Entwicklungsumgebung entwickeln.
  2. Sie laden die Trainings- und Verifizierungsdaten in eine Quelle hoch, auf die AI Platform zugreifen kann. In der Regel werden die Daten in Cloud Storage, Cloud Bigtable oder einem anderen Google Cloud Platform-Speicherdienst abgelegt, der mit dem GCP-Projekt verknüpft ist, das Sie für AI Platform verwenden.
  3. Wenn die Anwendung ausgeführt werden kann, müssen Sie ein Paket dafür erstellen und dieses in einen Cloud Storage-Bucket übertragen, auf den Ihr Projekt zugreifen kann. Dies geschieht automatisch, wenn Sie Trainingsjobs mit dem gcloud-Befehlszeilentool ausführen.
  4. Der AI Platform-Trainingsdienst richtet Ressourcen für Ihren Job ein. Er ordnet je nach Jobkonfiguration mindestens eine virtuelle Maschine – auch als Trainingsinstanz bezeichnet – zu. Eine Trainingsinstanz wird mit folgenden Schritten eingerichtet:
    • Anwendung des Standard-Maschinen-Images für die Version von AI Platform, die der Job verwendet
    • Laden des Anwendungspakets und Installation mit pip
    • Installation etwaiger zusätzlicher Pakete, die Sie als Abhängigkeiten angeben
  5. Der Trainingsdienst führt die Anwendung aus und übergibt die Befehlszeilenargumente, die Sie beim Erstellen des Trainingsjobs angegeben haben.
  6. Informationen zu laufenden Jobs können Sie auf folgende Arten abrufen:
    • Durch Aufrufen von Stackdriver Logging
    • Durch Anfordern von Jobdetails oder Ausführen des Log-Streamings mit dem gcloud-Befehlszeilentool
    • Durch programmgesteuerte Statusanfragen an den Trainingsdienst
  7. Wenn der Trainingsjob erfolgreich abgeschlossen ist oder ein nicht behebbarer Fehler auftritt, stoppt AI Platform alle Jobvorgänge und bereinigt die Ressourcen.

Struktur für verteiltes Training

Wenn Sie einen verteilten TensorFlow-Job mit AI Platform ausführen, legen Sie mehrere Maschinen (Knoten) in einem Trainingscluster fest. Der Trainingsdienst ordnet die Ressourcen für die angegebenen Maschinentypen zu und führt den obigen Schritt 4 für jede Ressource aus. Der aktuell auf einem Knoten ausgeführte Job wird Replikat genannt. Gemäß dem verteilten TensorFlow-Modell wird jedem Replikat im Trainingscluster eine einzige Rolle oder Aufgabe im verteilten Training zugewiesen:

  • Master: Es wird genau ein Replikat als Master festgelegt. Es verwaltet die anderen Replikate und meldet den Gesamtstatus des Jobs. Der Trainingsdienst wird so lange ausgeführt, bis der Job erfolgreich abgeschlossen wurde oder ein nicht behebbarer Fehler auftritt. Beim verteilten Training wird der Gesamtstatus des Jobs vom Status des Master-Replikats abgeleitet.

    Wenn Sie einen Job mit einem einzigen Prozess ausführen, ist das einzelne Replikat gleichzeitig das Master-Replikat für den Job.

  • Worker: Ein oder mehrere Replikate können als Worker festgelegt werden. Diese Replikate übernehmen jeweils einen Teil der Arbeit, wie Sie dies in der Jobkonfiguration festgelegt haben.

  • Parameterserver: Ein oder mehrere Replikate können als Parameterserver festgelegt werden. Diese Replikate koordinieren den gemeinsamen Modellstatus unter den Workern.

Typische Anwendung für maschinelles Lernen

Der AI Platform-Trainingsdienst ist darauf ausgelegt, möglichst wenig Einfluss auf Ihre Anwendung zu nehmen. Dadurch können Sie sich ganz auf den TensorFlow-Code zur Erstellung des gewünschten Modells konzentrieren und sind nicht durch eine starre Struktur eingeschränkt.

Die meisten Anwendungen für maschinelles Lernen:

  • ermöglichen den Zugriff auf Trainings- und Evaluationsdaten,
  • verarbeiten Dateninstanzen in Batches,
  • testen die Genauigkeit des Modells (Anzahl der richtigen Vorhersagewerte) anhand von Evaluationsdaten.
  • ermöglichen die Ausgabe von Prüfpunkten in Intervallen, um einen Snapshot des Modellfortschritts zu erhalten und
  • bieten eine Möglichkeit zum Export des trainierten Modells, wenn die Anwendung fertig ist.

Anwendungspaket erstellen

Für die Ausführung Ihrer Trainingsanwendung mit AI Platform müssen Sie Ihre Anwendung und alle erforderlichen zusätzlichen Abhängigkeiten verpacken und das Paket in den Cloud Storage-Bucket hochladen, auf den Ihr Google Cloud Platform-Projekt zugreifen kann.

Mit dem gcloud-Befehlszeilentool lässt sich dieser Vorgang weitgehend automatisieren. Insbesondere können Sie mit gcloud ai-platform jobs submit training Ihr Anwendungspaket hochladen und Ihren Trainingsjob senden.

Weitere Informationen finden Sie unter Paket für eine Trainingsanwendung erstellen.

Trainingsjobs senden

AI Platform bietet ein Modelltraining als asynchronen Batchdienst. Zum Senden eines Trainingsjobs führen Sie in der Befehlszeile gcloud ai-platform jobs submit training aus oder senden eine Anfrage an die API unter projects.jobs.create.

Eine ausführliche Anleitung dazu erhalten Sie unter Trainingsjob ausführen.

Job-ID

Für den Namen eines Trainingsjobs ist Folgendes zu beachten:

  • Er darf im Google Cloud Platform-Projekt nicht bereits vergeben sein.
  • Er darf nur Klein- und Großbuchstaben, Ziffern und Unterstriche enthalten.
  • Er muss mit einem Buchstaben beginnen.
  • Er darf nicht länger als 128 Zeichen sein.

Darüber hinaus können Sie eigene Konventionen für die Jobnamen verwenden. Wenn sich die Anzahl der ausgeführten Jobs in Grenzen hält, spielt es kaum eine Rolle, welche Namen Sie wählen. Werden jedoch viele Jobs ausgeführt, müssen Sie Job-IDs unter Umständen in umfangreichen Listen finden können. In diesem Fall empfiehlt sich die Wahl von Job-IDs, die leicht voneinander zu unterscheiden sind.

Eine gängige Methode besteht darin, einen Basisnamen für alle mit einem bestimmten Modell verknüpften Jobs festzulegen und dann einen Datums-/Uhrzeitstring anzuhängen. Diese Konvention ermöglicht eine einfache Sortierung von Joblisten anhand des Namens, da alle Jobs für ein Modell in aufsteigender Reihenfolge gruppiert werden.

Skalierungsstufen

Für die Ausführung eines Trainingsjobs mit AI Platform müssen Sie die Anzahl und den Typ der erforderlichen Maschinen angeben. Zur Vereinfachung können Sie aus einer Reihe von vordefinierten Clusterspezifikationen, den sogenannten Skalierungsstufen, auswählen. Alternativ können Sie eine benutzerdefinierte Stufe auswählen und die Maschinentypen selbst angeben.

Um eine Skalierungsstufe anzugeben, fügen Sie sie dem Objekt "TrainingInput" in der Jobkonfiguration hinzu. Wenn Sie mit dem gcloud-Befehl den Trainingsjob senden, können Sie die gleichen Kennzeichnungen verwenden.

Weitere detaillierte Informationen zu Skalierungsstufen und Maschinentypen.

Hyperparameter-Abstimmung

Wenn Sie die Hyperparameter-Abstimmung nutzen möchten, müssen Sie beim Erstellen des Trainingsjobs Konfigurationsdetails angeben. Weitere Informationen finden Sie unter Hyperparameter-Abstimmung – Überblick und Hyperparameter-Abstimmung verwenden.

Regionen und Zonen

In der GCP werden für die Definition des geografischen Standorts von physischen Rechenressourcen in Zonen unterteilte Regionen verwendet. Wenn Sie einen Trainingsjob in AI Platform ausführen, müssen Sie die Region angeben, in der der Job ausgeführt werden soll.

Wenn Sie das Trainings-Dataset in Cloud Storage speichern, sollten Sie den Trainingsjob in der Region des Cloud Storage-Buckets ausführen, den Sie für die Trainingsdaten verwenden. Wenn Sie den Job in einer anderen Region als der des Daten-Buckets ausführen müssen, nimmt der Job eventuell mehr Zeit in Anspruch.

Informationen zu den verfügbaren Regionen für AI Platform-Dienste, einschließlich Modelltraining und Online-/Batchvorhersage, finden Sie unter Regionen.

"job-dir" als gemeinsames Ausgabeverzeichnis verwenden

Sie können ein Ausgabeverzeichnis für Ihren Job angeben, indem Sie beim Konfigurieren des Jobs ein Jobverzeichnis festlegen. Wenn Sie den Job senden, führt AI Platform folgende Schritte aus:

  • Es überprüft das Verzeichnis, sodass Sie eventuelle Probleme vor der Ausführung des Jobs beheben können.
  • Es übergibt den Pfad in Form des Befehlszeilenarguments --job-dir an Ihre Anwendung.

Sie müssen in der Anwendung das Argument --job-dir berücksichtigen. Erfassen Sie den Argumentwert, wenn Sie die anderen Parameter parsen, und verwenden Sie ihn, wenn Sie die Ausgabe der Anwendung speichern. Weitere Informationen finden Sie in der Anleitung zum Starten eines Trainingsjobs.

Laufzeitversion

Sie müssen die unterstützte AI Platform-Laufzeitversion angeben, die für Ihren Trainingsjob verwendet werden soll. Die Laufzeitversion legt die Versionen von TensorFlow und anderen Python-Paketen fest, die auf Ihren zugeordneten Trainingsinstanzen installiert werden sollen. Geben Sie eine Version an, die Ihnen die erforderliche Funktionalität bietet. Sorgen Sie dafür, dass Sie jeweils dieselbe Laufzeitversion verwenden, wenn Sie den Trainingsjob sowohl lokal als auch in der Cloud ausführen.

Eingabedaten

Die Daten in Ihrem Trainingsjob müssen den folgenden Regeln entsprechen, um in AI Platform ausgeführt werden zu können:

  • Sie müssen in einem Format vorliegen, das vom TensorFlow-Code eingelesen werden kann.
  • Sie müssen sich an einem Speicherort befinden, auf den Ihr Code Zugriff hat. In der Regel bedeutet dies, dass die Daten mit einem der Speicher- oder Big-Data-Dienste der GCP gespeichert werden müssen.

Ausgabedaten

Anwendungen geben üblicherweise Daten aus, z. B. Prüfpunkte während des Trainings oder ein gespeichertes Modell nach Trainingsabschluss. Bei Bedarf können Sie von der Anwendung auch andere Daten ausgeben lassen. Am einfachsten ist es, die Ausgabedateien in einem Cloud Storage-Bucket zu speichern, der sich im selben GCP-Projekt befindet wie der Trainingsjob.

Gegenüber VM-Neustarts resistente Trainingsjobs erstellen

Gelegentlich kann es vorkommen, dass GCP-VMs neu gestartet werden. Sorgen Sie deshalb dafür, dass solche Neustarts keine Auswirkungen auf Ihre Trainingsjobs haben. Speichern Sie dazu regelmäßig Modellprüfpunkte und konfigurieren Sie den Job so, dass immer der letzte Prüfpunkt wiederhergestellt wird.

In der Regel sollten Modellprüfpunkte in dem Cloud Storage-Pfad gespeichert werden, den Sie mit dem Argument --job-dir im Befehl gcloud ai-platform jobs submit training angegeben haben.

Training mit GPUs

Sie können Trainingsjobs in AI Platform auch mit Grafikprozessoren (Graphics Processing Units, GPUs) ausführen. GPUs sind auf rechenintensive Vorgänge mit hoher Geschwindigkeit ausgelegt. Ihre Verwendung kann für bestimmte Vorgänge mit Tensordaten effektiver als das Hinzufügen weiterer Maschinen mit einem oder mehreren CPU-Kernen sein.

Der Trainingsdienst von AI Platform bietet keine spezielle Schnittstelle zur Nutzung von GPUs. Sie können für die Ausführung Ihres Jobs GPU-fähige Maschinen angeben. Der Dienst übernimmt dann die Zuordnung für Sie. Wenn Sie einen Maschinentyp mit GPU-Zugriff für einen Aufgabentyp angeben, wird jede Instanz, die diesem Aufgabentyp zugeordnet ist, identisch konfiguriert (wie immer): Der Dienst führt ein einzelnes Replikat des Codes auf jeder Maschine aus.

Einige Modelle profitieren nicht von der Ausführung auf GPUs. GPUs empfehlen sich für große, komplexe Modelle mit vielen mathematischen Operationen. Und selbst in diesem Fall sollten Sie zuerst testen, ob die Vorteile von GPUs überwiegen, indem Sie ein Training für eine kleine Stichprobe Ihrer Daten ausführen.

Hier erfahren Sie, wie Sie GPUs für Trainingsjobs verwenden.

Training mit TPUs

Sie können Ihre Trainingsjobs in AI Platform mit Cloud TPU ausführen.

Weitere Informationen finden Sie unter TPUs zum Trainieren eines Modells verwenden.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

AI Platform für TensorFlow