rubicon-ml est un outil de science des données qui capture et stocke les informations de formation et d'exécution des modèles, telles que les paramètres et les résultats, de manière reproductible et consultable. Son intégration git
associe ces entrées et sorties directement au code modèle qui les a produits pour garantir une auditabilité et une reproductibilité totales pour les développeurs et les parties prenantes. Lors de l'expérimentation, le tableau de bord facilite l'exploration, le filtrage, la visualisation et le partage du travail enregistré.
ps Si vous recherchez Rubicon, le pont Java/ObjC Python, visitez plutôt ceci.
rubicon-ml est composé de trois parties :
fsspec
dash
intake
Utilisez rubicon_ml
pour capturer les entrées et sorties du modèle au fil du temps. Il peut être facilement intégré aux modèles ou pipelines Python existants et prend en charge à la fois la journalisation simultanée (afin que plusieurs expériences puissent être enregistrées en parallèle) et la communication asynchrone avec S3 (afin que les lectures et écritures sur le réseau ne soient pas bloquées).
Pendant ce temps, examinez périodiquement les données enregistrées dans le tableau de bord Rubicon pour orienter le processus de réglage du modèle dans la bonne direction. Le tableau de bord vous permet de repérer rapidement les tendances en explorant et en filtrant vos résultats enregistrés et de visualiser l'impact des entrées du modèle sur les sorties du modèle.
Lorsque le modèle est prêt à être révisé, Rubicon facilite le partage de sous-ensembles spécifiques de données avec les réviseurs du modèle et les parties prenantes, leur donnant ainsi le contexte nécessaire pour un examen et une approbation complets du modèle.
Consultez les cahiers interactifs de ce classeur pour essayer rubicon_ml
par vous-même.
Voici un exemple simple :
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 )
Explorez ensuite le projet en exécutant le tableau de bord :
rubicon_ml ui --root-dir /rubicon-root
Pour un aperçu complet, visitez la documentation. Si vous avez des suggestions ou trouvez un bug, veuillez ouvrir un problème.
La bibliothèque Python est disponible sur Conda Forge via conda
et PyPi via pip
.
conda config --add channels conda-forge
conda install rubicon-ml
ou
pip install rubicon-ml
Le projet utilise conda pour gérer les environnements. Tout d’abord, installez conda. Utilisez ensuite conda pour configurer un environnement de développement :
conda env create -f environment.yml
conda activate rubicon-ml-dev
Enfin, installez rubicon_ml
localement dans l'environnement nouvellement créé.
pip install -e " .[all] "
Les tests sont séparés en tests unitaires et d'intégration. Ils peuvent être exécutés directement dans l'environnement de développement activé via pytest tests/unit
ou pytest tests/integration
. Ou en exécutant simplement pytest
pour tous les exécuter.
Remarque : certains tests d'intégration sont intentionnellement marked
pour contrôler le moment où ils sont exécutés (c'est-à-dire pas pendant le CICD). Ces tests comprennent :
Tests d'intégration qui écrivent sur des systèmes de fichiers physiques - locaux et S3. Les fichiers locaux seront écrits dans ./test-rubicon
par rapport à l'endroit où les tests sont exécutés. Un chemin S3 doit également être fourni pour exécuter ces tests. Par défaut, ces tests sont désactivés. Pour les activer, exécutez :
pytest -m "write_files" --s3-path "s3://my-bucket/my-key"
Tests d'intégration qui exécutent des notebooks Jupyter. Ces tests sont un peu plus lents que le reste des tests de la suite car ils doivent lancer les serveurs Jupyter. Par défaut, ils sont activés. Pour les désactiver, exécutez :
pytest -m "not run_notebooks and not write_files"
Remarque : lors de l'exécution simple pytest
, -m "not write_files"
est la valeur par défaut. Nous devons donc également l'appliquer lors de la désactivation des tests de notebook.
Installez et configurez le pré-commit pour exécuter automatiquement black
, flake8
et isort
pendant les commits :
pre-commit install
pour configurer les scripts git hook Désormais, pre-commit
s'exécutera automatiquement sur git commit et garantira un format de code cohérent tout au long du projet. Vous pouvez formater sans validation via pre-commit run
ou ignorer ces vérifications avec git commit --no-verify
.