Qué hemos aprendido del seguimiento de experimentos de aprendizaje automático con ClearML
Coescrito por Tien Duc Cao, ingeniero sénior de aprendizaje automático de Dashlane y Quentin Grail, ingeniero de aprendizaje automático de Dashlane
En Dashlane trabajamos en varios proyectos experimentales que implican aplicaciones de aprendizaje automático (ML). Para administrar experimentos, usamos ClearML, un marco de MLOps de código abierto que nos permite organizar mejor todos nuestros experimentos de aprendizaje automático.
Al ejecutar canalizaciones de ML, hay tres pasos cruciales para crear una aplicación exitosa:
- Administración de datos: planeamos entrenar muchos modelos en diferentes conjuntos de datos y diferentes versiones del mismo conjunto de datos. También probaremos nuestro modelo en un conjunto de datos diferente. Para lograr esto, necesitamos una organización clara de todos los datos donde podamos enumerar, visualizar y recuperar la información de la forma más eficiente posible.
- Seguimiento de experimentos: queremos poder supervisar los resultados de los experimentos, visualizarlos y comparar el rendimiento entre las ejecuciones.
- Almacenamiento de modelos: una vez que hemos seleccionado el mejor modelo para nuestra tarea o decidido cambiar a uno diferente, queremos recuperar fácilmente sus parámetros para ponerlos en nuestro canal de producción.
ClearML nos ayuda a realizar estas tres tareas sin problemas.
Las funciones de ClearML que encontramos útiles
Tres funciones se destacan del resto:
- Integración con Git: al lanzar una nueva tarea, ClearML registra automáticamente el commitID, junto con los cambios no comprometidos del repositorio. Esto es muy útil para la reproducibilidad del experimento y la iteración en una ejecución exitosa.
- Supervisión de recursos: la utilización y la memoria de la GPU y la CPU se rastrean en las métricas. Esto nos permite sacar el máximo provecho de nuestro hardware al optimizar los hiperparámetros del modelo específicamente para la GPU disponible. Además, nos ayuda a rastrear los posibles cuellos de botella del canal que deben mejorarse.
- Seguimiento de hiperparámetros: ClearML captura automáticamente todos los argumentos que damos al script (a través de argparse, por ejemplo). Luego, se puede filtrar y comparar fácilmente el impacto de estos parámetros.
ClearML 101
Para ayudarle a comenzar con ClearML, aquí va cierta terminología importante:
- Tarea: usamos tareas de ClearML para realizar un seguimiento de los scripts de Python (o incluso los cuadernos de Jupyter). Hay muchos tipos de tareas compatibles.
- Artefacto: usamos artefactos de ClearML para almacenar entradas y/o salidas de tareas.
- Etiqueta: cada ClearML se puede asociar con una o más etiquetas, que son palabras clave descriptivas que le ayudan a filtrar sus tareas.
Integración de ClearML
La integración de ClearML en su proyecto existente es realmente simple.
La configuración solo debe hacerse una vez estableciendo estas tres variables de entorno:
También puede definir estas variables en sus opciones de CI/CD si desea ejecutar sus canalizaciones de entrenamiento a través de canalizaciones de GitHub o GitLab.
Para integrar ClearML, solo necesita agregar estas líneas de código al comienzo de su script de Python:
- PROJECT_NAME: ponga tareas similares, por ejemplo, entrenar una arquitectura de modelo con diferentes parámetros, en el mismo proyecto.
- TASK_NAME: en una oración (corta), describa el propósito de su script de Python.
- TAGS: agregue su lista de etiquetas. Por ejemplo, «model-cnn,exp-data-augmentation».
- DESCRIPTION: dé explicaciones detalladas de su experimento.
El progreso del entrenamiento de su modelo, por ejemplo, la pérdida de formación, la pérdida de validación y mucho más, se rastrean automáticamente si usa uno de estos marcos de Python.
Si desea rastrear las métricas de un modelo manualmente, como la puntuación de F1 en el conjunto de pruebas, puede hacerlo con una línea de código:
Cómo organizamos los experimentos
ClearML ofrece algunos mecanismos útiles para organizar mejor nuestros experimentos de ML.
- Subproyectos: por ejemplo, podría crear «X/models» para realizar un seguimiento de todas sus tareas de entrenamiento y crear «X/datasets» para almacenar diferentes conjuntos de datos de entrenamiento. Estos dos subproyectos se almacenan en el proyecto «X».
- Etiquetas: estas palabras clave cortas describen el propósito de sus experimentos. Son útiles para agrupar todos los experimentos similares. Como no hay restricción para los nombres de etiquetas, depende de usted determinar las convenciones de nombres que hacen que estas etiquetas sean más manejables para buscar y organizar sus experimentos. Definimos algunos prefijos simples:
- «Model-» para las tareas que entrenan modelos de ML
- «data-» para las tareas que realizan la ingestión/procesamiento de datos
- «exp-» para las tareas que experimentan con algunas nuevas ideas
Cómo usamos los artefactos para realizar un seguimiento de los datos y modelos
Puede guardar un objeto como un artefacto de ClearML con una sola línea de código. Más tarde puede acceder a este artefacto 1) descargando manualmente el objeto guardado desde la interfaz web al mirar los detalles de su tarea o 2) recuperando cualquier trabajo directamente dentro de su código y usando el artefacto en otro experimento.
Usamos principalmente artefactos para tres aplicaciones diferentes en Dashlane:
- Para almacenar los conjuntos de datos: registramos y etiquetamos nuestros conjuntos de datos de entrenamiento y pruebas como artefactos para que todos los demás trabajos puedan acceder a ellos. Sabemos fácilmente qué versión de los datos se ha usado para cada trabajo. Más tarde podemos filtrar los experimentos entrenando datos o comparando los resultados en un conjunto de datos concreto.
- Para almacenar los modelos entrenados: siempre guardamos el modelo entrenado para poder descargarlo más tarde para evaluarlo en un nuevo conjunto de datos o usarlo en otra aplicación.
- Para analizar las salidas de modelos: al evaluar un modelo registrado en un conjunto de datos registrado, también guardamos las predicciones del modelo como un artefacto. Luego, podemos descargar localmente las predicciones y comenzar a analizar los resultados.
Consejos de ClearML
- No hay diferencia entre lanzar su script de Python en su propia máquina o en una máquina remota. Por lo tanto, para evitar posibles problemas, podría:
- Configurar una variable de entorno que le diga a su script de entrenamiento que use solo una pequeña parte de los datos de entrenamiento y entrenar solo con una época. Esto le ayuda a detectar posibles errores de su código al tiempo que mantiene la entrada/salida de cada experimento ingresada en los experimentos de ClearML.
- Lanzar el proceso de entrenamiento real con todos los datos disponibles en una máquina remota después de solucionar todos los problemas en el paso anterior.
- ClearML rastrea los cambios no comprometidos para poder iterar algunas nuevas ideas rápidamente sin crear demasiados compromisos pequeños.
ClearML nos ayudó en Dashlane a organizar mejor los experimentos de ML para poder ofrecer modelos de ML más fiables a los usuarios de Dashlane. Tal vez también pueda ayudar a su organización.
En Dashlane nos ocupamos de varios proyectos relacionados con el aprendizaje automático, incluido nuestro motor de llenado automático presentado aquí. También experimentamos con nuevas funciones impulsadas internamente por aprendizaje automático. Al entrenar y seleccionar los mejores modelos de forma eficiente, podemos ofrecer una mejor experiencia de producto a nuestros clientes. ClearML nos ayuda a organizar mejor los experimentos de ML para poder ofrecer modelos de ML más fiables.
Regístrese para recibir noticias y actualizaciones acerca de Dashlane