Amplíe el linaje del modelo para incluir funciones de aprendizaje automático mediante Amazon SageMaker Feature Store

Nodo de origen: 1274480

La ingeniería de características es costosa y requiere mucho tiempo, lo que puede llevarlo a adoptar una tienda de características para administrar características en equipos y modelos. Desafortunadamente, las soluciones de linaje de aprendizaje automático (ML) aún tienen que adaptarse a este nuevo concepto de administración de funciones. Para lograr todos los beneficios de una tienda de características al habilitar la reutilización de características, debe poder responder preguntas fundamentales sobre las características. Por ejemplo, ¿cómo se crearon estas funciones? ¿Qué modelos utilizan estas funciones? ¿De qué características depende mi modelo? ¿Qué funciones se crean con esta fuente de datos?

Amazon SageMaker proporciona dos bloques de construcción importantes para permitir responder preguntas de linaje de características clave:

  • Seguimiento de linaje SageMaker ML le permite crear y almacenar información sobre los pasos de un flujo de trabajo de AA, desde la preparación de datos hasta la implementación del modelo. Con la información de seguimiento de linaje, puede reproducir los pasos del flujo de trabajo, rastrear el linaje del modelo y del conjunto de datos, y establecer estándares de auditoría y gobernanza del modelo.
  • Tienda de funciones de SageMaker es una solución especialmente diseñada para la gestión de funciones de AA. Ayuda a los equipos de ciencia de datos a reutilizar las funciones de ML en equipos y modelos, ofrece funciones para predicciones de modelos a escala con baja latencia y entrena e implementa nuevos modelos de manera más rápida y eficaz.

En esta publicación, explicamos cómo extender el linaje de ML para incluir funciones de ML y procesamiento de funciones, lo que puede ayudar a los equipos de ciencia de datos a pasar a una gestión proactiva de funciones. Ofrecemos una completa cuaderno de muestra mostrando cómo agregar fácilmente el seguimiento del linaje a su flujo de trabajo. Luego, usa ese linaje para responder preguntas clave sobre cómo se crean los modelos y las características y qué modelos y puntos finales los consumen.

¿Por qué es importante el linaje de características?

El linaje de características juega un papel importante para ayudar a las organizaciones a escalar su práctica de ML más allá de los primeros modelos exitosos para cubrir las necesidades que surgen cuando tienen varios equipos de ciencia de datos que crean e implementan cientos o miles de modelos. Considere el siguiente diagrama, que muestra una vista simplificada de los artefactos y asociaciones clave para un pequeño conjunto de modelos.

Imagine intentar realizar un seguimiento manual de todo esto para un equipo grande, varios equipos o incluso varias unidades de negocio. El seguimiento y las consultas de linaje ayudan a que esto sea más manejable y ayuda a las organizaciones a migrar al aprendizaje automático a escala. A continuación, se muestran cuatro ejemplos de cómo el linaje de características ayuda a escalar el proceso de AA:

  • Genere confianza para la reutilización de funciones existentes - Un científico de datos puede buscar características existentes, pero no las usará si no puede identificar fácilmente las fuentes de datos sin procesar, las transformaciones que se han realizado y quién más ya está usando las características en otros modelos.
  • Evite reinventar las funciones que se basan en los mismos datos sin procesar que las funciones existentes. - Digamos que un científico de datos está planeando crear nuevas funciones basadas en una fuente de datos específica. El linaje de características puede ayudarlos a encontrar fácilmente todas las características que ya dependen de la misma fuente de datos y son utilizadas por los modelos de producción. En lugar de crear y mantener otra característica más, pueden encontrar características para reutilizar inmediatamente.
  • Solucionar problemas y auditar modelos y predicciones de modelos - Pueden ocurrir predicciones incorrectas o predicciones sesgadas en la producción, y los equipos necesitan respuestas sobre cómo sucedió esto. Esta resolución de problemas también puede ocurrir como resultado de que un regulador busque evidencia de cómo se construyeron los modelos, incluidas todas las características que impulsan las predicciones.
  • Gestione funciones de forma proactiva - A medida que se ponen a disposición más y más funciones reutilizables en las tiendas de funciones centralizadas, los propietarios de funciones específicas deben planificar la evolución de los grupos de funciones y, finalmente, incluso la desaprobación de las funciones antiguas. Estos propietarios de funciones deben comprender qué modelos utilizan sus funciones para comprender el impacto y con quién deben trabajar.

¿Qué relaciones es importante rastrear?

El siguiente diagrama muestra un conjunto de muestra de los pasos del ciclo de vida del AA, los artefactos y las asociaciones que normalmente se necesitan para el linaje del modelo cuando se usa una tienda de características.

