Überspringen und zum Hauptinhalt gehen

Was wir aus der Verfolgung von ML-Experimenten mit ClearML gelernt haben

|W. Perry Wortman

Gemeinsam verfasst von Tien Duc Cao, Senior Machine Learning Engineer bei Dashlane, und Quentin Grail, Machine Learning Engineer bei Dashlane

Bei Dashlane arbeiten wir an verschiedenen experimentellen Projekten, die Anwendungen für maschinelles Lernen (ML) beinhalten. Zur Verwaltung der Experimente verwenden wir ClearML, ein Open-Source-basiertes MLOps-Framework, mit dem wir unsere ML-Experimente besser organisieren können. 

Beim Ausführen von ML-Pipelines gibt es drei wichtige Schritte zur Erstellung einer erfolgreichen Anwendung:  

  1. Verwaltung der Daten: Wir planen, viele Modelle für verschiedene Datensätze und verschiedene Versionen desselben Datensatzes zu trainieren. Außerdem werden wir unser Modell mit einem anderen Datensatz testen. Dazu benötigen wir eine klare Organisation aller Daten, damit wir sie so effizient wie möglich auflisten, visualisieren und abrufen können.
  2. Verfolgung der Experimente: Wir wollen die Ergebnisse der Experimente überwachen, visualisieren und die Leistung der verschiedenen Durchläufe vergleichen können.
  3. Speicherung der Modelle: Sobald wir das beste Modell für unsere Aufgabe gewählt oder uns entschieden haben, zu einem anderen Modell zu wechseln, wollen wir die Parameter einfach abrufen, um sie in unsere Produktionspipeline einzuspeisen.

ClearML hilft uns dabei, die drei genannten Aufgaben nahtlos zu erledigen.

ClearML-Funktionen, die wir besonders nützlich fanden

Drei Funktionen heben sich vom Rest ab:

  • Integration mit Git: Beim Starten einer neuen Aufgabe registriert ClearML automatisch die commitID zusammen mit den nicht übertragenen Änderungen des Repository. Das ist extrem nützlich für die Reproduzierbarkeit von Experimenten und das Iterieren bei einem erfolgreichen Durchlauf.
  • Ressourcenüberwachung: GPU- und CPU-Auslastung sowie Arbeitsspeicher werden in den Metriken verfolgt. So können wir das Beste aus unserer Hardware herausholen, indem wir die Hyperparameter des Modells speziell für die verfügbare GPU optimieren. Außerdem hilft uns die Ressourcenüberwachung dabei, mögliche Engpässe in der Pipeline, die verbessert werden sollten, zu verbessern.
  • Verfolgung der Hyperparameter: ClearML erfasst automatisch alle Argumente, die Sie in Ihr Skript eingeben (zum Beispiel per argparse). Dann können Sie die Effekte dieser Parameter einfach filtern und vergleichen.
Ein Beispiel für Hyperparameter-Tracking, das mit der Modellgenauigkeit angezeigt wird
Ein Beispiel für Hyperparameter-Tracking, das mit der Modellgenauigkeit angezeigt wird
Es gibt zwei Liniendiagramme nebeneinander. Links befindet sich ein Diagramm zur Genauigkeitsüberwachung. Rechts befindet sich ein Diagramm zur Verlustüberwachung.
Diagramme zur Verlust- und Genauigkeitsüberwachung
Auf einem schwarzen Hintergrund befindet sich ein ClearML-Dashboard, das drei abgeschlossene Trainings auflistet.
Ein ClearML-Dashboard mit den abgeschlossenen Trainings

ClearML 101

Um Ihnen die ersten Schritte mit ClearML zu erleichtern, sind hier einige wichtige Begriffe:

  • Aufgabe: Wir verwenden ClearML-Aufgaben, um Python-Skripte (oder sogar Jupyter-Notebooks) im Auge zu behalten. Es gibt viele unterstützte Aufgabentypen.
  • Artefakt: Wir nutzen ClearML-Artefakte, um Eingaben und/oder Ausgaben von Aufgaben zu speichern.
  • Tag: Jedes ClearML kann mit einem oder mehreren Tags verknüpft werden. Das sind deskriptive Schlüsselwörter, die Ihnen beim Filtern Ihrer Aufgaben helfen.

ClearML-Integration

Das Integrieren von ClearML in Ihr vorhandenes Projekt ist wirklich einfach.

Die Konfiguration sollte nur einmal vorgenommen werden, indem Sie die folgenden drei Umgebungsvariablen einrichten:

Sie können diese Variablen auch in Ihren CI/CD-Einstellungen definieren, wenn Sie Ihre Trainingspipelines über GitHub- oder GitLab-Pipelines ausführen möchten.

Um ClearML zu integrieren, müssen Sie nur am Anfang Ihres Python-Skripts folgende Codezeilen hinzufügen:

  • PROJECT_NAME: Ordnen Sie ähnliche Aufgaben (zum Beispiel zum Trainieren einer Modellarchitektur mit verschiedenen Parametern) dem gleichen Projekt zu. 
  • TASK_NAME: Beschreiben Sie in einem (kurzen) Satz den Zweck Ihres Python-Skripts.
  • TAGS: Fügen Sie Ihre Liste mit Tags hinzu. Zum Beispiel „model-cnn,exp-data-augmentation“.
  • DESCRIPTION: Führen Sie hier detaillierte Erklärungen zu Ihrem Experiment auf.

