Utilice el uso compartido de tarjetas de modelo de Amazon SageMaker para mejorar la gobernanza del modelo

Use Amazon SageMaker's model card sharing to improve model governance

A medida que las tecnologías de Inteligencia Artificial (IA) y Aprendizaje Automático (AA) se han vuelto populares, muchas empresas han tenido éxito en la construcción de aplicaciones empresariales críticas impulsadas por modelos de AA a gran escala en producción. Sin embargo, dado que estos modelos de AA toman decisiones empresariales críticas, es importante que las empresas agreguen salvaguardas adecuadas en todo el ciclo de vida de AA. Las salvaguardas aseguran que la seguridad, privacidad y calidad del código, la configuración y los datos y la configuración del modelo utilizados en el ciclo de vida del modelo estén versionados y preservados.

Implementar estas salvaguardas se está volviendo más difícil para las empresas porque los procesos y actividades de AA dentro de las empresas se están volviendo más complejos debido a la inclusión de procesos profundamente involucrados que requieren contribuciones de múltiples interesados y personas. Además de los ingenieros de datos y los científicos de datos, se han incluido procesos operativos para automatizar y optimizar el ciclo de vida de AA. Además, el aumento de los interesados empresariales y, en algunos casos, las revisiones legales y de cumplimiento necesitan capacidades para agregar transparencia para gestionar el control de acceso, el seguimiento de actividades y la generación de informes en todo el ciclo de vida de AA.

El marco que brinda visibilidad sistemática en el desarrollo, validación y uso de modelos de AA se llama gobernanza de AA. Durante AWS re:Invent 2022, AWS presentó nuevas herramientas de gobernanza de AA para Amazon SageMaker, que simplifica el control de acceso y mejora la transparencia en sus proyectos de AA. Una de las herramientas disponibles como parte de la gobernanza de AA es Amazon SageMaker Model Cards, que tiene la capacidad de crear una única fuente de verdad para la información del modelo al centralizar y estandarizar la documentación en todo el ciclo de vida del modelo.

Las tarjetas de modelo de SageMaker le permiten estandarizar cómo se documentan los modelos, logrando así visibilidad en el ciclo de vida de un modelo, desde el diseño, construcción, entrenamiento y evaluación. Las tarjetas de modelo están destinadas a ser una única fuente de verdad para metadatos comerciales y técnicos sobre el modelo que se pueden utilizar de manera confiable para fines de auditoría y documentación. Proporcionan una hoja de datos del modelo que es importante para la gobernanza del modelo.

A medida que escalas tus modelos, proyectos y equipos, como mejor práctica, recomendamos que adoptes una estrategia de múltiples cuentas que brinde aislamiento de proyectos y equipos para el desarrollo e implementación de modelos de AA. Para obtener más información sobre cómo mejorar la gobernanza de tus modelos de AA, consulta Mejora la gobernanza de tus modelos de aprendizaje automático con Amazon SageMaker.

Descripción general de la arquitectura

La arquitectura se implementa de la siguiente manera:

  • Cuenta de Ciencia de Datos: los científicos de datos realizan sus experimentos en SageMaker Studio y crean una configuración de MLOps para implementar modelos en entornos de puesta en escena/producción utilizando SageMaker Projects.
  • Cuenta de Servicios Compartidos de AA: la configuración de MLOps de la cuenta de Ciencia de Datos activará tuberías de integración y entrega continua (CI/CD) utilizando AWS CodeCommit y AWS CodePipeline.
  • Cuenta de Desarrollo: las tuberías de CI/CD activarán aún más tuberías de AA en esta cuenta que cubrirán el preprocesamiento de datos, entrenamiento de modelos y postprocesamiento como evaluación y registro del modelo. La salida de estas tuberías implementará el modelo en puntos finales de SageMaker para su consumo con fines de inferencia. Dependiendo de tus requisitos de gobernanza, las cuentas de Ciencia de Datos y Desarrollo se pueden fusionar en una sola cuenta de AWS.
  • Cuenta de Datos: las tuberías de AA que se ejecutan en la cuenta de Desarrollo extraerán los datos de esta cuenta.
  • Cuentas de Prueba y Producción: las tuberías de CI/CD continuarán la implementación después de la cuenta de Desarrollo para configurar la configuración de los puntos finales de SageMaker en estas cuentas.
  • Seguridad y Gobernanza: se utilizarán servicios como AWS Identity and Access Management (IAM), AWS IAM Identity Center, AWS CloudTrail, AWS Key Management Service (AWS KMS), Amazon CloudWatch y AWS Security Hub en estas cuentas como parte de la seguridad y gobernanza.

