Machine Learning: Data Version Control 2 verschlankt das Experimentieren

Das Open-Source-Tool DVC führt in der zweiten Hauptversion ein neues Verfahren zum Verwalten von Experimenten ein, das den Git-Overhead umschifft.

In Pocket speichern vorlesen Druckansicht

(Bild: vs148/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Das Tool zum Verwalten von Machine-Learning-Projekten Data Version Control (DVC) ist in Version 2.0 erschienen. Zu den Neuerungen gehören sogenannte Lightweight ML Experiments, um das Versionieren von Experimenten ressourcenschonender umzusetzen. Außerdem verwaltet DVC Checkpoints im Training und bietet flexible Parameter für ML-Pipelines. Schließlich bringt DVC eine direkte Einbindung für das vom selben Team entwickelten Tool Continuous Machine Learning (CML).

DVC kümmert sich um die Versionierung von Machine-Learning-Anwendungen während der Entwicklung. Es verwaltet nicht den Sourcecode, sondern die in ML-Projekten verwendeten umfangreichen Daten und ML-Modelle. Das Werkzeug erstellt Metadaten in Textform, die sich in Git verwalten lassen, während die eigentlichen Daten im Rechenzentrum oder in der Cloud liegen.

Auf der Suche nach dem passenden Modell sind häufig zahlreiche Experimente nötig. Bisher hat DVC jedes Experiment in Git versioniert, was für relativ reife Modelle ausreicht, die nur wenige Experimente zum Optimieren erfordern. Für frische und stärker experimentgetriebene ML-Projekte ist damit jedoch ein Overhead verbunden, da jeder Versuch zusätzliche Aufrufe von git add beziehungsweise git commit auslöst. Zudem ist der Vergleich der Experimente im Git-Repository schwierig.

Daher führt DVC in Version 2 einen speziellen Modus für Experimente ein. dvc exp run führt sie mit Einstellungen für Hyperparameter aus der Datei params.yaml aus. Über den Kommandozeilenparameter --set-param lassen sich einzelne Parameter anpassen. Ein Vergleich der Experimente erfolgt über den Befehl dvc exp diff. Schließlich gibt dvc exp show einen Überblick über Experimente, wie folgendes Beispiel aus dem DVC-Blog zeigt:

$ dvc exp show --no-pager --no-timestamp \
        --include-params featurize.max_features,featurize.ngrams
┏━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Experiment    ┃     auc ┃ featurize.max_features ┃ featurize.ngrams ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ workspace     │ 0.56359 │ 5000                   │ 3                │
│ master        │  0.5674 │ 1500                   │ 2                │
│ ├── exp-80655 │ 0.56359 │ 5000                   │ 3                │
│ ├── exp-63ee0 │  0.5515 │ 5000                   │ 2                │
│ ├── exp-9bf22 │ 0.56448 │ 4000                   │ 2                │
│ └── exp-bb55c │ 0.57462 │ 3000                   │ 2     

Derzeit ist die Umsetzung von Experimenten als experimentell [sic] gekennzeichnet. Die API könnte sich daher in den kommenden Releases noch ändern.

Unter der Haube speichert DVC die Metainformationen weiterhin in Git ab, erzeugt aber keine zusätzlichen Branches, sondern führt eine eigene Git-Referenz namens exps ein. Vorbild dafür ist GitHubs Vorgehen zum Tracken von Pull Requests über pulls.

Wer ein Experiment als eigenen Branch speichern möchte, kann den Kommandozeilenparameter branch verwenden:

$ dvc exp branch exp-80655 big_fr_size
Git branch 'big_fr_size' has been created from experiment 'exp-c695f'.
To switch to the new branch run:

	git checkout big_fr_size

Eine weitere Neuerung in DVC 2.0 ist das Versionieren von ML-Modell-Checkpoints. Letztere dienen dazu, in regelmäßigen Abständen den Zustand und die Gewichtung in Modellen abzuspeichern und bei schlechten Trainingsresultaten im weiteren Verlauf dort wieder mit geänderten Parametern weiterzuarbeiten.

Zum Festsetzen von Checkpoints dient der Befehl dvc stage add. Anschließend lassen sich Trainings über die verschiedenen Checkpoint-Stufen durchführen. Um ein Modell komplett neu zu trainieren, löscht der Befehl dvc exp run --reset alle Checkpoints.

DVC 2.0 hat eine neue Library DVC-Live an Bord, die zum Nachverfolgen von Modell-Metriken dient. Die Metriken lassen sich in Textdateien speichern, und DVC kann sie über die Git-Historie in einer HTML-Datei visualisieren.

Über DVC-Live lassen sich Metriken nachverfolgen, um sie anschließend zu visualisieren.

(Bild: dvc.org)

Über den Parameter diff für dvc plots lassen sich die Logs zu unterschiedliche Metriken miteinander vergleichen. Da das Tool die Ausgaben automatisch generiert, können Data Scientists die Modell-Performance in Echtzeit verfolgen.

Für die Verarbeitung von Projekten in Multi-Stage-Pipelines trennt DVC 2.0 das Festlegen von Variablen von den eigentlichen Stufen. Auf die Weise können Data Scientists alle Varaiblen in einem vars-Block am Anfang der dvc.yaml-Datei definieren und im Verlauf dort anpassen. Alternativ können sie die Parameter aus einer separaten Datei wie params.yaml beziehen, statt sie in der Pipeline-Definition festzulegen.

DVC 2.0 bietet zudem eine Integration mit dem Continuous-Integration-Tool für Machine-Learning-Projekte CML, das Ende Februar in Version 0.3 erschienen ist. Mit dem jüngsten Release lassen sich Cloud-Ressourcen automatisiert bereitstellen.

Minds Mastering Machines

Die Konferenz zu Machine Learning Minds Mastering Machines findet dieses Jahr als Online-Veranstaltung statt. Am 27. und 28. April bietet sie insgesamt 26 Vorträge und eine Keynote in zwei parallelen Videostreams.

Das Bereitstellen von Modellen beziehungsweise MLOps ist dieses Jahr ein Schwerpunktthema, dem sich insgesamt vier Vorträge widmen.

Weitere Neuerungen sowie eine Hand voll Inkompatibilitäten zu Version 1.x finden sich im Blogbeitrag zu DVC 2.0. Die aktuelle Version ist für WIndows, macOS und Linux auf der Download-Seite verfügbar. Alternativ lässt sich die Python-Library über pip install --upgrade dvc installieren.

(rme)