¿Cómo gestionar modelos de aprendizaje automático? ¿Cómo realiza un seguimiento de los modelos de aprendizaje automático mientras los itera? ¿Cómo se compara el rendimiento de diferentes modelos / conjuntos de datos? ¿Cuáles son algunos puntos débiles en su flujo de trabajo?

Como resultado, hay una gran cantidad de personas que tienden a perder mucho trabajo mientras trabajan en el aprendizaje automático debido a la falta de un buen seguimiento al iterar. Enfrentamos el mismo problema todo el tiempo en la escuela de posgrado y en la industria. Solíamos hacer un seguimiento de nuestro trabajo usando una combinación de archivos / carpetas, hojas de cálculo de Google y notas cuidadosas, y descubrimos que el mayor problema era el tiempo que tomaba anotar todo. Esto nos impidió llegar al trabajo que más importaba, iterar. Como nos enfrentamos a esto una y otra vez, decidimos construir una CLI y una GUI para administrar este proceso, que básicamente se encargó de eso y nos permitió seguir iterando en lugar de preocuparnos por anotar todo.

En particular, cuando trabajamos en el aprendizaje automático, tenemos que rastrear los siguientes componentes a intervalos frecuentes

Entradas:

  • Conjunto de datos
  • Código
  • Entornos de tiempo de ejecución
  • Configuraciones de entrada / hiperparámetros
  • Varios archivos de entrada (por ejemplo, un archivo de pesos anterior que estamos construyendo encima o cualquier otro archivo)

Salidas

  • pesos / representación de su modelo
  • estadísticas o métricas de rendimiento
  • Varios archivos de salida

Al rastrear los componentes anteriores a intervalos frecuentes, podemos ver cómo formamos un modelo y qué métricas tenemos para definirlo. Con Datmo, puede realizar un seguimiento de los componentes anteriores a través del concepto de una instantánea de su modelo, que puede usar para comparar con otras instantáneas para ver cómo se desempeñaron e incluso volver a las instantáneas anteriores a tiempo para que luego pueda continuar iterar desde el punto anterior en el tiempo.

Honestamente, creamos Datmo porque estábamos teniendo los mismos problemas con el seguimiento de nuestros propios modelos de aprendizaje automático y reconocimos que en ese momento no había una buena manera de hacer un seguimiento de nuestro trabajo. Por supuesto, dado que también utilizamos Git para el control de origen de nuestro código, decidimos construir algo que se integra con Git y no interrumpe los flujos de trabajo actuales, sino que funciona dentro de ellos. Por ejemplo, si tiene un repositorio actual en el que está trabajando, puede comenzar a rastrear instantáneas simplemente haciendo lo siguiente dentro de su repositorio

  1. Inicialice un modelo de datmo con el siguiente comando (usando la CLI de Datmo)

datmo init

  1. Agregue un Dockerfile (o use una plantilla)
  2. Cambia la ubicación de donde guardas tus archivos en tu código

Puede encontrar instrucciones más detalladas aquí sobre cómo convertir su repositorio.

Una vez que tenga un modelo Datmo, obtendrá automáticamente el seguimiento de instantáneas y las reversiones para que nunca tenga que preocuparse por sobrescribir archivos de pesos, renombrar archivos constantemente y seguir el seguimiento de las configuraciones y métricas en las hojas de cálculo.

Si está interesado en usar la versión beta, no dude en enviarme un mensaje de ping en FB o Twitter para obtener el código de invitación.

Espero que esto ayude 🙂

¡También me encantaría saber más sobre el sistema de gestión de modelos de código abierto que está creando! Estoy seguro de que hay más de una forma de romper este huevo.

Se garantiza que la gestión de experimentos en investigación será un proceso complicado si no lo piensa de antemano. Por “experimento” me referiré a un par “modelo + conjunto de datos” donde el modelo incluye todos los hiperparámetros y configuraciones que afectan el resultado.

Una cosa que ayuda a hacer un seguimiento de muchas cosas es realizar experimentos a través de una superficie unificada. En mi caso, es una clase especial que recibe la configuración (cargador de datos y una clase de modelo que mantiene todos los hiperparámetros dentro) y algunas configuraciones específicas de rutina, como una serie de pasos para ejecutar.

El ciclo de vida de un experimento se ve así:

  1. Carga de datos
  2. Entrenamiento con la escritura de registros en una carpeta específica del experimento (para que no haya confusión sobre lo que vino de dónde)
  3. Modelo de serialización
  4. Reporte

