aprendizaje automatico pipeline

¿Está construyendo una canalización de aprendizaje automático? Esto es lo que necesita saber.

Automatice y replique sin reventar su arquitectura.

Es una de las preguntas eternas para cualquier campaña antes de una elección: ¿Quién es probable que se presente en las urnas?

Para el científico de datos Matthew Brems, tratar de responder esa pregunta dio lugar a otra, sobre uno de los desafíos más importantes en el aprendizaje automático : ¿Cómo puedo construir la canalización de aprendizaje automático más efectiva?

Antes de las elecciones presidenciales de 2016, Brems ayudó a construir un modelo de votante probable para una firma de consultoría. Se basó en dos tipos de conjuntos de datos: registro de votantes y datos de encuestas seleccionados de encuestas. La firma realizó encuestas varias veces por semana en diferentes estados del país para alimentar el componente de la encuesta.

El equipo de Brems también escribió un script para automatizar parte de la limpieza de esos datos de sondeo, que luego se compararon con los datos de registro, se dividieron en conjuntos de entrenamiento y prueba, y se usaron para adaptarse a múltiples modelos. Una vez que su equipo validó la mejor opción, el modelo podría implementarse para hacer predicciones para cualquier estado.

El proyecto llega al corazón de las canalizaciones de aprendizaje automático: automatización y reproducibilidad. ¿Qué pasos se pueden automatizar para ahorrar tiempo y recursos? Responder a la pregunta es más difícil de lo que parece.

“La automatización es realmente útil para las organizaciones, pero no está exenta de peligros”, dijo Brems, quien ahora trabaja como instructor de ciencia de datos en General Assembly .

En términos generales, los ingenieros de ML intentan evitar las trampas empleando los tipos de flujos de trabajo ágiles que migraron de DevOps y se arraigaron como MLOps.

“Piense en un enfoque esbelto: tener un progreso suficientemente bueno en la ingesta, el preprocesamiento, el modelado y la implementación, en lugar de ser perfecto en cada etapa”, dijo Joseph Nelson, cofundador de Roboflow y compañero instructor de ciencia de datos de la Asamblea General.

Entonces, ¿cómo se ve eso en la práctica? Le pedimos a cinco constructores expertos de canalización de datos que ofrecieran algunos consejos.

Prácticas recomendadas para crear una canalización de aprendizaje automático

  • Aclara tu concepto. Hacer esto bien puede ser más difícil que la implementación.
  • Asegúrese de que la recopilación de datos sea escalable. Una API puede ser una buena forma de hacerlo.
  • Asegúrese de que su entrada de datos sea consistente. Las entradas inesperadas pueden romper o confundir su modelo.
  • Esté atento a los cambios en sus datos de origen. Si su modelo depende de datos que no controla, realice verificaciones puntuales para asegurarse de que está midiendo lo que cree que es.
  • No reinventes la rueda. Alguien más probablemente construyó una buena base para su proyecto.
  • Despliegue rápido. Su modelo no está ayudando a nadie hasta que esté disponible.
  • A menos que los errores tengan graves consecuencias. Obviamente.

Definición de problemas y exploración de datos

Aclara tu concepto

tubería de aprendizaje automático arun nemaniArun Nemani, científico sénior de aprendizaje automático en Tempus : Para la construcción de la canalización de ML, el concepto es mucho más difícil de concretar que la implementación. Desde una perspectiva técnica, hay muchos marcos y herramientas de código abierto para habilitar las canalizaciones de ML: MLflow, Kubeflow. El mayor desafío es identificar qué requisitos desea para el marco, hoy y en el futuro.

Por ejemplo, ¿necesitamos tener servicios controlados por versiones, como DVC, integrados, o serán suficientes las carpetas con sellos de fecha e ID únicos? ¿Necesitamos una ingesta automatizada con servicios en la nube o podemos administrar el flujo de trabajo con scripts y cuadernos de Python en un solo servidor? Claramente, responder a las necesidades actuales y futuras aumentará en gran medida el valor.

Piense críticamente sobre las variables categóricas: mucho antes de modelar

Nemani : El mayor impacto para la solidez del modelo para las variables categóricas en realidad se encuentra antes de cualquier paso de modelado, durante la exploración de datos.