Estos componentes incluyen lo siguiente:

  • Fuente de datos - Las funciones de AA dependen de fuentes de datos sin procesar como un almacén de datos operativos o un conjunto de archivos CSV en Servicio de almacenamiento simple de Amazon (Amazon S3).
  • Canalización de funciones - Las características dignas de producción generalmente se crean utilizando una canalización de características que toma un conjunto de fuentes de datos sin procesar, realiza transformaciones de características e ingiere las características resultantes en el almacén de características. El seguimiento de linajes puede ayudar al asociar esas canalizaciones con sus fuentes de datos y sus grupos de características de destino.
  • Conjuntos de funciones - Cuando las características están en un almacén de características, los científicos de datos lo consultan para recuperar datos para el entrenamiento y la validación del modelo. Puede utilizar el seguimiento de linaje para asociar la consulta de la tienda de características con el conjunto de datos producido. Esto proporciona detalles granulares sobre qué funciones se utilizaron y qué historial de funciones se seleccionó en varios grupos de funciones.
  • La capacitación laboral - A medida que madura el ciclo de vida del AA para adoptar el uso de una tienda de características, el linaje del modelo puede asociar el entrenamiento con características específicas y grupos de características.
  • Modelo - Además de relacionar modelos con terminales de alojamiento, puede vincularlos a su trabajo de capacitación correspondiente e indirectamente a grupos de funciones.
  • Punto final - Por último, para los modelos en línea, puede asociar puntos finales específicos con los modelos que alojan, completando la cadena de un extremo a otro desde las fuentes de datos hasta los puntos finales que proporcionan predicciones.

No existe un enfoque de "talla única" para una tubería de modelo general. Esto es simplemente un ejemplo, y puede adaptarlo para cubrir cómo operan sus equipos para cumplir con los requisitos específicos de su linaje. Las API subyacentes son lo suficientemente flexibles como para cubrir una amplia gama de enfoques.

Crear seguimiento de linaje

Veamos cómo instrumentar su código para capturar fácilmente estas asociaciones. Nuestro ejemplo usa un biblioteca de contenedores personalizados construimos alrededor de SageMaker ML Lineage Tracking. Esta biblioteca es un envoltorio de la SDK de SageMaker para facilitar el seguimiento del linaje a lo largo del ciclo de vida del AA. Los artefactos de linaje incluyen datos, código, grupos de características, características en un grupo de características, consultas de grupos de características, trabajos de entrenamiento y modelos.

Primero, importamos la biblioteca:

from ml_lineage_helper import *

A continuación, lo ideal es que desee que su linaje rastree incluso el código que utilizó para procesar sus datos con Procesamiento SageMaker trabajos o código utilizado para entrenar su modelo en SageMaker. Si este código está controlado por la versión (¡lo cual recomendamos encarecidamente!), Podemos reconstruir cuáles serían esos enlaces URL en la plataforma de administración de git que eligió, como GitHub o GitLab:

processing_code_repo_url = get_repo_link(os.getcwd(), 'processing.py')
training_code_repo_url = get_repo_link(os.getcwd(), 'pytorch-model/train_deploy.py', processing_code=False)
repo_links = [processing_code_repo_url, training_code_repo_url]

Finalmente, creamos el linaje. Muchas de las entradas son opcionales, pero en este ejemplo asumimos lo siguiente:

  1. Empezaste con una fuente de datos sin procesar
  2. Usó SageMaker Processing para procesar los datos sin procesar e ingerirlos en dos grupos de funciones diferentes
  3. Consultaste Feature Store para crear conjuntos de datos de prueba y entrenamiento
  4. Entrenó un modelo en SageMaker en sus conjuntos de datos de prueba y entrenamiento
ml_lineage = MLLineageHelper()
lineage = ml_lineage.create_ml_lineage(estimator, model_name=model_name, query=query, sagemaker_processing_job_description=preprocessing_job_description, feature_group_names=['customers', 'claims'], repo_links=repo_links)
lineage

La siguiente captura de pantalla muestra nuestros resultados.

La llamada devuelve un marco de datos de pandas que representa el gráfico de linaje de los artefactos que se crearon y asociaron en su nombre. Proporciona nombres, asociaciones (como Produced or ContributedTo), o ARN que identifican de forma única los recursos.

Ahora que el linaje está en su lugar, puede usarlo para responder preguntas clave sobre sus características y modelos. Tenga en cuenta que el beneficio completo de este seguimiento de linaje se obtiene cuando esta práctica se adopta en muchos científicos de datos que trabajan con una gran cantidad de características y modelos.

Utilice el linaje para responder preguntas clave y obtener conocimientos

Veamos algunos ejemplos de lo que puede hacer con los datos del linaje ahora que el seguimiento del linaje está en su lugar.

Como científico de datos, es posible que esté planeando utilizar una fuente de datos específica. Para evitar reinventar las características que se basan en los mismos datos sin procesar que las características existentes, desea ver todas las características que ya se han creado y están en producción utilizando esa misma fuente de datos. Una simple llamada puede brindarle esa información:

