Übersicht: Benutzerdefiniertes Training

Vertex AI bietet einen verwalteten Trainingsdienst, mit dem Sie umfangreiches Modelltraining operationalisieren können. Mit Vertex AI können Sie Trainingsanwendungen basierend auf einem beliebigen ML-Framework in der Google Cloud-Infrastruktur ausführen. Für die folgenden beliebten ML-Frameworks bietet Vertex AI auch integrierte Unterstützung, die den Vorbereitungsprozess für Modelltraining und Bereitstellung vereinfacht.

Auf dieser Seite werden die Vorteile eines benutzerdefinierten Trainings in Vertex AI, der beteiligte Workflow und die verschiedenen verfügbaren Trainingsoptionen erläutert.

Vertex AI operationalisiert das Training im großen Maßstab

Die Operationalisierung des Modelltrainings bringt verschiedene Herausforderungen mit sich. Zu diesen Herausforderungen gehören die Zeit und die Kosten, die zum Trainieren von Modellen erforderlich sind, die für die Verwaltung der Computing-Infrastruktur erforderliche Kompetenz und die notwendige Sicherheit auf Unternehmensebene in Sachen Datenschutz. Vertex AI spricht diese Herausforderungen an und bietet gleichzeitig eine Vielzahl anderer Vorteile.

Vollständig verwaltete Computing-Infrastruktur

Verwaltete Infrastruktur

Das Modelltraining in Vertex AI ist ein vollständig verwalteter Dienst, der keine Verwaltung einer physischen Infrastruktur erfordert. Sie können ML-Modelle trainieren, ohne Server bereitstellen oder verwalten zu müssen. Sie zahlen nur für die tatsächlich genutzten Rechenressourcen. Vertex AI übernimmt auch Job-Logging, Warteschlangen und Monitoring.

Hohe Leistung

Hohe Leistung

Vertex AI-Trainingsjobs sind für das ML-Modelltraining optimiert, das eine schnellere Leistung bietet als bei der direkten Ausführung Ihrer Trainingsanwendung in einem GKE-Cluster. Sie können Leistungsengpässe in Ihrem Trainingsjob auch mit Vertex AI TensorBoard Profiler identifizieren und beheben.

Verteiltes Training

Verteiltes Training

Reduction Server ist ein All-Reduce-Algorithmus in Vertex AI, der den Durchsatz erhöhen und die Latenz des verteilten Mehrknoten-Trainings auf NVIDIA-Grafikverarbeitungseinheiten (GPUs) reduzieren kann. Durch diese Optimierung können Sie Zeit- und Kostenaufwand bei der Ausführung großer Trainingsjobs reduzieren.

Hyperparameter-Optimierung

Hyperparameter-Feinabstimmung

Bei Hyperparameter-Abstimmungsjobs werden mehrere Tests Ihrer Trainingsanwendung mit unterschiedlichen Hyperparameter-Werten ausgeführt. Sie geben einen zu testenden Wertebereich an und Vertex AI ermittelt die optimalen Werte für Ihr Modell innerhalb dieses Bereichs.

Unternehmenssicherheit

Unternehmenssicherheit

Vertex AI bietet folgende Sicherheitsfunktionen für Unternehmen:

MLOps-Integrationen (ML Operations)

MLOps

Vertex AI bietet eine Reihe integrierter MLOps-Tools und -Features, die Sie für folgende Zwecke verwenden können:

  • End-to-End-ML-Workflows orchestrieren
  • Feature Engineering machen
  • Tests durchführen
  • Modelle verwalten und iterieren
  • ML-Metadaten verfolgen
  • Modellqualität überwachen und bewerten

Workflow für benutzerdefiniertes Training

Das folgende Diagramm zeigt eine allgemeine Übersicht über den benutzerdefinierten Trainingsworkflow in Vertex AI. Die folgenden Abschnitte beschreiben die einzelnen Schritte im Detail.

