Chaque expérience est sacréeChaque expérience est superSi une expérience est gaspilléeDieu devient assez furieux
Sacred est un outil pour vous aider à configurer, organiser, enregistrer et reproduire des expériences. Il est conçu pour faire tous les travaux de frais généraux fastidieux que vous devez faire autour de votre expérience réelle afin de:
Sacred y parvient par les principaux mécanismes suivants:
Script pour former un SVM sur l'ensemble de données IRIS | Le même script qu'une expérience sacrée |
from numpy . random import permutation
from sklearn import svm , datasets
C = 1.0
gamma = 0.7
iris = datasets . load_iris ()
perm = permutation ( iris . target . size )
iris . data = iris . data [ perm ]
iris . target = iris . target [ perm ]
clf = svm . SVC ( C = C , kernel = 'rbf' ,
gamma = gamma )
clf . fit ( iris . data [: 90 ],
iris . target [: 90 ])
print ( clf . score ( iris . data [ 90 :],
iris . target [ 90 :])) | from numpy . random import permutation
from sklearn import svm , datasets
from sacred import Experiment
ex = Experiment ( 'iris_rbf_svm' )
@ ex . config
def cfg ():
C = 1.0
gamma = 0.7
@ ex . automain
def run ( C , gamma ):
iris = datasets . load_iris ()
per = permutation ( iris . target . size )
iris . data = iris . data [ per ]
iris . target = iris . target [ per ]
clf = svm . SVC ( C = C , kernel = 'rbf' ,
gamma = gamma )
clf . fit ( iris . data [: 90 ],
iris . target [: 90 ])
return clf . score ( iris . data [ 90 :],
iris . target [ 90 :]) |
La documentation est hébergée sur ReadTheDocs. Vous pouvez également demander au gourou sacré, c'est une IA axée sur Sacred pour répondre à vos questions.
Vous pouvez l'installer directement à partir de l'index de package Python avec PIP:
pip install sacré
Ou si vous souhaitez le faire manuellement, vous pouvez vérifier la version actuelle de Git et l'installer vous-même:
git clone https://github.com/idsia/sacred.gitCD sacréPython setup.py install
Vous voudrez peut-être également installer les packages numpy
et pymongo
. Ce sont des dépendances facultatives mais ils offrent des fonctionnalités intéressantes:
pip install numpy pymongo
Les tests pour Sacred utilisent le package Pytest. Vous pouvez les exécuter en exécutant pytest
dans le répertoire sacré comme ceci:
pytest
Il existe également un fichier de configuration pour TOX afin que vous puissiez exécuter automatiquement les tests pour diverses versions Python comme celle-ci:
tox
Si vous mettez à jour ou modifiez la version PyTest, les fichiers suivants doivent être modifiés:
dev-requirements.txt
tox.ini
test/test_utils.py
setup.py
Si vous trouvez un bogue, ayez une demande de fonctionnalité ou souhaitez discuter de quelque chose de général, vous êtes invités à ouvrir un problème. Si vous avez une question spécifique liée à l'utilisation de Sacred, veuillez poser une question sur StackOverflow sous la balise sacrée par Python. Nous apprécions beaucoup la documentation. Si vous trouvez quelque chose qui doit être inclus dans la documentation, veuillez le documenter ou nous faire savoir ce qui manque. Si vous utilisez Sacred dans l'un de vos projets et que vous souhaitez partager votre code avec d'autres, mettez votre référentiel dans les projets en utilisant la liste sacrée <docs / projects_using_sacred.RST> _. Les demandes de traction sont les bienvenues!
À ce stade, il y a trois fronts dans les entrées de la base de données créées par Sacred (que je suis au courant). Ils sont développés en externe comme des projets distincts.
Omniboard est un tableau de bord Web qui aide à visualiser les expériences et les métriques / journaux collectés par Sacred. Omniboard est écrit avec React, Node.js, Express et Bootstrap.
L'encens est une bibliothèque Python pour récupérer les exécutions stockées dans un MongoDB et afficher interactivement des métriques et des artefacts dans des ordinateurs portables Jupyter.
Sacredboard est une interface de tableau de bord en ligne avec les courses sacrées stockées dans un MongoDB.
Neptune est un magasin de métadonnées pour MOPLS, construit pour des équipes qui exécutent beaucoup d'expériences. Il vous donne un seul endroit pour enregistrer, stocker, afficher, organiser, comparer et interroger toutes vos métadonnées de construction de modèles via l'API disponible pour les langages de programmation Python et R:
Afin de enregistrer vos expériences sacrées à Neptune, il vous suffit d'ajouter un observateur:
from neptune . new . integrations . sacred import NeptuneObserver
ex . observers . append ( NeptuneObserver ( api_token = '<YOUR_API_TOKEN>' ,
project = '<YOUR_WORKSPACE/YOUR_PROJECT>' ))
Pour plus d'informations, consultez le Guide d'intégration Neptune + Sacred.
SacredBrowser est une application PYQT4 pour parcourir les entrées MongoDB créées par des expériences sacrées. Les fonctionnalités incluent les requêtes personnalisées, le tri des résultats, l'accès au code source stocké et bien d'autres. Aucune installation n'est requise et il peut se connecter à une base de données locale ou sur le réseau.
Le Prophète est un premier prototype d'une interface Web aux entrées MongoDB créées par des expériences sacrées, qui est abandonnée. Il vous oblige à exécuter Restheart pour accéder à la base de données.
Sumatra est un outil de gestion et de suivi des projets basés surSimulation et / ou analyse, dans le but de soutenir la recherche reproductible.Il peut être considéré comme un carnet de laboratoire électronique automatisé pourprojets informatiques.
Sumatra adopte une approche différente en fournissant des outils de ligne de commande pour initialiser un projet, puis exécuter du code arbitraire (pas seulement Python). Il suit des informations sur toutes les exécutions dans une base de données SQL et fournit même un bel outil de navigateur. Il s'intègre moins étroitement au code à exécuter, ce qui le rend facilement applicable aux expériences non python. Mais cela signifie également qu'il nécessite plus de configuration pour chaque expérience et la configuration doit être effectuée à l'aide de fichiers. Utilisez ce projet si vous avez besoin d'exécuter des expériences non-python, ou si vous êtes correct avec la surcharge de configuration / configuration supplémentaire.
FGLAB est un tableau de bord d'apprentissage automatique, conçu pour faire du prototypageexpériences plus facilement. Les détails de l'expérience et les résultats sont envoyés à une base de données,ce qui permet à l'analyse d'être effectuée après leur achèvement. Le serveurest FGLAB et les clients sont des fgmachines.
Semblable à Sumatra, FGLAB est un outil externe qui peut suivre les exécutions de n'importe quel programme. Les projets sont configurés via un schéma JSON et le programme doit accepter ces configurations via des options de ligne de commande. FGLAB joue également le rôle d'un planificateur de base en distribuant des exécutions sur plusieurs machines.
Ce projet est publié selon les termes de la licence du MIT.
K. Greff, A. Klein, M. Chovanec, F. Hutter et J. Schmidhuber, «The Sacred Infrastructure for Computational Research», dans Actes du 15e Python in Science Conference (Scipy 2017), Austin, Texas, 2017, pp. 49–56.