Der Trainingsfortschritt Ihres Modells (beispielsweise Trainingsverlust, Validierungsverlust und mehr) wird automatisch verfolgt, wenn Sie eines dieser Python-Frameworks verwenden.

Wenn Sie die Metriken eines Modells manuell verfolgen möchten (wie z. B. die F1-Bewertung im Testsatz), können Sie das mit einer Codezeile tun:

So haben wir Experimente organisiert

ClearML bietet nützliche Mechanismen, die uns dabei helfen, unsere ML-Experimente besser zu organisieren.

  • Unterprojekte: Sie könnten beispielsweise „X/models“ erstellen, um alle Ihre Trainingsaufgaben im Auge zu behalten, und „X/datasets“ einrichten, um verschiedene Trainingsdatensätze zu speichern. Die beiden Unterprojekte werden unter Projekt „X“ gespeichert.
  • Tags: Diese kurzen Schlüsselwörter beschreiben den Zweck Ihrer Experimente. Sie sind hilfreich, um alle ähnlichen Experimente zu gruppieren. Da es keine Einschränkungen bei der Tag-Benennung gibt, liegt es an Ihnen, die Benennungskonventionen zu bestimmen, die diese Tags beim Durchsuchen und Organisieren Ihrer Experimente handhabbarer machen. Wir haben einige einfache Präfixe definiert:
  1. „Model-“ für die Aufgaben, die ML-Modelle trainieren
  2. „data-“ für die Aufgaben, die Datenaufnahme/-verarbeitung ausführen
  3. „exp-“ für die Aufgaben, die mit neuen Ideen experimentieren

So haben wir Artefakte verwendet, um Daten und Modelle im Auge zu behalten

Sie können ein Objekt mit einer einzigen Codezeile als ClearML-Artefakt speichern. Später können Sie dann auf dieses Artefakt zugreifen, indem Sie 1) das gespeicherte Objekt manuell über die Weboberfläche herunterladen, wenn Sie sich die Details Ihrer Aufgabe ansehen, oder 2) jeden Job direkt in Ihrem Code abrufen und das Artefakt in einem anderen Experiment verwenden.

Wir verwenden Artefakte bei Dashlane hauptsächlich für drei verschiedene Zwecke:

  1. Zum Speichern von Datensätzen: Wir registrieren und taggen unsere Trainings- und Test-Datensätze als Artefakte, damit jeder andere Job darauf zugreifen kann. Wir wissen stets, welche Version der Daten für welchen Job verwendet wurde. Später können wir die Experimente anhand der Trainingsdaten bzw. dadurch filtern, dass wir die Ergebnisse für einen bestimmten Datensatz vergleichen.
  1. Zum Speichern der trainierten Modelle: Wir speichern stets das trainierte Modell, damit wir es später herunterladen können, um es in einem neuen Datensatz zu evaluieren oder in einer anderen Anwendung zu verwenden.
  1. Zum Analysieren von Modellausgaben: Bei der Bewertung eines registrierten Modells für einen registrierten Datensatz speichern wir auch die Vorhersagen des Modells als Artefakt. Dann können wir die Vorhersagen lokal herunterladen und mit der Analyse der Ergebnisse beginnen.

ClearML-Tipps

  • Es macht keinen Unterschied, ob Sie Ihr Python-Skript auf Ihrem eigenen Computer oder einem Remote-Computer ausführen. Um potenzielle Probleme zu verhindern, können Sie also:
  1. Eine Umgebungsvariable konfigurieren, die Ihrem Trainingsskript sagt, dass es nur einen kleinen Teil der Trainingsdaten verwenden und mit nur einer Epoche trainieren soll. So können Sie potenzielle Fehler in Ihrem Code erkennen, während die Eingaben/Ausgaben aller Experimente in ClearML-Experimenten protokolliert werden.
  2. Den realen Trainingsprozess mit allen verfügbaren Daten auf einem Remote-Computer starten, nachdem Sie im vorherigen Schritt alle Probleme behoben haben.
  • ClearML verfolgt nicht übertragene Änderungen, damit Sie neue Ideen schnell iterieren können, ohne zu viele kleine Commits vornehmen zu müssen.

ClearML hat Dashlane geholfen, seine ML-Experimente besser zu organisieren, sodass wir Dashlane-Benutzern zuverlässigere ML-Modelle liefern können. Vielleicht kann die Lösung auch Ihrem Unternehmen helfen.

Bei Dashlane arbeiten wir mit verschiedenen ML-bezogenen Projekten, einschließlich unserer hier dargestellten Engine für das automatische Ausfüllen. Außerdem experimentieren wir intern mit neuartigen ML-basierten Funktionen. Durch effizientes Trainieren und Auswählen der besten Modelle können wir unseren Kunden ein besseres Produkterlebnis bieten. ClearML hilft uns dabei, ML-Experimente besser zu organisieren, sodass wir zuverlässigere ML-Modelle bereitstellen können.

Melden Sie sich an, um Neuigkeiten und Updates zu Dashlane zu erhalten