El siguiente diagrama ilustra esta arquitectura.

Para obtener más información sobre cómo establecer una arquitectura de AA escalable de múltiples cuentas, consulta Fundamentos de MLOps para empresas con Amazon SageMaker.

Nuestros clientes necesitan la capacidad de compartir tarjetas de modelo entre cuentas para mejorar la visibilidad y gobernanza de sus modelos a través de la información compartida en la tarjeta de modelo. Ahora, con el intercambio de tarjetas de modelo entre cuentas, los clientes pueden disfrutar de los beneficios de una estrategia de múltiples cuentas al tener acceso a las tarjetas de modelo disponibles en su organización, lo que les permite acelerar la colaboración y garantizar la gobernanza.

En esta publicación, mostramos cómo configurar y acceder a tarjetas de modelo en cuentas del ciclo de vida de desarrollo de modelos (MDLC) utilizando la nueva función de intercambio de tarjetas de modelo entre cuentas. Primero, describiremos un escenario y una arquitectura para configurar la función de intercambio de tarjetas de modelo entre cuentas, y luego profundizaremos en cada componente de cómo configurar y acceder a las tarjetas de modelo compartidas en cuentas para mejorar la visibilidad y gobernanza del modelo.

Resumen de la solución

Cuando se construyen modelos de ML, recomendamos configurar una arquitectura de múltiples cuentas para proporcionar un aislamiento de carga de trabajo que mejore la seguridad, confiabilidad y escalabilidad. Para este artículo, asumiremos la construcción e implementación de un modelo para el caso de uso de Churn de clientes. El diagrama de arquitectura que sigue muestra uno de los enfoques recomendados, la tarjeta de modelo centralizada, para administrar una tarjeta de modelo en una arquitectura de ciclo de vida de desarrollo de modelos de aprendizaje automático (MDLC) de múltiples cuentas. Sin embargo, también se puede adoptar otro enfoque, una tarjeta de modelo centralizada con conexión en estrella. En este artículo, nos enfocaremos solo en el enfoque de tarjeta de modelo centralizada, pero los mismos principios se pueden extender a un enfoque de conexión en estrella. La diferencia principal es que cada cuenta de conexión en estrella mantendrá su propia versión de la tarjeta de modelo y tendrá procesos para agregar y copiar en una cuenta centralizada.

El siguiente diagrama ilustra esta arquitectura.

La arquitectura se implementa de la siguiente manera:

  1. El científico de datos líder es notificado para resolver el caso de uso de Churn de clientes utilizando ML, y comienza el proyecto de ML mediante la creación de una tarjeta de modelo para el modelo de Churn de clientes V1 en estado de borrador en la cuenta de Servicios Compartidos de ML
  2. A través de la automatización, esa tarjeta de modelo se comparte con la cuenta de desarrollo de ML
  3. El científico de datos construye el modelo y comienza a llenar información a través de APIs en la tarjeta de modelo basado en los resultados de sus experimentos y el estado de la tarjeta de modelo se establece en Revisión pendiente
  4. A través de la automatización, esa tarjeta de modelo se comparte con la cuenta de prueba de ML
  5. El ingeniero de ML (MLE) ejecuta pruebas de integración y validación en la cuenta de prueba de ML y el modelo en el registro central se marca como Aprobación pendiente
  6. El aprobador del modelo revisa los resultados del modelo con la documentación de respaldo proporcionada en la tarjeta de modelo central y aprueba la tarjeta de modelo para la implementación en producción.
  7. A través de la automatización, esa tarjeta de modelo se comparte con la cuenta de producción de ML en modo de solo lectura.

Requisitos previos

Antes de comenzar, asegúrate de tener los siguientes requisitos previos:

  • Dos cuentas de AWS.
  • En ambas cuentas de AWS, un rol de federación de IAM con acceso de administrador para hacer lo siguiente:
    • Crear, editar, ver y eliminar tarjetas de modelo dentro de Amazon SageMaker.
    • Crear, editar, ver y eliminar recursos compartidos dentro de AWS RAM.

Para obtener más información, consulta las políticas de IAM de ejemplo para AWS RAM.

