Daten verwalten mit DVC

Für Datenanalysen und vor allem bei Machine Learning ist es äußerst wertvoll, verschiedene Versionen von Analysen, die mit verschiedenen Datensätzen und Parametern durchgeführt wurden, reproduzieren zu können. Um jedoch reproduzierbare Analysen zu erhalten, müssen sowohl die Daten als auch das Modell (einschließlich der Algorithmen, Parameter. etc.) versioniert werden. Die Versionierung von Daten für reproduzierbare Analysen ist aufgrund der Datengröße ein größeres Problem als die Versionierung von Modellen. Werkzeuge wie DVC helfen bei der Verwaltung von Daten, indem Nutzer diese mit einem Git-artigen Workflow an einen entfernten Datenspeicher übertragen können. Hierdurch vereinfacht sich der Abruf bestimmter Versionen von Daten um eine Analyse zu reproduzieren.

DVC wurde entwickelt, um ML-Modelle und Datensätze gemeinsam nutzen zu können und nachvollziehbar zu verwalten. Es nutzt ein eigenes System zum Speichern der Dateien mit Unterstützung u.a. für SSH und HDFS.

Vergleich mit verwandten Technologien

git-annex

git-annex konzentriert sich mehr auf die Entdeckung und Verwendung von Datensätzen, die dann einfach mit Git verwaltet werden. DVC hingegen speichert die Daten, die bei jeden Schritt der Pipeline erzeugt werden, in .dvc-Dateien, die dann durch Git verwaltet werden kann. DVC stellt zudem praktische Tools zur Manipulation und Visualisierung von Daten-Pipelines bereit, siehe z.B. dvc status. Schließlich lassen sich mit dvc remote auch externe Abhängigkeiten angeben.

Workflow-Management-Systeme wie Airflow und Luigi

DVC konzentriert sich auf Data-Science-Workflows und Modellierung; daher sind DVC-Pipelines sehr viel leichtgewichtiger, einfacher zu erstellen und zu ändern als bei Airflow und Luigi. Allerdings fehlen DVC erweiterte Funktionen wie die Überwachung der Ausführung, Optimierung und Fehlertoleranz. Auch ist DVC ein reines Befehlszeilen-Tool ohne grafische Benutzeroberfläche und es führt auch keine Daemons oder Server aus. CML versucht hier, einige der Lücken leichtgewichtig mit GitHub, GitLab oder Bitbucket zu schließen. DVC und CML eignen sich jedoch gut für iterative Machine-Learning-Prozesse; und wenn mit den beiden ein gutes Modell gefunden wurde, steht euch immer noch frei, die Pipeline in Luigi oder Airflow zu integrieren.

Installation

DVC lässt sich mit uv installieren. Beachtet dabei jedoch, dass ihr hierbei die Extras explizit angeben müsst. Dies können [ssh], [s3], [gs], [azure], und [oss] oder [all] sein. Für ssh sieht das Kommando dann so aus:

$ uv add dvc[ssh]

Alternativ kann DVC auch über andere Paketmanager installiert werden:

$ sudo wget https://dvc.org/deb/dvc.list -O /etc/apt/sources.list.d/dvc.list
$ sudo apt update
$ sudo apt install dvc
$ brew install iterative/homebrew-dvc/dvc