Benutzerdefinierter Trainingsworkflow.

Trainingsdaten laden und vorbereiten.

Für eine optimale Leistung und Unterstützung sollten Sie einen der folgenden Google Cloud-Dienste als Datenquelle verwenden:

Sie können auch ein von Vertex AI verwaltetes Dataset als Datenquelle angeben, wenn Sie ein Modell mit einer Trainingspipeline trainieren. Wenn Sie ein benutzerdefiniertes Modell und ein AutoML-Modell mit demselben Dataset trainieren, können Sie die Leistung der beiden Modelle vergleichen.

Trainingsanwendung vorbereiten

So bereiten Sie die Trainingsanwendung für die Verwendung in Vertex AI vor:

  • Implementieren des Trainingscodes: Best Practices für Vertex AI
  • Bestimmen Sie den Typ des zu verwendenden Container-Images.
  • Verpacken Sie Ihre Trainingsanwendung je nach ausgewähltem Container-Image-Typ in ein unterstütztes Format.

Implementieren des Trainingscodes: Best Practices

Die Trainingsanwendung sollte die Best Practices für den Trainingscode für Vertex AI implementieren. Diese Best Practices beziehen sich auf die Fähigkeit der Trainingsanwendung, Folgendes zu tun:

  • Zugriff auf Google Cloud-Dienste
  • Eingabedaten laden
  • Aktivieren Sie Autologging für Test-Tracking.
  • Modellartefakte exportieren
  • Verwenden der Umgebungsvariablen von Vertex AI
  • Beständigkeit bei VM-Neustarts sichern

Containertyp auswählen

Vertex AI führt Ihre Trainingsanwendung in einem Docker-Container-Image aus. Ein Docker-Container-Image ist ein eigenständiges Softwarepaket, das Code und alle Abhängigkeiten enthält und in fast jeder Computing-Umgebung ausgeführt werden kann. Sie können entweder den URI eines vordefinierten Container-Images angeben oder ein benutzerdefiniertes Container-Image erstellen und hochladen, in dem Ihre Trainingsanwendung und die Abhängigkeiten vorinstalliert sind.

Die folgende Tabelle zeigt die Unterschiede zwischen vordefinierten und benutzerdefinierten Container-Images:

Spezifikationen Vordefinierte Container-Images Benutzerdefinierte Container-Images
ML-Framework Jedes Container-Image ist für ein ML-Framework spezifisch. Verwenden Sie ein beliebiges ML-Framework oder kein Framework.
ML-Framework-Version Jedes Container-Image ist für eine ML-Framework-Version spezifische. Eine beliebige ML-Framework-Version verwenden, einschließlich Nebenversionen und Nightly Builds.
Anwendungsabhängigkeiten Die üblichen Abhängigkeiten für das ML-Framework sind vorinstalliert. Sie können zusätzliche Abhängigkeiten angeben, die in Ihrer Trainingsanwendung installiert werden sollen. Installieren Sie die von Ihrer Trainingsanwendung benötigten Abhängigkeiten.
Format der Anwendungsbereitstellung
  • Python-Quelldistribution
  • Einzelne Python-Datei
Installieren Sie die Trainingsanwendung im benutzerdefinierten Container-Image vor.
Einrichtungsaufwand Niedrig Hoch
Empfohlen für Python-Trainingsanwendungen, die auf einem ML-Framework und einer Framework-Version basieren, für die ein vordefiniertes Container-Image verfügbar ist.
  • Bessere Anpassung und Kontrolle.
  • Nicht-Python-Trainingsanwendungen.
  • Private oder benutzerdefinierte Abhängigkeiten.
  • Trainingsanwendungen, die ein ML-Framework oder eine Framework-Version verwenden, für die kein vordefiniertes Container-Image verfügbar ist.

Trainingsanwendung verpacken

