Trainingsübersicht

Mit AI Platform können Sie Ihre TensorFlow-, scikit-learn- und XGBoost-Trainingsanwendungen in der Cloud ausführen. AI Platform stellt in den Laufzeitversionen die Abhängigkeiten zur Verfügung, die zum Trainieren von Modellen für maschinelles Lernen mithilfe dieser gehosteten Frameworks erforderlich sind. Darüber hinaus haben Sie damit die Möglichkeit, mithilfe von benutzerdefinierten Containern Trainingsjobs mit anderen ML-Frameworks auszuführen. Auf dieser Seite werden die wichtigsten Konzepte von AI Platform Training beschrieben. 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 nicht geeignet sind, können Sie eine Trainingsanwendung zur Ausführung in AI Platform erstellen.

Hier ein Überblick über die Vorgehensweise bei Verwendung einer eigenen Trainingsanwendung:

  1. Sie erstellen eine Python-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 ausführungsbereit ist, müssen Sie ein Paket dafür erstellen und in einen Cloud Storage-Bucket übertragen, auf den Ihr Projekt zugreifen kann. Dies geschieht automatisch, wenn Sie Trainingsjobs über das gcloud-Befehlszeilentool ausführen.
  4. Der AI Platform-Trainingsdienst richtet Ressourcen für Ihren Job ein. Er weist gemäß Jobkonfiguration mindestens eine virtuelle Maschine (auch als Trainingsinstanz bezeichnet) zu. So wird jede Trainingsinstanz eingerichtet:
    • Anwenden des Maschinenstandard-Image 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 zum ausgeführten Job können Sie auf folgende Arten abrufen:
    • Durch Aufrufen von Stackdriver Logging
    • Durch Anfordern von Jobdetails oder Ausführen von Logstreamings 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.

Typische Anwendung für maschinelles Lernen

Der AI Platform-Trainingsdienst ist darauf ausgelegt, möglichst wenig Einfluss auf Ihre Anwendung zu nehmen. Damit können Sie sich auf den Modellcode konzentrieren.

Die meisten Anwendungen für maschinelles Lernen:

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

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 weist die Ressourcen für die angegebenen Maschinentypen zu. 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. Diese Aufgabe 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.

Strategien für verteiltes Training

Für das Trainieren eines Modells mit mehreren Knoten gibt es drei grundlegende Strategien:

  • Datenparalleles Training mit synchronen Aktualisierungen.
  • Datenparalleles Training mit asynchronen Aktualisierungen.
  • Modellparalleles Training.

Da Sie die datenparallele Strategie unabhängig von der Modellstruktur anwenden können, ist sie ein guter Ausgangspunkt für das Anwenden der verteilten Trainingsmethode auf Ihr benutzerdefiniertes Modell. Bei einem datenparallelen Training wird das gesamte Modell von allen Worker-Knoten genutzt. Jeder Knoten berechnet Gradientenvektoren unabhängig vom Trainings-Dataset in der gleichen Art wie die Minibatchverarbeitung. Die berechneten Gradientenvektoren werden im Parameterserverknoten erfasst und die Modellparameter mit den zusammengefassten Gradientenvektoren aktualisiert. Wenn Sie 10.000 Batches zwischen zehn Worker-Knoten verteilen, verarbeitet jeder Knoten etwa 1.000 Batches.

Das datenparallele Training kann mit synchronen oder asynchronen Aktualisierungen durchgeführt werden. Bei asynchronen Aktualisierungen wendet der Parameterserver jeden Gradientenvektor direkt nach dem Erhalt von einem der Worker-Knoten separat an, wie im folgenden Diagramm gezeigt:

Diagramm des datenparallelen Trainings mit asynchronen Aktualisierungen

Informationen zum Durchführen von datenparallelem verteiltem Training erhalten Sie unter MultiWorkerMirroredStrategy und ParameterServerStrategy von TensorFlow. Lesen Sie danach, wie Sie in AI Platform Training verteiltes Training konfigurieren.

Weitere Informationen zum modellparallelen Training finden Sie unter Mesh TensorFlow.

Anwendungspaket erstellen

