rubicon-ml ist ein Data-Science-Tool, das Modelltrainings- und Ausführungsinformationen, wie Parameter und Ergebnisse, auf wiederholbare und durchsuchbare Weise erfasst und speichert. Durch die git
Integration werden diese Ein- und Ausgaben direkt mit dem Modellcode verknüpft, der sie erstellt hat, um eine vollständige Überprüfbarkeit und Reproduzierbarkeit sowohl für Entwickler als auch für Stakeholder zu gewährleisten. Beim Experimentieren erleichtert das Dashboard das Erkunden, Filtern, Visualisieren und Teilen aufgezeichneter Arbeiten.
ps Wenn Sie nach Rubicon suchen, der Java/ObjC-Python-Brücke, besuchen Sie stattdessen diese.
rubicon-ml besteht aus drei Teilen:
fsspec
basiertdash
erstelltes Dashboard zum Erkunden, Vergleichen und Visualisieren protokollierter Datenintake
nutzt Verwenden Sie rubicon_ml
um Modelleingaben und -ausgaben im Zeitverlauf zu erfassen. Es lässt sich problemlos in bestehende Python-Modelle oder Pipelines integrieren und unterstützt sowohl die gleichzeitige Protokollierung (damit mehrere Experimente parallel protokolliert werden können) als auch die asynchrone Kommunikation mit S3 (damit Netzwerk-Lese- und Schreibvorgänge nicht blockiert werden).
Überprüfen Sie in der Zwischenzeit regelmäßig die protokollierten Daten im Rubicon-Dashboard, um den Modelloptimierungsprozess in die richtige Richtung zu lenken. Mit dem Dashboard können Sie Trends schnell erkennen, indem Sie Ihre protokollierten Ergebnisse untersuchen und filtern und visualisieren, wie sich die Modelleingaben auf die Modellausgaben ausgewirkt haben.
Wenn das Modell zur Überprüfung bereit ist, erleichtert Rubicon die gemeinsame Nutzung bestimmter Teilmengen der Daten mit Modellprüfern und Stakeholdern und stellt ihnen den für eine vollständige Modellüberprüfung und -genehmigung erforderlichen Kontext bereit.
Schauen Sie sich die interaktiven Notizbücher in diesem Ordner an, um rubicon_ml
selbst auszuprobieren.
Hier ist ein einfaches Beispiel:
from rubicon_ml import Rubicon
rubicon = Rubicon (
persistence = "filesystem" , root_dir = "/rubicon-root" , auto_git_enabled = True
)
project = rubicon . create_project (
"Hello World" , description = "Using rubicon to track model results over time."
)
experiment = project . log_experiment (
training_metadata = [ SklearnTrainingMetadata ( "sklearn.datasets" , "my-data-set" )],
model_name = "My Model Name" ,
tags = [ "my_model_name" ],
)
experiment . log_parameter ( "n_estimators" , n_estimators )
experiment . log_parameter ( "n_features" , n_features )
experiment . log_parameter ( "random_state" , random_state )
accuracy = rfc . score ( X_test , y_test )
experiment . log_metric ( "accuracy" , accuracy )
Erkunden Sie dann das Projekt, indem Sie das Dashboard ausführen:
rubicon_ml ui --root-dir /rubicon-root
Eine vollständige Übersicht finden Sie in den Dokumenten. Wenn Sie Vorschläge haben oder einen Fehler finden, öffnen Sie bitte ein Problem.
Die Python-Bibliothek ist auf Conda Forge über conda
und PyPi über pip
verfügbar.
conda config --add channels conda-forge
conda install rubicon-ml
oder
pip install rubicon-ml
Das Projekt verwendet Conda zur Verwaltung von Umgebungen. Installieren Sie zunächst Conda. Verwenden Sie dann Conda, um eine Entwicklungsumgebung einzurichten:
conda env create -f environment.yml
conda activate rubicon-ml-dev
Abschließend installieren Sie rubicon_ml
lokal in der neu erstellten Umgebung.
pip install -e " .[all] "
Die Tests sind in Unit- und Integrationstests unterteilt. Sie können direkt in der aktivierten Entwicklungsumgebung über pytest tests/unit
oder pytest tests/integration
ausgeführt werden. Oder indem Sie einfach pytest
ausführen, um alle auszuführen.
Hinweis : Einige Integrationstests sind absichtlich marked
um zu kontrollieren, wann sie ausgeführt werden (dh nicht während CICD). Zu diesen Tests gehören:
Integrationstests, die in physische Dateisysteme schreiben – lokal und S3. Lokale Dateien werden relativ zum Ort, an dem die Tests ausgeführt werden, in ./test-rubicon
geschrieben. Zur Ausführung dieser Tests muss außerdem ein S3-Pfad bereitgestellt werden. Standardmäßig sind diese Tests deaktiviert. Um sie zu aktivieren, führen Sie Folgendes aus:
pytest -m "write_files" --s3-path "s3://my-bucket/my-key"
Integrationstests, die Jupyter-Notebooks ausführen. Diese Tests sind etwas langsamer als die übrigen Tests in der Suite, da sie zum Starten von Jupyter-Servern erforderlich sind. Standardmäßig sind sie aktiviert. Um sie zu deaktivieren, führen Sie Folgendes aus:
pytest -m "not run_notebooks and not write_files"
Hinweis : Beim einfachen Ausführen von pytest
ist -m "not write_files"
die Standardeinstellung. Daher müssen wir es auch beim Deaktivieren von Notebook-Tests anwenden.
Installieren und konfigurieren Sie Pre-Commit, um black
, flake8
und isort
während Commits automatisch auszuführen:
pre-commit install
aus, um die Git-Hook-Skripte einzurichten Jetzt wird pre-commit
automatisch beim Git-Commit ausgeführt und stellt ein konsistentes Codeformat im gesamten Projekt sicher. Sie können die Formatierung ohne Commit per pre-commit run
oder diese Prüfungen mit git commit --no-verify
überspringen.