Nachdem Sie den zu verwendenden Container-Image-Typ ermittelt haben, verpacken Sie Ihre Trainingsanwendung je nach Container-Image-Typ in eines der folgenden Formate:

  • Einzelne Python-Datei zur Verwendung in einem vordefinierten Container

    Schreiben Sie Ihre Trainingsanwendung als einzelne Python-Datei und erstellen Sie mit dem Vertex AI SDK für Python eine CustomJob- oder CustomTrainingJob-Klasse. Die Python-Datei wird in eine Python-Quelldistribution verpackt und in einem vordefinierten Container-Image installiert. Für das Prototyping kann Ihre Trainingsanwendung als einzelne Python-Datei bereitgestellt werden. Bei Produktionstrainingsanwendungen werden Sie Ihre Trainingsanwendung wahrscheinlich in mehr als einer Datei organisieren.

  • Python-Quellverteilung zur Verwendung in einem vordefinierten Container

    Verpacken Sie Ihre Trainingsanwendung in eine oder mehrere Python-Quelldistributionen und laden Sie sie in einen Cloud Storage-Bucket hoch. Vertex AI installiert die Quelldistributionen bei der Erstellung eines Trainingsjobs in einem vordefinierten Container-Image.

  • Benutzerdefiniertes Container-Image

    Erstellen Sie ein eigenes Docker-Container-Image, in dem Ihre Trainingsanwendung und Ihre Abhängigkeiten vorinstalliert sind, und laden Sie es in das Artifact Registry hoch. Wenn Ihre Trainingsanwendung in Python geschrieben ist, können Sie diese Schritte mit einem einzigen Google Cloud CLI-Befehl ausführen.

Trainingsjob konfigurieren

Ein Vertex AI-Trainingsjob führt folgende Aufgaben aus:

  • Stellt eine (Einzelknotentraining) oder mehrere (verteiltes Training) virtuelle Maschinen (VMs) bereit.
  • Führt die containerisierte Trainingsanwendung auf den bereitgestellten VMs aus.
  • Löscht die VMs nach Abschluss des Trainingsjobs.

Vertex AI bietet drei Arten an Trainingsjobs zum Ausführen Ihrer Trainingsanwendung:

  • Benutzerdefinierter Job

    Ein benutzerdefinierter Job (CustomJob) führt Ihre Trainingsanwendung aus. Wenn Sie ein vordefiniertes Container-Image verwenden, werden Modellartefakte an den angegebenen Cloud Storage-Bucket ausgegeben. Bei benutzerdefinierten Container-Images kann Ihre Trainingsanwendung auch Modellartefakte an andere Speicherorte ausgeben.

  • Hyperparameter-Abstimmungsjob

    Ein Hyperparameter-Abstimmungsjob (HyperparameterTuningJob) führt mehrere Tests Ihrer Trainingsanwendung mit unterschiedlichen Hyperparameter-Werten aus, bis er Modellartefakte mit optimal funktionierenden Hyperparameter-Werten erzeugt. Sie geben den Bereich der zu testenden Hyperparameter-Werte und die Messwerte an, auf die optimiert werden soll.

  • Trainingspipeline

    Eine Trainingspipeline (CustomTrainingJob) führt einen benutzerdefinierten Job oder einen Hyperparameter-Abstimmungsjob aus und exportiert optional die Modellartefakte in Vertex AI, um eine Modellressource zu erstellen. Sie können ein von Vertex AI verwaltetes Dataset als Datenquelle angeben.

Beim Erstellen eines Trainingsjobs geben Sie die Rechenressourcen an, die zum Ausführen der Trainingsanwendung und zur Konfiguration Ihrer Containereinstellungen verwendet werden sollen.

Rechenkonfigurationen

Geben Sie die Computing-Ressourcen an, die für einen Trainingsjob verwendet werden sollen. Vertex AI unterstützt das Einzelknoten-Training, bei dem der Trainingsjob auf einer VM ausgeführt wird, und das verteilte Training, bei dem der Trainingsjob auf mehreren VMs ausgeführt wird.

