sql >> Base de Datos >  >> NoSQL >> HBase

Creación de un estándar abierto:gobernanza del aprendizaje automático con Apache Atlas

El aprendizaje automático (ML) se ha convertido en una de las capacidades más críticas para que las empresas modernas crezcan y sigan siendo competitivas en la actualidad. Desde la automatización de procesos internos hasta la optimización de los procesos de diseño, creación y marketing detrás de prácticamente todos los productos consumidos, los modelos de ML han permeado casi todos los aspectos de nuestro trabajo y vida personal, y para las empresas, lo que está en juego nunca ha sido tan alto. Si no se adopta ML como una competencia central, se generarán importantes desventajas competitivas que definirán a los próximos líderes del mercado.

Debido a esto, los líderes empresariales y tecnológicos deben implementar modelos ML en toda su organización, que abarque un amplio espectro de casos de uso. Sin embargo, este sentido de urgencia, combinado con el creciente escrutinio regulatorio, crea desafíos de gobernanza nuevos y únicos que actualmente son difíciles de manejar. Por ejemplo:¿Cómo afectan mis modelos a los servicios prestados a los clientes finales? ¿Sigo cumpliendo con las regulaciones gubernamentales e internas? ¿Cómo se traducirán mis reglas de seguridad en modelos en producción?

Más allá de las preocupaciones regulatorias o legales, hay una serie de razones para tener procesos y procedimientos de gobernanza para el aprendizaje automático. Los ejemplos incluyen formas de aumentar la productividad (como reutilizar activos como modelos y funciones), controlar y mantener modelos en muchas líneas comerciales diferentes para garantizar que las aplicaciones críticas para el negocio estén haciendo lo que deberían hacer (o encontrar aquellas que no). y ver un historial de modelos y predicciones, incluidos los activos obsoletos.

Al abordar estos desafíos, vale la pena definir qué modelos y características son conceptualmente (ver Figura 1). Existen muchas definiciones diferentes, pero, en general, un modelo es cualquier paquete autónomo que toma características calculadas a partir de datos de entrada y produce una predicción (o puntuación) y metadatos. Este paquete puede tomar muchas formas pero siempre incluye una representación matemática, código, lógica comercial y datos de entrenamiento. Los sistemas o usuarios consumen las predicciones del modelo en sentido descendente.

Muchas empresas operan la infraestructura del modelo ML en diferentes tamaños y madurez, por lo que requieren herramientas que les ayuden a gobernar sus modelos. En última instancia, las necesidades de gobernanza de ML se pueden resumir en las siguientes áreas clave:visibilidad; y modelar la explicabilidad, interpretabilidad y reproducibilidad.

Figura 1

Visibilidad de modelos y funciones dentro de los equipos y en todas las organizaciones

Un requisito básico para la gobernanza de modelos es permitir que los equipos entiendan cómo se aplica el aprendizaje automático en sus organizaciones. Esto requiere un catálogo canónico de modelos y características. En ausencia de un catálogo de este tipo, muchas organizaciones desconocen sus modelos y características, dónde se implementan, qué están haciendo, etc. Esto conduce a la repetición del trabajo, la inconsistencia del modelo, las características de recálculo y otras ineficiencias.

Explicabilidad, interpretabilidad y reproducibilidad del modelo

Los modelos a menudo se ven como una caja negra:entran datos, sucede algo y sale una predicción. Esta falta de transparencia es un desafío en varios niveles y, a menudo, se representa en términos vagamente relacionados, como:

  • Explicabilidad :descripción de la mecánica interna de un modelo ML en términos humanos
  • Interpretabilidad :la capacidad de a) comprender la relación entre las entradas, características y salidas del modelo, y b) predecir la respuesta a los cambios en las entradas.
  • Reproducibilidad :la capacidad de reproducir la salida de un modelo de manera consistente para las mismas entradas.

Todos estos requieren una funcionalidad común que incluye un vínculo con los datos de origen, una comprensión clara de las partes internas de los modelos, como el código y los datos de entrenamiento, y otros métodos para sondear y analizar los propios modelos.

Modelar metadatos con un ejemplo

Para abordar los problemas de gobernanza definidos anteriormente, comencemos pensando en un ejemplo. Considere la posibilidad de un sitio web de entrega de alimentos. La empresa quiere aprovechar el aprendizaje automático para estimar el tiempo de entrega.

El conjunto de datos de entrenamiento consta de los registros de eventos de entregas anteriores, que contienen los tiempos de entrega de cada entrega realizada en el pasado. Estos datos se utilizan para entrenar un modelo para estimar tiempos de entrega futuros.

Un registro de eventos podría verse así:

Se hizo un pedido a las 10:00 a.m. para que la comida se recogiera en loc1 y se entregara en loc2. El mensajero lo recogió en el restaurante a las 10:15 a. m. y lo entregó a las 10:55 a. m., tardando un total de 55 minutos desde que se hizo el pedido hasta la entrega

Suponga que loc1 y loc2 son direcciones de calles. Esto se abrevia aquí para que sea breve y fácil de leer.