Bevor Sie Ihre Trainingsanwendung auf AI Platform Training ausführen können, müssen Sie ein Paket für Ihre Anwendung und deren Abhängigkeiten erstellen. Anschließend müssen Sie dieses Paket in einen Cloud Storage-Bucket hochladen, auf den Ihr GCP-Projekt zugreifen kann.

Das gcloud-Befehlszeilentool automatisiert den Großteil des Prozesses. Genauer gesagt 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 Modelltraining als asynchronen Batchdienst. Zum Senden eines Trainingsjobs führen Sie gcloud ai-platform jobs submit training über die Befehlszeile aus oder senden eine Anfrage an die API unter projects.jobs.create.

Hier erfahren Sie, wie Sie einen Trainingsjob starten.

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 Sie nicht viele Jobs ausführen, ist der von Ihnen gewählte Name möglicherweise nicht unbedingt entscheidend. 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

Vor dem Ausführen eines Trainingsjobs auf AI Platform geben Sie die Anzahl und den Typ der erforderlichen Maschinen an. 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 dieselben IDs 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 und Hyperparameter-Abstimmung verwenden.

Regionen und Zonen

In der GCP werden in Zonen unterteilte Regionen verwendet, um den geografischen Standort von physischen Computerressourcen zu definieren. 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 derselben Region ausführen wie den Cloud Storage-Bucket, den Sie für die Trainingsdaten verwenden. Falls Sie den Job in einer anderen Region als der Region des Daten-Buckets ausführen müssen, kann der Job mehr Zeit in Anspruch nehmen.

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:

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

Sie müssen das Argument --job-dir in Ihrer Anwendung 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

Geben Sie eine unterstützte Laufzeitversion für AI Platform an, die für Ihren Trainingsjob verwendet werden soll, um für das Training ein von AI Platform gehostetes Framework für maschinelles Lernen zu verwenden. Die Laufzeitversion gibt die Versionen von TensorFlow, scikit-learn, XGBoost und anderen Python-Paketen vor, die auf Ihren zugeordneten Trainingsinstanzen installiert werden. 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 im 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 Trainingscode 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.

VM-Neustart-resistente Trainingsjobs erstellen

GCP-VMs werden gelegentlich neu gestartet. Speichern Sie Modellprüfpunkte regelmäßig und konfigurieren Sie den Job so, dass der letzte Prüfpunkt wiederhergestellt wird. Dadurch sorgen Sie dafür, dass Ihre Trainingsjobs diesen Neustarts gegenüber resistent sind.

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.

Die TensorFlow Estimator API implementiert die Prüfpunkt-Funktionalität für Sie. Wenn Ihr Modell in einen Estimator eingebettet ist, müssen Sie sich keine Gedanken über Neustartereignisse auf den VMs machen.

Wenn Sie Ihr Modell nicht in einen TensorFlow Estimator einbinden können, schreiben Sie eine Funktion zum Speichern und Wiederherstellen von Prüfpunkten in Ihren Trainingscode. TensorFlow stellt folgende nützliche Ressourcen im Modul tf.train zur Verfügung:

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 GPU-fähige Maschinen für die Ausführung Ihres Jobs angeben und der Dienst übernimmt die Zuordnung für Sie. In einem TensorFlow-Trainingsjob können Sie beispielsweise den GPUs in Ihrem Code TensorFlow-Operationen zuweisen. Wenn Sie einen Maschinentyp mit GPU-Zugriff für einen Aufgabentyp angeben, wird jede Instanz, die diesem Aufgabentyp zugeordnet ist, (wie immer) identisch konfiguriert: Der Dienst führt ein einzelnes Replikat des Codes auf jeder Maschine aus.

Wenn Sie das Training mit einem anderen Framework für maschinelles Lernen unter Verwendung eines benutzerdefinierten Containers durchführen, bietet dieses Framework möglicherweise eine andere Schnittstelle für die Arbeit mit GPUs.

Einige Modelle profitieren nicht von der Ausführung auf GPUs. GPUs empfehlen sich für große, komplexe Modelle mit vielen mathematischen Operationen. Selbst in diesem Fall sollten Sie zuerst testen, ob die Vorteile von GPUs überwiegen, indem Sie für eine kleine Stichprobe Ihrer Daten ein Training 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 zum Verwenden von TPUs für Trainingsjobs

Weitere Informationen

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

Feedback geben zu...