Haga preguntas como: ¿Cómo se obtuvo esa variable categórica? ¿Automáticamente o a través de la entrada de datos? ¿Cuántas entradas únicas hay en esa columna categórica en particular? Si son demasiados, ¿supondría esto un problema para el sobreajuste?

¿Deberíamos usar variables categóricas específicas? Por ejemplo, ¿deberíamos usar categorías como la raza del paciente para la atención médica? ¿Esto mejora o perjudica los modelos de LA equitativos? ¿Esa variable categórica en particular se mide antes o después de las variables de destino del aprendizaje automático? ¡La mayoría de las variables categóricas medidas después del objetivo serían un choque de trenes!

Ingestión y preprocesamiento

API para automatizar y escalar la recopilación de datos

tubería de aprendizaje automático de joseph nelsonJoseph Nelson es cofundador de Roboflow , que crea infraestructura de visión artificial. Por ejemplo, el usuario de Roboflow y graduado de General Assembly, Jamie Shaffer, construyó un modelo de detección de objetos que cuenta el salmón . Ella experimentó con varias opciones de preprocesamiento y aumento y entrenó un modelo YOLO v5 para rastrear poblaciones de peces.

Nelson : Si está construyendo un modelo para un nuevo dominio, una táctica común es obtener una cierta cantidad de imágenes de, en este caso, un pez, para comenzar a arrancar un modelo para aprender. Eso ayuda incluso si no es exactamente el mismo pez que existirá en sus condiciones de inferencia, si solo tengo algunos peces de agua dulce en lugar de salmón específico, en este ejemplo.

“Le corresponde a un equipo recopilar imágenes similares a las que vería en condiciones desplegadas”.

Corresponde a un equipo recopilar imágenes similares a las que vería en condiciones desplegadas. ¿Cómo puede recopilar nuevos datos de manera escalable, tanto para construir ese primer modelo como, lo que es más importante, para el monitoreo y la mejora continuos del modelo dado? Eso podría incluir la creación de una API para recopilar automáticamente imágenes de las cámaras donde sea que estén implementadas.

Esa pieza de ingestión de datos no es solo donde comienzan las cosas, sino que es increíblemente relevante para el rendimiento continuo y la mejora de un modelo.

Relacionado: 11 empresas de aprendizaje automático que preservan la privacidad que debe conocer

La consistencia de los datos es fundamental para la limpieza

Tubería de aprendizaje automático de Matthew BremsMatthew Brems, instructor principal de ciencia de datos en la Asamblea General : Pudimos automatizar el componente de limpieza de datos de nuestro modelo de votante porque todo tomó una forma similar: presione 1 para el candidato A, presione 2 para el candidato B, presione 9 para repetir la pregunta. Todo era lo suficientemente predecible para que cuando escribimos estos guiones, ya sea que las encuestas tuvieran 10 o 20 preguntas, siguieran un formato similar.

Pero si está trabajando con un conjunto de datos totalmente diferente todos los días, está limitado en la cantidad de automatización que puede hacer. La consistencia de los datos es bastante crítica para poder automatizar al menos la parte de limpieza.

Si obtiene datos de 20 fuentes diferentes que siempre están cambiando, se vuelve mucho más difícil. Su tubería se va a romper. Pero si los datos siguen un formato similar en una organización, eso a menudo presenta una oportunidad para la automatización.

Establecer cadencias

Brems : Las organizaciones deberían preguntar a sus equipos: “¿Hay algo que estés haciendo todos los días? ¿Cada semana? ¿Cada mes?» Comprenda en qué dedican su tiempo los empleados y vea si hay alguna forma de automatizarlo.

Cada vez que recopile nuevos datos que estén en un formato consistente, probablemente habrá alguna oportunidad para automatizar.

Toma sistemas de recomendación en plataformas de streaming. Constantemente obtienen datos y quieren ver a quién deberían enviar contenido nuevo. Tal vez todos los domingos, a las 5:00 p. m., se activa una canalización, que extrae automáticamente nueva información recopilada durante la última semana. Luego reajustan sus modelos de clasificación o sistemas de recomendación con la información más actualizada y actualizada.

O tome la previsión del valor del cliente de por vida. ¿Cuál es el valor total de un cliente durante los próximos, digamos, 24 meses? A medida que las personas continúan comprando nuevos productos, vuelva a ejecutar el modelo con toda la información que reunimos durante el último mes o semana.