Los registros de eventos se almacenan en HBase. La arquitectura de ingeniería para el desarrollo del modelo es la siguiente:

  1. Los ingenieros de datos identifican la ventana de tiempo de los registros de eventos que se utilizarán para resolver el problema. Se crea una nueva tabla de Hive estructurada analizando los registros de eventos sin procesar con la ventana de tiempo identificada.
  2. Los ingenieros de funciones (este podría ser un rol dentro de los científicos de datos o ingenieros de ML) identifican y desarrollan nuevas funciones:
    • Función de hora pico:una función para identificar si existen condiciones de hora pico dada una ubicación y una hora.
    • Función de "ocupación" del restaurante:una función para identificar si un restaurante determinado está experimentando tiempos de espera altos según los datos históricos. Estos datos históricos se recopilan por separado.
  3. Las funciones identificadas anteriormente se construyen como una biblioteca de Python para su reutilización.
  4. Esta biblioteca se usa para aplicar la función a la tabla estructurada de Hive para crear una nueva tabla que será el conjunto de datos de entrenamiento final. Una fila en la nueva tabla se ve así:

    Suponga que loc1 y loc2 son direcciones de calles. Esto se abrevia aquí para que sea breve y fácil de leer.

  5. Los científicos de datos ejecutan una regresión lineal en el conjunto de datos de entrenamiento para predecir el tiempo de entrega. En este punto, tienen que usar la misma biblioteca de funciones que se utilizó para extraer las funciones en el conjunto de datos de entrenamiento.
  6. El modelo se implementa como un punto final de función como servicio (FaaS) utilizado por la aplicación web para predecir el tiempo de entrega.

Tenga en cuenta que el modelo necesita calcular las características para la predicción en tiempo real. Estas funciones son bibliotecas que el modelo utiliza internamente. Una visualización de las diversas actividades realizadas y los artefactos generados en este ejemplo podría verse así:

Los cuadros azules representan entidades de ML (sustantivos) como un código, proyecto, compilaciones, implementaciones, etc. Los cuadros verdes representan procesos (verbos) que actúan sobre entidades y producen otras entidades.

La visualización y las relaciones que definen las transformaciones en la estructura de los datos se denominan colectivamente como linaje . En el mundo de las bases de datos, agregar una nueva columna a una tabla modificará su linaje. En el mundo del aprendizaje automático, volver a entrenar un modelo mediante el consumo de funciones y conjuntos de datos modificará el linaje. Para el sitio web de entrega de alimentos, para responder a la pregunta:"¿hay alguna diferencia entre la extracción de funciones durante el entrenamiento y la puntuación?", necesitamos la información de linaje. Este es solo un ejemplo de la utilidad de los metadatos de linaje en el mundo del aprendizaje automático.

Apache Atlas como herramienta de gobierno

Es evidente que la creación de un linaje completo de extremo a extremo para los flujos de trabajo de ML, desde conjuntos de datos de entrenamiento hasta implementaciones de modelos, se convierte en un requisito clave para abordar los problemas de gobernanza identificados. La integración de la gestión de datos y el aprendizaje automático debe permitir la explicabilidad, la interpretabilidad y la reproducibilidad.

La recopilación, el almacenamiento y la visualización de metadatos de ML necesitan un sistema de software de back-end estándar. Una definición de metadatos abierta y ampliable permitirá la estandarización de las operaciones de gobernanza independientemente de dónde se desarrollen o sirvan los modelos. El candidato obvio para Cloudera (y nuestros clientes) es Apache Atlas.

Apache Atlas ya es un conjunto de herramientas de gobierno ampliamente utilizadas con tipos de metadatos predefinidos para la gestión de datos. En el contexto del gobierno de ML, es muy adecuado para definir y capturar los metadatos necesarios para los conceptos de aprendizaje automático. Además, Apache Atlas proporciona capacidades avanzadas, como clasificaciones, integración con Apache Ranger (para autorización y etiquetado), por nombrar algunas, y tiene un sistema de complementos extensible que permite a la comunidad colaborar y definir de forma incremental las integraciones con otras herramientas en el ML. espacio. Se deja como ejercicio para el lector explorar la interfaz de usuario de Apache Atlas y ver cómo usar estas capacidades.

Definición de metadatos de ML en Apache Atlas

Apache Atlas Type System se adapta a todas nuestras necesidades para definir objetos de metadatos de ML. Es de código abierto, extensible y tiene características de gobierno preconstruidas. Un tipo en Atlas es una definición de cómo se almacena y se accede a un tipo particular de objeto de metadatos. También representa uno o más atributos que definen las propiedades del objeto de metadatos. Para el gobierno de ML, Atlas Type System se puede usar para definir nuevos tipos, capturando entidades y procesos de ML como objetos de metadatos de Atlas. Además de la definición de los Tipos, también se requiere la relación entre las entidades y los procesos para visualizar el flujo de linaje de extremo a extremo.

Si relacionamos esto con el ejemplo del sitio web de entrega de alimentos descrito anteriormente, Atlas Type System proporciona una buena base para definir el linaje de Machine Learning. Un sistema de linaje ML generalizado se visualiza de la siguiente manera:

