Container

Container in AI Platform Training sind ein Feature, mit dem Sie Ihre Anwendung in einem Docker-Image ausführen können. Sie können Ihren eigenen benutzerdefinierten Container erstellen, um Jobs in AI Platform Training auszuführen. Dabei werden ML-Frameworks und -Versionen sowie Nicht-ML-Abhängigkeiten, -Bibliotheken und -Binärdateien verwendet, die in AI Platform Training ansonsten nicht unterstützt werden.

Vorgehensweise zum Trainieren mit Containern

Ihre Trainingsanwendung, die in das ML-Framework Ihrer Wahl implementiert ist, bildet den Kern des Trainingsprozesses.

  1. Erstellen Sie mithilfe des ML-Frameworks Ihrer Wahl eine Anwendung, die Ihr Modell trainiert.
  2. Entscheiden Sie sich, ob Sie einen benutzerdefinierten Container verwenden möchten. Möglicherweise gibt es eine Laufzeitversion, die Ihre Abhängigkeiten bereits unterstützt. Andernfalls müssen Sie einen benutzerdefinierten Container für Ihren Trainingsjob erstellen. In Ihrem benutzerdefinierten Container installieren Sie Ihre Trainingsanwendung und alle zugehörigen Abhängigkeiten vorab in einem Image, das Sie dann zum Ausführen Ihres Trainingsjobs verwenden.
  3. Speichern Sie Ihre Trainings- und Verifizierungsdaten in einer Quelle, auf die AI Platform Training zugreifen kann. Dies bedeutet in der Regel, dass Sie die Daten in Cloud Storage, Cloud Bigtable oder einem anderen Google Cloud-Speicherdienst ablegen, der mit dem Google Cloud-Projekt verknüpft ist, das Sie für AI Platform Training verwenden.
  4. Wenn Ihre Anwendung zur Ausführung bereit ist, erstellen Sie das Docker-Image und verschieben es per Push in Container Registry. Achten Sie darauf, dass der AI Platform Training-Dienst auf Ihre Registry zugreifen kann.
  5. Senden Sie Ihren Job mithilfe von gcloud ai-platform jobs submit training und geben Sie Ihre Argumente in einer config.yaml-Datei oder den entsprechenden gcloud-Flags an.
  6. Der AI Platform Training-Trainingsdienst richtet Ressourcen für Ihren Job ein. Er weist gemäß Jobkonfiguration mindestens eine virtuelle Maschine (auch als Trainingsinstanz bezeichnet) zu. Richten Sie eine Trainingsinstanz ein, indem Sie den benutzerdefinierten Container verwenden, den Sie beim Senden Ihres Trainingsjobs als Teil des TrainingInput-Objekts angeben.
  7. Der Trainingsdienst führt Ihr Docker-Image aus und gibt dabei alle Befehlszeilenargumente weiter, die Sie beim Erstellen des Trainingsjobs angegeben haben.
  8. Informationen zum ausgeführten Job können Sie auf folgende Arten abrufen:
  9. Wenn der Trainingsjob erfolgreich abgeschlossen ist oder ein nicht behebbarer Fehler auftritt, stoppt AI Platform Training alle Jobprozesse und bereinigt die Ressourcen.

Vorteile von benutzerdefinierten Containern

Mit benutzerdefinierten Containern können Sie alle für die Anwendung erforderlichen Abhängigkeiten angeben und vorinstallieren.

  • Schnellerer Programmstart: Wenn Sie einen benutzerdefinierten Container mit vorinstallierten Abhängigkeiten verwenden, sparen Sie die Zeit, die Ihre Trainingsanwendung andernfalls für die Installation von Abhängigkeiten beim Start benötigt.
  • Verwendung eines ML-Frameworks Ihrer Wahl: Sollten Sie keine AI Platform Training-Laufzeitversion finden, die das von Ihnen gewünschte ML-Framework unterstützt, können Sie einen benutzerdefinierten Container erstellen, der das von Ihnen ausgewählte Framework installiert und zum Ausführen von Jobs in AI Platform Training verwendet. Sie können beispielsweise mit PyTorch trainieren.
  • Erweiterte Unterstützung für verteiltes Training: Mit benutzerdefinierten Containern können Sie verteiltes Training mit einem beliebigen ML-Framework durchführen.
  • Verwendung der neuesten Version: Sie können auch den neuesten Build oder die neueste Nebenversion eines ML-Frameworks verwenden. So können Sie beispielsweise einen benutzerdefinierten Container erstellen, um mit tf-nightly zu trainieren.

Hyperparameter-Abstimmung mit benutzerdefinierten Containern

Geben Sie zum Durchführen der Hyperparameter-Abstimmung in AI Platform Training einen Zielmesswert an und legen Sie fest, ob dieser minimiert oder maximiert werden soll. Sie möchten beispielsweise die Genauigkeit Ihres Modells maximieren oder den Modellverlust minimieren. Außerdem listen Sie die Hyperparameter auf, die Sie anpassen möchten, sowie einen Zielwert für jeden Hyperparameter. AI Platform Training führt mehrere Versuche mit Ihrer Trainingsanwendung durch, verfolgt die Hyperparameter und passt sie nach jedem Versuch an. Wenn der Job für die Hyperparameter-Abstimmung abgeschlossen ist, gibt AI Platform Training die Werte für die effektivste Konfiguration der Hyperparameter sowie eine Zusammenfassung für jeden Versuch zurück.

Für die Hyperparameter-Abstimmung mit benutzerdefinierten Containern müssen Sie die folgenden Anpassungen vornehmen:

  • Im Dockerfile: Installieren Sie cloudml-hypertune.
  • Im Trainingscode:
    • Verwenden Sie cloudml-hypertune und rufen Sie die zugehörige Hilfsfunktion report_hyperparameter_tuning_metric auf, um die Ergebnisse der einzelnen Tests zu melden.
    • Fügen Sie für jeden Hyperparameter Befehlszeilenargumente hinzu und verwenden Sie zum Parsen von Argumenten einen Argumentparser wie z. B. argparse.
  • In der Jobanfrage: Fügen Sie dem TrainingInput-Objekt eine HyperparameterSpec hinzu.

Sehen Sie sich ein Beispiel für ein Training mit benutzerdefinierten Containern mithilfe der Hyperparameter-Abstimmung an oder informieren Sie sich über die Funktionsweise der Hyperparameter-Abstimmung in AI Platform Training.

GPUs mit benutzerdefinierten Containern verwenden

Für das Training mit GPUs muss Ihr benutzerdefinierter Container einige spezielle Anforderungen erfüllen. Sie müssen ein anderes Docker-Image erstellen als für das Training mit CPUs.

  • Installieren Sie das CUDA-Toolkit und cuDNN in Ihrem Docker-Image. Wir empfehlen die Verwendung des nvidia/cuda-Images als Basis-Image. In diesem Image sind die entsprechenden Versionen des CUDA-Toolkits und von cuDNN bereits vorinstalliert. Außerdem können Sie die zugehörigen Umgebungsvariablen korrekt einrichten.
  • Installieren Sie Ihre Trainingsanwendung zusammen mit dem erforderlichen ML-Framework und anderen Abhängigkeiten im Docker-Image.

Beispiel für ein Dockerfile zum Training mit GPUs

Weitere Informationen