Si algo sucede con cierta cadencia, si una organización dice: «Queremos poder actualizar nuestros modelos una vez a la semana, una vez al mes, una vez al trimestre, una vez al año», las canalizaciones pueden ser útiles para hacerlo. Especialmente si se trata de una cadencia predecible, cuanto más pueda automatizar ese proceso, mejor.

Relacionado: Una propuesta para democratizar la IA

Ingeniería de características y tiendas

Automatice la ingeniería de funciones cuando sea posible y las pruebas unitarias…

Brems : la ingeniería de características, en términos generales, es cuando tiene columnas o variables en su conjunto de datos que necesita [transformar en] otras nuevas. Se necesita experiencia en la materia, y es donde muchas organizaciones encontrarán valor en sus datos.

Si está trabajando con conjuntos de datos similares, es algo que puede automatizar en gran medida. En la predicción de abandono, por ejemplo, la definición de abandono de una organización en realidad no cambia. Lo defines como alguien que no ha realizado una compra en los últimos X meses, crea una línea en Python o R y dale un uno si se ha batido o cero si no. Del mismo modo, la definición de votante probable no cambia. Eso se convierte en una sola línea de código en su secuencia de comandos que agrega para cada nueva función que desea diseñar.

canalización de aprendizaje automático virgile landeiroVirgile Landeiro, científico de datos de Tempus : Las pruebas unitarias deberían al menos validar los pasos de procesamiento de características y los pasos de división de datos, e idealmente también los resultados de su modelo.

Las pruebas unitarias sobre el procesamiento de características y los divisores de datos ayudan a garantizar que no esté filtrando información de su entrenamiento a su conjunto de datos de prueba. Esto es vital para asegurarse de que su modelo funcione bien en datos no vistos. Sin pruebas unitarias, es posible que se dé cuenta de que está filtrando información solo unos meses antes del lanzamiento del producto, y tendrá que volver a entrenar su modelo y revisar el rendimiento nuevamente. En el peor de los casos, la fuga de información no se detectará y su modelo servido tendrá un rendimiento deficiente en datos no vistos.

… Pero sea intencional sobre la extracción de características

Brems : la extracción de características describe un amplio grupo de métodos estadísticos para reducir la cantidad de variables en un modelo y al mismo tiempo obtener la mejor información disponible de todas las diferentes variables. Si ajusta un modelo con 1000 variables frente a un modelo con 10 variables, ese modelo de 10 variables funcionará significativamente más rápido.

La extracción de características es algo que la gente puede automatizar, si siempre sabe, por ejemplo, «Oye, solo quiero 10 variables en mi modelo». Puede aplicar algoritmos de extracción de características como un tipo de transformador que preprocesa sus datos antes de ajustar un modelo a esos datos y comenzar a generar predicciones a partir de ellos.

No recomiendo la extracción de características para todas las organizaciones. Si una empresa tiene el poder de cómputo o suficientes datos, es posible que la extracción de características no sea adecuada para ellos. Pero puede tener muchos beneficios. Va a ser muy caso por caso.

Sin experiencia en la materia y sin saber que la extracción tiende a funcionar muy bien en sus datos, probablemente será más puntual y es posible que no desee automatizar necesariamente esa parte del proceso.

Experimente, luego codifique

Nelson : Cuando se trata de preprocesamiento, hay experimentación y codificación.

La experimentación significa explorar diferentes formas de facilitar que los científicos de datos prueben diferentes pasos de preprocesamiento. Luego, una vez que encuentre lo que funciona bien, ¿cómo codificamos esos pasos?

Ahora está viendo que las organizaciones crean cosas como tiendas de características: el producto interno de Uber, Michelangelo, por ejemplo, ayuda a los científicos de datos a no reinventar la rueda de qué características funcionan mejor. Si, por ejemplo, un equipo de fijación de precios en Washington, DC, encuentra que es útil aumentar la fijación de precios en un momento y lugar específicos, el equipo puede usar ese mismo conjunto de atributos de preprocesamiento sin tener que experimentar innecesariamente.

