SO | Pruebas de CI en master |
---|---|
Datmo es una herramienta de gestión de modelos de producción de código abierto para científicos de datos. Utilice datmo init
para convertir cualquier repositorio en un registro de experimento rastreable. Sincroniza usando tu propia nube.
Nota : La versión actual de Datmo es una versión alfa. Esto significa que los comandos están sujetos a cambios y se agregarán más funciones. Si encuentra algún error, no dude en contribuir agregando problemas para que los contribuyentes puedan solucionarlos.
Configuración del entorno de un comando (idiomas, marcos, paquetes, etc.)
Seguimiento y registro de configuración y resultados del modelo
Control de versiones del proyecto (seguimiento del estado del modelo)
Reproducibilidad del experimento (tareas de repetición)
Visualizar + exportar el historial del experimento
(próximamente) Paneles para visualizar experimentos
Característica | Comandos |
---|---|
Inicializando un proyecto | $ datmo init |
Configurar un nuevo entorno | $ datmo environment setup |
Realizar un experimento | $ datmo run "python filename.py" |
Reproducir un experimento anterior | $ datmo ls (Encontrar el ID deseado)$ datmo rerun EXPERIMENT_ID |
Abrir un espacio de trabajo | $ datmo notebook (Cuaderno Jupyter)$ datmo jupyterlab (JupyterLab)$ datmo rstudio (RStudio)$ datmo terminal (Terminal) |
Registre el estado de su proyecto (Archivos, código, entorno, configuración, estadísticas) | $ datmo snapshot create -m "My first snapshot!" |
Cambiar a un estado de proyecto anterior | $ datmo snapshot ls (busque la identificación deseada)$ datmo snapshot checkout SNAPSHOT_ID |
Visualizar entidades del proyecto | $ datmo ls (Experimentos)$ datmo snapshot ls (Instantáneas)$ datmo environment ls (Entornos) |
Requisitos
Instalación
Hola Mundo
Ejemplos
Documentación
Transformar un proyecto actual
Intercambio
Contribuyendo a Datmo
Docker (instalado y ejecutándose antes de comenzar): Instrucciones para Ubuntu, MacOS, Windows
$ pip install datmo
Nuestra guía Hola mundo incluye mostrar la configuración y los cambios del entorno, así como la reproducibilidad del experimento. Está disponible en nuestros documentos aquí.
En la carpeta /examples
tenemos algunos scripts que puede ejecutar para familiarizarse con datmo. Puede navegar a Ejemplos para obtener más información sobre cómo ejecutar los ejemplos y comenzar con sus propios proyectos.
Para obtener tutoriales más avanzados, consulte nuestro repositorio de tutoriales dedicado aquí.
Configurar un entorno es extremadamente fácil en datmo. Simplemente responda con y
cuando se le pregunte sobre la configuración del entorno durante la inicialización, o utilice datmo environment setup
en cualquier momento. Luego siga las indicaciones resultantes.
A continuación se muestra un ejemplo para configurar un TensorFlow Python 2.7 con requisitos/controladores de CPU.
Para obtener la guía completa sobre cómo configurar su entorno con datmo, consulte esta página en nuestra documentación aquí.
Después de configurar su entorno, la mayoría de los científicos de datos quieren abrir lo que llamamos un espacio de trabajo (IDE o entorno de programación Notebook).
A continuación se muestra un ejemplo para abrir rápidamente un Jupyter Notebook y mostrar la importación de TensorFlow funcionando según lo previsto.
A continuación se muestra una comparación de un modelo de regresión logística típico con uno que aprovecha Datmo.
Guión normal | Con Datmo |
---|---|
# train.py#from sklearn importar conjuntos de datos de sklearn importar linear_model como lmfrom sklearn importar model_selection como msfrom sklearn importar externos como ex######iris_dataset = datasets.load_iris()X = iris_dataset.datay = iris_dataset.targetdata = ms.train_test_split (X, y)X_entrenamiento, X_prueba, y_train, y_test = data#model = lm.LogisticRegression(solver="newton-cg")model.fit(X_train, y_train)ex.joblib.dump(model, 'model.pkl')#train_acc = model.score(X_train , y_train)test_acc = model.score(X_test, y_test)#print(train_acc)print(test_acc)######### | # train.py#from sklearn import datasetsfrom sklearn import linear_model as lmfrom sklearn import model_selection as msfrom sklearn import externals as eximport datmo # extra line#config = {"solver": "newton-cg"} # extra line#iris_dataset = datasets. load_iris()X = iris_dataset.datay = iris_dataset.targetdata = ms.train_test_split(X, y)X_train, X_test, y_train, y_test = data#model = lm.LogisticRegression(**config)model.fit(X_train, y_train)ex.joblib.dump(model, "model.pkl") #train_acc = model.score(X_train, y_train)test_acc = model.score(X_test, y_test)#stats = {"train_accuracy": train_acc,"test_accuracy": test_acc} # línea adicional#datmo.snapshot.create(message="mi primera instantánea",filepaths=["model.pkl"],config=config,stats=stats) # línea extra |
Para ejecutar el código anterior, puede hacer lo siguiente.
Navegar a un directorio con un proyecto.
$ mkdir MY_PROJECT $ cd MY_PROJECT
Inicializar un proyecto datmo
$ datmo init
Copie el código datmo anterior en un archivo train.py
en su directorio MY_PROJECT
Ejecute el script como lo haría normalmente en Python
$ python train.py
¡Felicitaciones! Acabas de crear tu primera instantánea :) Ahora ejecuta un comando ls para instantáneas para ver tu primera instantánea.
$ datmo snapshot ls
Al ejecutar datmo init
, Datmo agrega un directorio .datmo
oculto que realiza un seguimiento de todas las entidades en juego. Esto es necesario para que un repositorio esté habilitado para datos.
Consulte nuestra página de conceptos en la documentación para ver cómo funcionan juntas las partes móviles en datmo.
Los documentos completos están alojados aquí. Si desea contribuir a los documentos (código fuente ubicado aquí en /docs
), siga el procedimiento descrito en CONTRIBUTING.md
.
Puede transformar su repositorio existente en un repositorio habilitado para datmo con el siguiente comando
$ datmo init
Si en algún momento desea eliminar datmo, puede simplemente eliminar el directorio .datmo
de su repositorio o puede ejecutar el siguiente comando
$ datmo cleanup
DESCARGO DE RESPONSABILIDAD: Actualmente, esta no es una opción compatible oficialmente y solo funciona para capas de almacenamiento basadas en archivos (según lo establecido en la configuración) como solución alternativa para compartir proyectos de datmo.
Aunque datmo está diseñado para rastrear cambios localmente, puede compartir un proyecto enviándolo a un servidor remoto haciendo lo siguiente (esto se muestra solo para git; si está utilizando otra herramienta de seguimiento SCM, probablemente pueda hacer algo similar). Si sus archivos son demasiado grandes o no se pueden agregar a SCM, es posible que esto no funcione para usted.
Lo siguiente se ha probado únicamente en terminales BASH. Si estás utilizando otro terminal, es posible que te encuentres con algunos errores.
$ git add -f .datmo/* # add in .datmo to your scm $ git commit -m "adding .datmo to tracking" # commit it to your scm $ git push # push to remote $ git push origin +refs/datmo/*:refs/datmo/* # push datmo refs to remote
Lo anterior le permitirá compartir resultados y entidades de datmo consigo mismo o con otras personas en otras máquinas. NOTA: deberá eliminar .datmo/ del seguimiento para comenzar a usar datmo en la otra máquina o en otra ubicación. Consulte las instrucciones a continuación para ver cómo replicarlo en otra ubicación.
$ git clone YOUR_REMOTE_URL $ cd YOUR_REPO $ echo '.datmo/*' > .git/info/exclude # include .datmo into your .git exclude $ git rm -r --cached .datmo # remove cached versions of .datmo from scm $ git commit -m "removed .datmo from tracking" # clean up your scm so datmo can work $ git pull origin +refs/datmo/*:refs/datmo/* # pull datmo refs from remote $ datmo init # This enables datmo in the new location. If you enter blanks, no project information will be updated
Si está interesado en compartir utilizando el protocolo datmo, puede visitar el sitio web de Datmo
P: ¿Qué hago si datmo stop --all
no funciona y no puedo iniciar un nuevo contenedor debido a la reasignación del puerto?
R: Esto podría deberse a un contenedor fantasma que se ejecuta desde otro proyecto datmo u otro contenedor. Puede crear una imagen de la ventana acoplable con una asignación de puerto específica (que no sea 8888), buscar la imagen de la ventana acoplable, detenerla y eliminarla usando docker ps --all
y docker conntainer stop <ID>
y docker container rm <ID>
. O puede detener y eliminar todas las imágenes que se ejecutan en la máquina [NOTA: Esto puede afectar otros procesos de Docker en su máquina, así que PROCEDA CON PRECAUCIÓN] docker container stop $(docker ps -a -q)
and docker container rm $(docker ps -a -q)