Como se desprende del diagrama anterior, la definición de metadatos para el aprendizaje automático sigue de cerca el flujo de trabajo real del aprendizaje automático. Los conjuntos de datos de entrenamiento son el punto de partida para un flujo de linaje modelo. Estos conjuntos de datos pueden ser tablas de un almacén de datos o un archivo csv incrustado. Una vez que se ha identificado un conjunto de datos, el linaje continúa con el entrenamiento, la construcción y la implementación del modelo.

El desarrollo de características de ML es una actividad paralela y especializada que puede denominarse ingeniería de características (diferente de la ingeniería de modelos). Hoy, en muchos casos, las dos actividades (ingeniería de modelos e ingeniería de características) las realiza la misma persona o equipo. Con la democratización y la industrialización de las funciones, esto podría cambiar en el futuro, con equipos especializados para el desarrollo de modelos y desarrollo de funciones.

El sistema de tipos ML ahora se puede definir a través de los siguientes tipos nuevos:

"Crear proyecto de aprendizaje automático" y "Proyecto de aprendizaje automático"

Un único proyecto de aprendizaje automático representa un único caso de uso comercial. El Proyecto de aprendizaje automático representa el contenedor de archivos y otros activos integrados. Como mínimo, los metadatos del proyecto contienen:

  • Lista de archivos utilizados en el modelo
  • Versión histórica de todos los archivos
    • La implementación más simple sería mantener el proyecto como un repositorio git confiando en Git para mantener el historial de todos los archivos.
“Conjunto de datos de entrenamiento”

Un subtipo de un DataSet en Atlas que representa un conjunto de datos de entrenamiento. La entidad Conjunto de datos de entrenamiento se utiliza en el proceso de entrenamiento del modelo. Se puede asociar con una característica si los datos generados son el resultado de aplicar la extracción (o transformación) de características a otro conjunto de datos.

“Entrenar y construir”

Un proceso que representa la acción de entrenar y construir un modelo. Incluye la ejecución de experimentos, el ajuste y la finalización de la elección de un algoritmo de entrenamiento. El proceso de formación y creación podría estar consumiendo opcionalmente el resultado de una creación de características; por ejemplo, una función de biblioteca que define la extracción de características utilizada internamente por el modelo.

“Creación de modelo”

El modelo se fortalece y versiona una vez que un científico de datos ha completado la experimentación y el entrenamiento del modelo. Este procesamiento da como resultado una construcción de modelo, que es un artefacto inmutable que forma el componente básico para la producción de modelos. Una imagen de Docker es un ejemplo de una entidad Model Build.

“Implementar modelo” e “Implementar modelo”

Una compilación de modelo pasa por un proceso de implementación, que crea una implementación de modelo. La implementación del modelo representa una instanciación activa de un modelo. Un servicio REST basado en Kubernetes (implementación de estilo FaaS) es un ejemplo de una entidad de implementación modelo.

“Función característica”

Una función de aprendizaje automático tiene dos interpretaciones:1) función de función y 2) conjunto de datos transformados.

La entidad Feature Function es una función personalizada (expresada en código) que define cómo extraer una característica identificada de una entrada. Esto representa el código de las características, similar a cómo ML Project representa el contenedor del código ML.

La Feature Function se empaqueta primero como una biblioteca (versionada y protegida). Luego, la biblioteca se consume y se aplica en un conjunto de datos determinado para transformarlo en un nuevo conjunto de datos (con las características extraídas). El conjunto de datos transformados está representado por la entidad del conjunto de datos de entrenamiento definida anteriormente.

“Característica del paquete” y “Compilación de características”

El código en la función de función está empaquetado para compartir (con otros modelos) o para puntuación en tiempo de ejecución. Estos paquetes se denominan compilaciones de funciones. Por ejemplo, una compilación de características puede contener una biblioteca empaquetada (en python) o un archivo jar (en Java). Este paquete se puede absorber durante el proceso de construcción y entrenamiento del modelo para garantizar que se use la misma función durante la extracción y la predicción.

Pruebe y participe en la definición del futuro de la definición de metadatos de ML

Hemos comenzado a trabajar en ATLAS-3432, que es la primera implementación del sistema de tipo de aprendizaje automático que aprovecha Cloudera Data Science Workbench (CDSW) como cliente piloto. Gracias a Na Li del equipo de ingeniería de Cloudera por liderar el trabajo de creación de la integración de CDSW. ATLAS-3432 permitirá que los metadatos del modelo de una instancia de CDSW se envíen a una instancia de Apache Atlas para explorar el linaje. Actualmente, CDSW no admite funciones (o una tienda de funciones), por lo que el linaje relacionado con las funciones no estará disponible.

En Cloudera, no queremos simplemente resolver este problema para nuestros clientes:creemos que las definiciones de metadatos de ML deben ser universales, de forma similar a como las tablas, columnas, etc. son muy estándar para las estructuras de datos. Esperamos que las comunidades contribuyan a definir este estándar para ayudar a las empresas a aprovechar al máximo sus plataformas ML.

¿Tiene un caso de uso de gobernanza de aprendizaje automático que no encaja en el modelo de metadatos? Únase a la conversación publicando sus sugerencias en [email protected].