Pinterest creó un producto interno para preprocesar imágenes de manera repetible, que fue la inspiración para Roboflow. El objetivo es facilitar que los equipos de visión por computadora tengan tiendas de funciones, por así decirlo, probando diferentes funciones en un solo conjunto de imágenes. Porque si funcionó bien para la identificación en un [entorno], los mismos pasos pueden funcionar bien en otro.

Relacionado: 19 herramientas de modelado de datos que debe conocer

Cuidado con los cambios en los datos de origen

Brems : Si sus datos de origen cambian, eso puede causar grandes problemas. En nuestra instancia de modelo de votante probable, obtuvimos datos de los 50 secretarios de estado diferentes de todo el país. Entonces, si alguno de ellos cambiara sus datos, el procedimiento de automatización que habíamos implementado se rompería, porque la información no estaría yendo en el espacio correcto. El peor escenario es si cambian las columnas, pero se ve similar. Puede que ni siquiera te des cuenta.

Si estuviera trabajando para una organización que quisiera automatizar la limpieza de algunos datos, es muy importante realizar verificaciones automáticas y manuales de los datos.

Por ejemplo, construimos una serie de modelos que se centraron en Iowa. Nos estábamos preparando para enviarlo al cliente. Y sin que nosotros lo supiéramos, los datos que nos habían enviado eran para Ohio, no para Iowa, y nuestro sistema no los detectó. Si se lo hubiéramos enviado al cliente, se habría visto mal. Así que tenga cuidado con esos cambios de datos, asegúrese de que haya comprobaciones, como estadísticas de resumen y algunas comprobaciones manuales. Eso puede ser de muy baja tecnología, como verificar 10 filas de datos en una hoja de cálculo para asegurarse de que coincidan con lo que se espera.

Eso ayuda a proteger contra los cambios en los datos de origen, que son inevitables. Eso va a pasar.

canalización de aprendizaje automático de andrew candelaAndrew Candela, Ingeniero de Lambda School : Usamos dbt en Lambda School. Eso tiene una funcionalidad de prueba incorporada. En ETL, a veces una clave que espera que sea una clave principal termina con alguna duplicación en una de las tablas posteriores. De repente, estás entrenando con datos desordenados.

Dbt es útil porque puede configurar pruebas automáticas para verificar la unicidad de una clave principal o verificar que un campo nunca sea nulo. Ese es el tipo de cosas que nos molestarían todo el tiempo en [mi rol anterior]. Tal vez algún ingeniero de producto decida cambiar el nombre de un tipo de evento y, de repente, obtenga todos los valores nulos para [un campo]. Necesita herramientas que lo ayuden a controlar la calidad e inspeccionar los datos.

Comparación de modelos

Para el control de versiones de datos, comience simple

Landeiro : Un esquema simple de nombres de carpetas y archivos puede ser de gran ayuda para compartir datos dentro de un equipo pequeño y garantizar que podrá volver a ejecutar modelos en datos antiguos en un par de meses, y que está realizando un seguimiento. de cambios en sus datos. Puede considerar el uso de herramientas de control de versiones de datos si sus versiones se salen de control. Algunas herramientas de código abierto, como DVC, ofrecen mucha más flexibilidad cuando se trata de versiones de datos, pero también conllevan una curva de aprendizaje que podría no valer la pena para pequeños equipos de ciencia de datos.

Para orquestación, considere características y flexibilidad

Landeiro : He usado MLflow (solo de código abierto) en el pasado para el seguimiento de experimentos y pensé que era una gran herramienta. Con solo agregar unas pocas líneas a su código, puede realizar un seguimiento de las métricas, los parámetros y los artefactos, como las imágenes. Para que pueda seguir fácilmente sus mejores modelos y compartir una tabla de clasificación al estilo de Kaggle con su equipo.

He disfrutado usando Metaflow. Netflix lo abrió en 2019 y proporciona características similares a MLflow Tracking para usuarios que no necesitan una GUI. Proporciona administración de dependencias a través de Conda, abstracciones para organizar su investigación (etiquetas y espacios de usuario) y se integra con AWS para almacenar automáticamente sus resultados y escalar sus trabajos en AWS Batch. Una desventaja de Metaflow, por ahora, es que solo es compatible con AWS.

La elección es una cuestión de características proporcionadas (seguimiento de experimentos, versiones de datos, GUI), compatibilidad con la nube y si es fácilmente extensible o no.

