Im ersten Teil wurden die konzeptionellen Unterschiede von herkömmlicher Softwareentwicklung zu „Software 2.0" näher beleuchtet. In diesem Artikel werden die Lösungen verschiedener Anbieter evaluiert und es wird ein konkreter Vergleich anhand der gebotenen Features aufgestellt. Zudem erfolgt eine Erläuterung der Schwerpunktrichtungen und eine Auswahl an Anwendungsszenarien und ihrer respektive geeigneten Frameworks.
FRAMEWORKTYPEN
Die angebotenen Lösungen verfolgen jeweils andere Schwerpunkte, wobei sich hier drei Richtungen herauskristallisieren. Zum einen der Fokus auf das bloße Experiment-Management, wobei diese Systeme immer mehr dazu übergehen, weitere Teile des ML-Zyklus zu integrieren, um relevant zu bleiben. Des Weiteren gibt es namentlich mit DVC ein Framework, welches sich spezifisch auf die Git-ähnliche Versionierung von Daten und zusätzlichen Artefakten konzentriert und dabei weniger auf Automatisierung abzielt. Zu guter Letzt unternehmen viele Frameworks den Versuch der Abdeckung des kompletten Zyklus, wobei hier manche Anbieter mehr auf einfache und modulare Integration setzen und andere komplexere Strukturen vorgeben, um eine bessere Skalierbarkeit zu gewährleisten.
Kriterium | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MLFlow | Sacred | DVC | Comet | Neptune | wandb | Pachyderm | Kubeflow | Valohai | SageMaker | Verta.ai | Guild Ai | Tensorboard | PolyAxon | TRAINS | |
Übersicht | |||||||||||||||
Betrachtete Version | 1.11.0 | 0.8.0 | 1.9.0 | 3.1.0 | 0.4.124 | 0.10.8 | 1.11.4 | 1.1 | 26.10.2020 | 2.15.4 | 2.0 | 0.7.0 | 2.3.0 | 1.2.1 | 0.16.2 |
Schwerpunkt | Kompletter Zyklus | Experimentmanagement | Versionierung | Experimentmanagement | Experimentmanagement | Kompletter Zyklus | Kompletter Zyklus | Kompletter Zyklus | Kompletter Zyklus | Kompletter Zyklus | Kompletter Zyklus | Experimentmanagement | Experimentmanagement | Experimentmanagement | Experimentmanagement |
Preis | Kostenlos | Kostenlos | Kostenlos |
|
|
|
|
Kostenlos |
|
Lediglich Berechnung der verwendeten AWS Services |
|
Kostenlos | Kostenlos |
|
|
Limitation der kostenfreien Version | ✘ | ✘ | ✘ |
|
|
|
|
✘ | ✘ | ✘ |
|
✘ | ✘ |
|
|
Open Source | ✔ | ✔ | ✔ | ✘ | ✘ | ✘ | Teilweise | ✔ | ✘ | ✘ | Teilweise | ✔ | ✔ | Teilweise | Teilweise |
Einfach zu integrieren | ✔ | Teils kompliziert | Teils kompliziert | ✔ | ✔ | ✔ | ✘ | ✘ | ✘ | Teils kompliziert | ✘ | ✔ | ✔ | ✘ | ✘ |
Tracking-Features | |||||||||||||||
Versionierung |
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
- |
ausgereift:
|
ausgereift:
|
Ressourcen-Monitoring | ✘ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | ✔ | ✔ |
Logging |
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
ausgereift:
|
GUI-Features | |||||||||||||||
Nutzerverwaltung | ✘ | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | ✘ |
Individualisierbares Dashboard | Beschränkt | ✔ | ✘ | ✔ | ✔ | ✔ | Beschränkt | ✘ | Beschränkt | Beschränkt | ✔ | Beschränkt | ✘ | Beschränkt | ✘ |
Experimentorganisation | ✔ | Beschränkt | ✘ | ✔ | ✔ | ✔ | Beschränkt | Beschränkt | Beschränkt | Beschränkt | ✔ | Beschränkt | ✘ | Beschränkt | Beschränkt |
Gegenüberstellung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kommentare | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
Reporterstellung | Beschränkt | ✔ | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ | Beschränkt | ✘ |
Teilen von Reports | Beschränkt | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | Beschränkt | ✔ | Beschränkt | Beschränkt |
Produkt-Features | |||||||||||||||
Experiment API | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ | ✘ | ✔ | ✘ | ✔ | ✘ |
Hosting | On-Premises | On-Premises | On-Premises | On-Premises, Hosted | On-Premises, Hosted | On-Premises, Hosted | On-Premises, Hosted | On-Premises, Hosted | On-Premises, Hosted | Hosted | On-Premises | On-Premises | On-Premises, Hosted | On-Premises, Hosted | On-Premises |
Skalierbarkeit | Beschränkt | ✘ | ✔ | ✔ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✘ | ✔ | ✘ |
Dedizierter Support | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ | ✘ |
Tracking API | R-, Python-, Java-Client, HTTP | Python-Client | CLI, Python-Client | HTTP | Python-Client, Java-Client | Python-Client | Container-basiert | Container-basiert | Container-basiert | Python-Client, Java-Client, Javascript-Client, Ruby-Client, Go-Client, HTTP | Python-Client | Python-Client, CLI | Python-Client | Container-basiert | Python-Client |
aNWENDUNGSFÄLLE
Kleine Teams / Sammeln erster Erfahrungen
Immer mehr Firmen setzen auf AI-Lösungen und schulen dabei häufig, aufgrund des Fachkräftemangels, vorhandenes Personal um und weiter, um die zusätzlichen Anforderungen abzudecken. Dabei werden kleinere interdisziplinäre Teams gebildet.
Für diesen Anwendungsfall eignet sich besonders MLflow, da es in der Lage ist, den kompletten ML-Zyklus abzudecken, durch seine Modularität jedoch auch schrittweise integriert werden kann und so mit den Anforderungen des Projekts wächst. Noch fehlende Features, wie eine ausgeprägte Nutzerverwaltung und Ressourcen-Tracking, fallen hierbei nicht so sehr ins Gewicht und die intuitive und sprachagnostische API sorgen für eine einfache Handhabung.
Zentralisierter Hub
Bei dedizierten Data-Science-Abteilungen, werden häufig einzelne Projektteams gebildet. Um hier den Wissensaustausch zu fördern und eine einheitliche Möglichkeit zum Reporting an alle Stakeholder bereitzustellen, bietet sich eine zentralisierte Anlaufstelle für gemeinsames Arbeiten an.
Diese Anforderungen deckt WandB sehr schön ab, da es über ausgereifte Reportfunktionen verfügt und die Erstellung von individualisierbaren Dashboards ermöglicht. Dabei kann mittels der vorhanden Nutzerverwaltung eine übersichtliche Projekteinteilung gewährleistet und einzelne Dashboards oder Experimente und Artefakte geteilt werden. Zudem verfügt WandB über die nötigen Features, um alle Belange innerhalb des ML-Zyklus abdecken zu können.
Clusterbetrieb / Verteilte Systeme
In großen Organisationen kann meist kein einheitlicher Technologie-Stack projektübergreifend festgelegt werden. Vielmehr soll ein einheitlicher Rahmen definiert werden, welcher dabei sprach- und systemagnostisch bleibt. Hierfür wird meist auf Container-Technologien gesetzt, welche im Clusterbetrieb orchestriert werden können.
Zur Umsetzung einer solchen Abstraktionsebene bieten sich die Frameworks Valohai und Pachyderm an. Diese basieren auf dem Gedanken der Container-Orchestration und stellen alle nötigen Funktionen zur Erstellung von Preprocessing-Pipelines, dem Experiment-Tracking und automatisiertem Deployment zur Verfügung. Pachyderm kann zudem auch in der kostenfreien Community-Version verwendet und bei Bedarf auf die Enterprise-Version geupgradet werden.
Fazit
Durch die große Vielfalt an vorhanden Framework-Anbietern ist für jeden Anwendungsfall eine geeignete Lösung verfügbar. Insgesamt stehen dabei die kostenfreien Varianten den proprietären Lösungen in nichts nach und übertreffen diese teilweise sogar. Aufgrund der kompetitiven Anbieterzahl wird zudem eine rege Weiterentwicklung gefördert, die das Entwickeln einer Inhouse-Lösung größtenteils überflüssig macht. Der aktuelle Reifegrad der Systeme ist bereits in der Lage, die zusätzlichen Herausforderungen des ML-Zyklus abzudecken. Ob sich eine endgültige Lösung herauskristallisiert, wie es beispielsweise mit Git in der klassischen Versionsverwaltung der Fall ist, bleibt abzuwarten.
Quelle/Inspiration
https://www.jeremyjordan.me/ml-projects-guide/https://martinfowler.com/articles/cd4ml.html
https://neptune.ai/blog/best-ml-experiment-tracking-tools
https://curiousily.com/posts/reproducible-machine-learning-and-experiment-tracking-pipiline-with-python-and-dvc/
https://www.inovex.de/blog/machine-learning-model-management/
https://towardsdatascience.com/e2e-the-every-purpose-ml-method-5d4f20dafee4
https://towardsdatascience.com/machine-learning-experiment-tracking-93b796e501b0