Configuración de la compartición de tarjetas de modelo

La cuenta donde se crean las tarjetas de modelo es la cuenta de tarjetas de modelo. Los usuarios en la cuenta de tarjetas de modelo las comparten con las cuentas compartidas donde se pueden actualizar. Los usuarios en la cuenta de tarjetas de modelo pueden compartir sus tarjetas de modelo a través de AWS Resource Access Manager (AWS RAM). AWS RAM te ayuda a compartir recursos entre cuentas de AWS.

En la siguiente sección, mostramos cómo compartir las tarjetas de modelo.

Primero, crea una tarjeta de modelo para un caso de uso de Churn de clientes como se describe anteriormente. En la consola de Amazon SageMaker, expande la sección de Gobierno y elige Tarjetas de modelo.

Crearemos la tarjeta de modelo en estado Borrador con el nombre Customer-Churn-Model-Card. Para obtener más información, consulta Crear una tarjeta de modelo. En esta demostración, puedes dejar en blanco el resto de los campos y crear la tarjeta de modelo.

Alternativamente, puedes utilizar el siguiente comando AWS CLI para crear la tarjeta de modelo:

aws sagemaker create-model-card --model-card-name Customer-Churn-Model-Card --content "{\"model_overview\": {\"model_owner\": \"model-owner\",\"problem_type\": \"Customer Churn Model\"}}" --model-card-status Draft

Ahora, crea el recurso compartido entre cuentas utilizando AWS RAM. En la consola de AWS RAM, selecciona Crear un recurso compartido.

Ingresa un nombre para el recurso compartido, por ejemplo “Customer-Churn-Model-Card-Share”. En la sección Recursos – opcional, selecciona el tipo de recurso como Modelos de SageMaker. La tarjeta de modelo que creamos en el paso anterior aparecerá en la lista.

Selecciona ese modelo y aparecerá en la sección Recursos seleccionados. Selecciona ese recurso nuevamente como se muestra en los siguientes pasos y elige Siguiente.

En la siguiente página, puedes seleccionar los permisos administrados. Puedes crear permisos personalizados o utilizar la opción predeterminada “AWSRAMPermissionSageMakerModelCards” y seleccionar Siguiente. Para obtener más información, consulta la administración de permisos en AWS RAM.

En la siguiente página, puedes seleccionar Principales. En el tipo de principal selecciona Cuenta de AWS y ingresa el ID de la cuenta con la que compartirás la tarjeta del modelo. Selecciona Agregar y continúa a la siguiente página.

En la última página, revisa la información y selecciona “Crear recurso compartido”. Alternativamente, puedes utilizar el siguiente comando AWS CLI para crear un recurso compartido:

aws ram create-resource-share --name <Nombre de la tarjeta del modelo>

aws ram associate-resource-share --resource-share-arn <ARN del recurso compartido creado a partir del comando anterior> --resource-arns <ARN de la tarjeta del modelo>

En la consola de AWS RAM, verás los atributos del recurso compartido. Asegúrate de que los recursos compartidos, los permisos administrados y los principales compartidos estén en el estado “Asociado“.

Después de utilizar AWS RAM para crear un recurso compartido, los principales especificados en el recurso compartido pueden obtener acceso a los recursos compartidos.

  • Si activas el uso compartido de AWS RAM con Organizaciones de AWS y los principales con los que compartes están en la misma organización que la cuenta de uso compartido, esos principales pueden recibir acceso tan pronto como su administrador de cuenta les otorgue los permisos.
  • Si no activas el uso compartido de AWS RAM con Organizaciones, aún puedes compartir recursos con cuentas individuales de AWS que estén en tu organización. El administrador de la cuenta receptora recibe una invitación para unirse al recurso compartido, y debe aceptar la invitación antes de que los principales especificados en el recurso compartido puedan acceder a los recursos compartidos.
  • También puedes compartir con cuentas fuera de tu organización si el tipo de recurso lo admite. El administrador de la cuenta receptora recibe una invitación para unirse al recurso compartido, y debe aceptar la invitación antes de que los principales especificados en el recurso compartido puedan acceder a los recursos compartidos.

Para obtener más información sobre AWS RAM, consulta los términos y conceptos de AWS RAM.

Acceso a tarjetas de modelo compartidas