Nemani : para los hiperparámetros, scikit-optimize proporciona un reemplazo directo para los objetos de búsqueda de scikit-learn, como GridSearchCV, que implementa la optimización bayesiana. Las arquitecturas de redes neuronales son un poco más desafiantes para encontrar parámetros óptimos; sin embargo, hay algunas herramientas disponibles, como Keras Tuner, para aprender a ajustar hiperparámetros «automatizados».

canalización de aprendizaje automático de producción de selección de modelos
Imagen: Shutterstock

Selección y producción de modelos

Adáptese, no construya desde cero

Nelson : Los investigadores están creando arquitecturas modelo de código abierto que funcionan excepcionalmente bien para varios dominios diferentes. Hay una broma de que todo lo que es Kaggle es XGBoost, porque ha ganado la mayoría de las competencias: si estás haciendo Kaggle, solo toma un modelo XGBoost.

Al resolver problemas de imagen, como la detección de objetos, probablemente elija algo de la familia de modelos YOLO. O en texto, un transformador basado en BERT.

A menudo, al modelar, es mejor comenzar desde un lugar donde los investigadores han presentado una arquitectura de vanguardia y luego ajustar los datos y las partes del modelo a su dominio. En otras palabras, en lugar de pensar que debe crear un modelo desde cero, por lo general, lo mejor que puede hacer es comenzar con una arquitectura de modelo de código abierto existente, obtener un nivel básico de rendimiento y luego ajustar tanto los datos como los elementos. de ese modelo a su dominio.

Landeiro : Gran parte del código que usamos es de código abierto. Existen excelentes paquetes de Python, sin importar cuán compleja sea su canalización. Algunos son Luigi, Snakemake, Metaflow, Prefect. Si necesita escribir código personalizado, estos paquetes a menudo se escriben de forma modular que lo permite.

Desplegar, Desplegar, Desplegar…

Nelson : El aprendizaje automático, especialmente en las grandes empresas, está siendo empujado por el camino equivocado. ML es un juego de salida probabilística: es probable que nunca vea el 100 por ciento [efectividad], y siempre podrá mejorar su modelo. Eso es realmente difícil de entender para las empresas tradicionales. Dejar que lo perfecto sea enemigo de lo bueno es muy fácil, porque el modelo siempre puede ser mejor.

“Dejar que lo perfecto sea enemigo de lo bueno es muy fácil, porque el modelo siempre puede ser mejor”.

El error consiste en no implementar lo suficientemente temprano, diciendo: «Siempre podríamos probar con otro modelo» o «Siempre podríamos pensar en hacer inferencias más rápido». Obtenga un modelo inicial, al mismo tiempo que tiene formas de manejar los casos de error y mejorar el rendimiento del modelo. Piense en menos cascada y más desarrollo ágil y esbelto.

Incluso si un modelo solo puede admitir solo 10 inferencias por segundo, está bien. Cree colas y libere solo a algunos usuarios. De esa manera, puede acortar el ciclo de vida de producción a un solo trimestre. Para el segundo trimestre, tendrá un flujo de datos de sus condiciones implementadas. Eso es lo que están haciendo los buenos equipos de ML.

Candela : Las necesidades del negocio, el comportamiento del cliente y los propios datos cambian constantemente. Si espera implementar un modelo y luego hacer que funcione en producción sin cambios durante más de un mes a la vez, entonces tiene suerte de existir en una industria muy estática.

… A menos que hacerlo bien sea una cuestión de vida o muerte

Nemani : Es crucial determinar el problema comercial que está resolviendo y si la implementación frecuente satisface esa necesidad. Si está creando un motor de recomendaciones para la entrega de contenido, puede ser útil implementarlo rápidamente, recopilar información de producción sobre modos de falla y ajustar nuevos modelos. En Tempus, sin embargo, estamos resolviendo modelos de enfermedades en oncología y enfermedades cardiovasculares que pueden afectar la mortalidad de los pacientes. En ese escenario, el tema es más largo sobre la implementación frecuente, sino más bien sobre cómo asegurarse de que los modelos sean sólidos antes de la implementación.

Relacionado: ¿Debería comprar una plataforma comercial de aprendizaje automático o construir internamente?