Folgende Rechenressourcen können Sie für den Trainingsjob angeben:

  • VM-Maschinentyp

    Unterschiedliche Maschinentypen bieten unterschiedliche CPUs, Arbeitsspeichergrößen und Bandbreiten.

  • Grafikprozessoren (GPUs)

    Sie können A2- oder N1-VMs eine oder mehrere GPUs hinzufügen. Wenn Ihre Trainingsanwendung für die Nutzung von GPUs ausgelegt wurde, kann das Hinzufügen weiterer GPUs die Leistung erheblich verbessern.

  • Tensor Processing Units (TPUs)

    TPUs wurden speziell zum Beschleunigen von Arbeitslasten für maschinelles Lernen entwickelt. Wenn Sie eine TPU-VM für das Training verwenden, können Sie nur einen Worker-Pool angeben. Dieser Worker-Pool kann nur ein Replikat haben.

  • Bootlaufwerke

    Sie können SSDs (Standard) oder HDDs für Ihr Bootlaufwerk verwenden. Wenn Ihre Trainingsanwendung Daten auf das Laufwerk liest und schreibt, kann die Verwendung von SSDs die Leistung verbessern. Sie können auch die Größe des Bootlaufwerks basierend auf der Menge der temporären Daten angeben, die die Trainingsanwendung auf das Laufwerk schreibt. Bootlaufwerke können zwischen 100 GiB (Standard) und 64.000 GiB groß sein. Alle VMs in einem Worker-Pool müssen den gleichen Typ und die gleiche Größe wie das Bootlaufwerk verwenden.

Containerkonfigurationen

Welche Containerkonfigurationen Sie vornehmen müssen, hängt davon ab, ob Sie ein vordefiniertes oder benutzerdefiniertes Container-Image verwenden.

  • Vordefinierte Containerkonfigurationen:

    • Geben Sie den URI des vordefinierten Container-Images an, das Sie verwenden möchten.
    • Wenn Ihre Trainingsanwendung als Python-Quelldistribution verpackt ist, geben Sie den Cloud Storage-URI an, unter dem sich das Paket befindet.
    • Geben Sie das Einstiegspunktmodul Ihrer Trainingsanwendung an.
    • Optional: Bestimmen Sie eine Liste an Befehlszeilenargumenten, die an das Einstiegspunktmodul Ihrer Trainingsanwendung übergeben werden sollen.
  • Benutzerdefinierte Containerkonfigurationen:

    • Geben Sie den URI Ihres benutzerdefinierten Container-Images an. Dies kann ein URI aus Artifact Registry oder Docker Hub sein.
    • Optional: Überschreiben Sie die ENTRYPOINT- oder CMD-Anleitung in Ihrem Container-Image.

Trainingsjob erstellen

Nachdem die Daten und die Trainingsanwendung vorbereitet wurden, führen Sie die Trainingsanwendung aus. Dazu erstellen Sie einen der folgenden Trainingsjobs:

Zum Erstellen des Trainingsjobs können Sie die Google Cloud Console, die Google Cloud CLI, das Vertex AI SDK für Python oder die Vertex AI API verwenden.

(Optional) Modellartefakte in Vertex AI importieren

Die Trainingsanwendung gibt wahrscheinlich ein oder mehrere Modellartefakte an einen bestimmten Speicherort aus, in der Regel ein Cloud Storage-Bucket. Bevor Sie Vorhersagen in Vertex AI aus Ihren Modellartefakten abrufen können, importieren Sie die Modellartefakte in Vertex AI Model Registry.

Wie bei Container-Images für das Training, können Sie in Vertex AI vordefinierte oder benutzerdefinierte Container-Images für Vorhersagen nutzen. Wenn für Ihr ML-Framework und Ihre Framework-Version ein vordefiniertes Container-Image verfügbar ist, empfehlen wir die Verwendung dieses vordefinierten Container-Images.

Nächste Schritte