from ml_lineage_helper.query_lineage import QueryLineage query_lineage = QueryLineage()
query_lineage.get_feature_groups_from_data_source(artifact_arn_or_s3_uri)

La siguiente captura de pantalla muestra nuestros resultados.

O tal vez esté considerando usar un grupo de características específico y desea saber qué fuentes de datos están asociadas con él:

query_lineage.get_data_sources_from_feature_group(artifact_or_fg_arn, max_depth=3)

Obtenemos los siguientes resultados.

También es posible que deba auditar un modelo o un conjunto de predicciones del modelo. Si ocurrieron predicciones incorrectas o predicciones sesgadas en la producción, su equipo necesita respuestas sobre cómo sucedió esto. Dado un modelo, puede consultar el linaje para ver todos los pasos utilizados en el ciclo de vida del AA para crear el modelo:

ml_lineage = MLLineageHelper(sagemaker_model_name_or_model_s3_uri='my-sagemaker-model-name')
ml_lineage.df

Obtenemos los siguientes resultados.

A medida que más y más funciones están disponibles en una tienda de funciones centralizada, los propietarios de funciones específicas deben planificar la evolución de los grupos de funciones y, finalmente, incluso la desaprobación de las funciones antiguas. Estos propietarios de funciones deben comprender qué modelos utilizan sus funciones para comprender el impacto y con quién deben trabajar. Puede hacer esto con el siguiente código:

query_lineage.get_models_from_feature_group(artifact_or_fg_arn)

La siguiente captura de pantalla muestra nuestros resultados.

También puede invertir la pregunta y averiguar qué grupos de funciones están asociados con un modelo determinado:

query_lineage.get_feature_groups_from_model(artifact_arn_or_model_name)

Conclusión

En esta publicación, discutimos la importancia de rastrear el linaje de ML, los aspectos del ciclo de vida de ML que debe rastrear y agregar al linaje, y cómo usar SageMaker para proporcionar un linaje de ML de un extremo a otro. También cubrimos cómo incorporar Feature Store a medida que avanza hacia funciones reutilizables en equipos y modelos, y finalmente cómo usar el biblioteca auxiliar para lograr un seguimiento de linaje de ML de un extremo a otro. Para probar Feature Store de un extremo a otro del ciclo de vida, incluido un módulo sobre el linaje, puede explorar este Taller de la tienda de características y los cuadernos para todos los módulos en GitHub. Además, puede ampliar este enfoque para cubrir sus requisitos únicos. Visite el asistente de ML Lineage bibliotecas que construimos y probamos el cuaderno de ejemplo.


Acerca de los autores

bobby lindsey es un especialista en aprendizaje automático en Amazon Web Services. Ha estado en tecnología durante más de una década, abarcando varias tecnologías y múltiples roles. Actualmente se centra en combinar su experiencia en ingeniería de software, DevOps y aprendizaje automático para ayudar a los clientes a ofrecer flujos de trabajo de aprendizaje automático a escala. En su tiempo libre, le gusta leer, investigar, hacer caminatas, andar en bicicleta y correr senderos.

marca roy es un arquitecto principal de aprendizaje automático para AWS, que ayuda a los clientes a diseñar y desarrollar soluciones de IA / ML. El trabajo de Mark cubre una amplia gama de casos de uso de ML, con un interés principal en la visión por computadora, el aprendizaje profundo y la ampliación de ML en toda la empresa. Ha ayudado a empresas en muchas industrias, incluidas las de seguros, servicios financieros, medios y entretenimiento, atención médica, servicios públicos y fabricación. Mark tiene seis certificaciones de AWS, incluida la Certificación de especialidad ML. Antes de unirse a AWS, Mark fue arquitecto, desarrollador y líder tecnológico durante más de 25 años, incluidos 19 años en servicios financieros.

Mohan Pasappulatti es un arquitecto de soluciones sénior en AWS, con sede en San Francisco, EE. UU. Mohan ayuda a empresas emergentes disruptivas de alto perfil y clientes estratégicos a diseñar e implementar aplicaciones distribuidas, incluidas cargas de trabajo de aprendizaje automático en producción en AWS. Tiene más de 20 años de experiencia laboral en varios roles como líder de ingeniería, arquitecto en jefe e ingeniero principal. En su tiempo libre, a Mohan le encanta animar a su equipo de fútbol universitario (¡LSU Tigers!), Jugar al póquer, esquiar, mirar los mercados financieros, jugar voleibol y pasar tiempo al aire libre.

Fuente: https://aws.amazon.com/blogs/machine-learning/extend-model-lineage-to-include-ml-features-using-amazon-sagemaker-feature-store/

Sello de tiempo:

Mas de Blog de aprendizaje automático de AWS