Ahora podemos iniciar sesión en la cuenta de AWS compartida para acceder a la tarjeta del modelo. Asegúrate de que estás accediendo a la consola de AWS utilizando permisos IAM (rol IAM) que permitan el acceso a AWS RAM.

Con AWS RAM, puedes ver los recursos compartidos a los que se te ha agregado, los recursos compartidos a los que puedes acceder y las cuentas de AWS que han compartido recursos contigo. También puedes abandonar un recurso compartido cuando ya no necesites acceso a sus recursos compartidos.

Para ver la ficha del modelo en la cuenta compartida de AWS:

  1. Navegue hasta la página Compartido conmigo: Recursos compartidos en la consola de AWS RAM.
  2. Asegúrese de que está operando en la misma región de AWS donde se creó el recurso compartido.
  3. El modelo compartido desde la cuenta del modelo estará disponible en el listado. Si hay una larga lista de recursos, puede aplicar un filtro para encontrar recursos compartidos específicos. Puede aplicar múltiples filtros para reducir su búsqueda.
  4. La siguiente información está disponible:
    1. ID del recurso – El ID del recurso. Este es el nombre de la ficha del modelo que creamos anteriormente en la cuenta de la ficha del modelo.
    2. Tipo de recurso – El tipo de recurso.
    3. Fecha de último recurso compartido – La fecha en la que se compartió el recurso con usted.
    4. Comparticiones de recurso – El número de comparticiones de recursos en las que se incluye el recurso. Elija el valor para ver las comparticiones de recursos.
    5. ID del propietario – El ID del principal que es propietario del recurso.

También puede acceder a la ficha del modelo utilizando la opción AWS CLI. Para la política de IAM de AWS configurada con las credenciales correctas, asegúrese de tener permisos para crear, editar y eliminar fichas de modelos en Amazon SageMaker. Para obtener más información, consulte Configurar la AWS CLI.

Puede utilizar la siguiente política de permisos de IAM de AWS como plantilla:

{
     "Version": "2012-10-17",
     "Statement": [
        {
             "Effect": "Allow",
             "Action": [
                 "sagemaker:DescribeModelCard",
                 "sagemaker:UpdateModelCard",
                 "sagemaker:CreateModelCardExportJob",
                 "sagemaker:ListModelCardVersions",
                 "sagemaker:DescribeModelCardExportJob"
             ],
             "Resource": [
                 "arn:aws:sagemaker:AWS-Region:AWS-model-card-account-id:model-card/example-model-card-name-0",
                 "arn:aws:sagemaker:AWS-Region:AWS-model-card-account-id:model-card/example-model-card-name-1/*"
             ]
        },
        { 
             "Effect": "Allow", 
             "Action": "s3:PutObject",
             "Resource": "arn:aws:s3:::Amazon-S3-bucket-storing-the-pdf-of-the-model-card/model-card-name/*"
        }
    ]
}

Ejecute el siguiente comando AWS CLI para acceder a los detalles de la ficha del modelo compartido.

aws sagemaker describe-model-card --model-card-name <ARN de la ficha del modelo>

Ahora puede realizar cambios en esta ficha del modelo desde esta cuenta.

aws sagemaker update-model-card --model-card-name <ARN de la ficha del modelo> --content "{\"model_overview\": {\"model_owner\": \"model-owner\",\"problem_type\": \"Customer Churn Model\"}}"

Después de realizar cambios, regrese a la cuenta de la ficha del modelo para ver los cambios que realizamos en esta cuenta compartida.

Se ha actualizado el tipo de problema a “Modelo de Churn de Clientes” que proporcionamos como parte de la entrada del comando AWS CLI.

Limpieza

Ahora puede eliminar la ficha del modelo que creó. Asegúrese de eliminar el recurso compartido de AWS RAM que creó para compartir la ficha del modelo.

Conclusión

En este artículo, proporcionamos una descripción general de la arquitectura de múltiples cuentas para escalar y gobernar sus cargas de trabajo de ML de manera segura y confiable. Discutimos los patrones de arquitectura para configurar el intercambio de fichas de modelos y mostramos cómo funcionan los patrones de intercambio de fichas de modelos centralizados. Finalmente, configuramos el intercambio de fichas de modelos en múltiples cuentas para mejorar la visibilidad y el gobierno en el ciclo de vida del desarrollo de su modelo. Le animamos a probar la nueva función de intercambio de fichas de modelos y hacernos saber sus comentarios.