Como cada experimento vive en su propio directorio, creo un método que almacena una descripción de texto de un modelo (generado) y un archivo con todos los hiperparámetros (que es solo un diccionario, por lo tanto, cuando quiero volver a reproducir algo, no es un problema )

Un conjunto de datos se procesa solo una vez (o, al menos, una vez para cada serie, no me meto con los datos durante el entrenamiento y entre los experimentos, es muy fácil romper algo sin siquiera notarlo). Una interfaz uniforme para cada conjunto de datos, con todas las transformaciones probadas y ocultas, hará que todo sea más claro y menos propenso a errores.

Otro pequeño truco es almacenar un archivo separado con métricas de prueba de entrenamiento: de esta manera, cuando desee hacer algunos gráficos, puede obtener una lista de directorios que contienen los modelos que le interesan y pasarlos a un pequeño método que lea esos archivos y agrega todo en un solo gráfico.

Este tipo de configuración nació de una simple observación: no recuerdas al día siguiente en qué estabas pensando cuando escribías ese guión de entrenamiento. Entonces, hay dos reglas:

  1. Escribe todo
  2. Hacer que la computadora escriba todo

Esto se trata principalmente de la claridad y la reproducibilidad. No tengo muchos modelos para ejecutar, así que no me molesto con la automatización. Si lo hace o si desea escribir todos los modelos, póngalos en una fila y vaya a ver Netflix, puede llevarlo un poco más allá y aún así estar bien, siempre que haya guardado todo lo que necesitaba para guardar.

Una razón por la cual algunas personas consideran doloroso un artículo es que, cuando obtienen los resultados, todavía necesitan recordar lo que hicieron para producirlos. Si toma algunas medidas simples para evitar esto, disfrutará mucho más del proceso.

Una forma de hacerlo es utilizando la herramienta de experiencia de ciencia de datos de IBM.

Obtenga más información en https://datascience.ibm.com

Una herramienta ordenada de código abierto que he encontrado que es muy útil para rastrear modelos ML es modelDB: ModelDB by mitdbg

Además, otra consideración al administrar un modelo de aprendizaje automático debería ser: ¿Con qué frecuencia se debe actualizar un modelo? Es necesario actualizar un modelo si sus datos no son estacionarios o si los datos sobre los que se construyó el modelo están cambiando. Depende mucho de qué tan rápido necesite que sus nuevos ejemplos de capacitación formen parte de su modelo. Además, depende de si los nuevos ejemplos de capacitación son más relevantes que los ejemplos anteriores, o ¿cuándo pierden su relevancia los ejemplos anteriores?

More Interesting

¿Dónde puedo leer estudios y documentos sobre inteligencia artificial?

¿Debería avergonzarme de no ser capaz de pensar como grandes mentes como Einstein y John Von Neumann?

¿Por qué todo lo relacionado con la memoria de la computadora es divisible por 8?

¿Cuál es la diferencia entre la tecnología SAP hana y el Hadoop de Cloudera?

¿Cómo se mantiene rápido Internet, a pesar de la creciente cantidad de información?

¿Por qué + y + = se comportan de manera diferente para las listas de Python?

¿Cuál es la mejor fuente de ejemplos exitosos de productos de arquitectura de la vida real, por ejemplo, definiciones de sistemas, diagramas UML, procesos de negocios?

¿Qué es el almacenamiento?

¿Qué tan bueno es el Master of Science en ciencia de datos en línea de SMU? ¿Ayuda hacer una carrera en ciencias de datos o ayudar a mejorarlo?

¿Cuáles son los pros y los contras de ir a la UC Santa Cruz para la informática? ¿Cómo pesa UCSC en comparación con otras universidades en términos de CS y empleo después de la universidad?

¿Cuál es la magia detrás de los microchips? ¿Cómo pueden los impulsos eléctricos simples hacer tantas cosas? ¿Cuáles son los fundamentos detrás de esto?

¿Por qué uno usaría máquinas de Turing Multi-cinta?

¿Cuáles son las diferencias entre una computadora en clúster y un sistema distribuido?

¿Pueden las computadoras tener dos CPU? Si no, ¿por qué?

AI / Machine Learning ha existido durante muchos años, ¿cómo es que de repente se ha convertido en un tema tan candente?