Una canalización de CI/CD bien diseñada es esencial para escalar cualquier flujo de trabajo de desarrollo de software de manera efectiva. Al diseñar canalizaciones de CI/CD de producción, AWS recomienda aprovechar varias cuentas para aislar recursos, contener amenazas de seguridad y simplificar la facturación, y las canalizaciones de ciencia de datos no son diferentes. En AWS, seguimos innovando para simplificar el flujo de trabajo de MLOps.
En esta publicación, discutimos algunas de las características más nuevas de varias cuentas para Amazon SageMaker que le permiten compartir y administrar mejor los grupos de modelos, así como también administrar las versiones de modelos. Para ver un ejemplo de estructura de cuenta a seguir prácticas recomendadas de la unidad organizativa para alojar modelos que usan terminales de SageMaker entre cuentas, consulte Orquestador de carga de trabajo de MLOps.
Resumen de la solución
El siguiente diagrama ilustra nuestra arquitectura de registro modelo compartido.
Algunas cosas a tener en cuenta en la arquitectura anterior:
Los siguientes pasos corresponden al diagrama:
- Un científico de datos registra un modelo de la cuenta de ciencia de datos en el registro de modelos de SageMaker de servicios compartidos en un
PendingManualApproval
estado. El artefacto del modelo se crea en la cuenta de servicios compartidos. Servicio de almacenamiento simple de Amazon (Amazon S3) cubo. - Tras el registro de una nueva versión del modelo, alguien con la autoridad para aprobar el modelo en función de las métricas debe aprobar o rechazar el modelo.
- Una vez que se aprueba el modelo, la canalización de CI/CD en la cuenta de implementación se activado para desplegar los detalles del modelo actualizado en la cuenta de control de calidad y actualizar la etapa como control de calidad.
- Al pasar el proceso de prueba, puede optar por tener un paso de aprobación manual dentro de su proceso de CI/CD o hacer que su canalización de CI/CD implemente directamente el modelo en producción y actualice la etapa como Prod.
- El entorno de producción hace referencia al modelo y código aprobados, tal vez haciendo un Prueba A/B en producción. En caso de una auditoría o cualquier problema con el modelo, puede utilizar Seguimiento de linaje de Amazon SageMaker ML. Crea y almacena información sobre los pasos de un flujo de trabajo de aprendizaje automático (ML) desde la preparación de datos hasta la implementación del modelo. Con la información de seguimiento, puede reproducir los pasos del flujo de trabajo, realizar un seguimiento del modelo y el linaje del conjunto de datos, y establecer estándares de auditoría y gobernanza del modelo.
A lo largo de todo el proceso, el registro del modelo compartido conserva las versiones anteriores del modelo. Esto permite que el equipo revierta los cambios, o incluso aloje variantes de producción.
Requisitos previos
Asegúrese de tener los siguientes requisitos previos:
- Una estructura multicuenta aprovisionada – Para obtener instrucciones, consulte Prácticas recomendadas para unidades organizativas con AWS Organizations. Para los propósitos de este blog, estamos aprovechando las siguientes cuentas:
- cuenta de ciencia de datos – Una cuenta donde los científicos de datos tienen acceso a los datos de entrenamiento y crean los modelos.
- cuenta de servicios compartidos – Una cuenta central para almacenar los artefactos del modelo (como se muestra en el diagrama de arquitectura) para acceder a través de las diferentes cuentas de carga de trabajo.
- Cuenta de implementación – Una cuenta responsable de implementar los cambios en las distintas cuentas.
- Cuentas de carga de trabajo – Por lo general, se trata de entornos de control de calidad y producción en los que los ingenieros de software pueden crear aplicaciones para consumir el modelo de aprendizaje automático.
- Una cuenta de implementación con los permisos adecuados – Para obtener más información sobre las mejores prácticas con una estructura de unidad organizativa de varias cuentas, consulte Unidad organizativa de implementaciones. Esta cuenta es responsable de apuntar las cuentas de carga de trabajo al modelo deseado en el registro del modelo de la cuenta de servicios compartidos.
Definir políticas entre cuentas
Al seguir el principio de privilegio mínimo, primero debemos agregar políticas de recursos entre cuentas a los recursos de servicios compartidos para otorgar acceso desde las otras cuentas.
Debido a que los artefactos del modelo se almacenan en el depósito de S3 de la cuenta de servicios compartidos, la cuenta de ciencia de datos necesita acceso de lectura/escritura de Amazon S3 para enviar modelos entrenados a Amazon S3. El siguiente código ilustra esta política, pero aún no la agregue a la cuenta de servicios compartidos:
La cuenta de implementación solo necesita tener acceso de lectura al depósito S3, de modo que pueda usar los artefactos del modelo para implementar en los puntos finales de SageMaker. También debemos adjuntar la siguiente política al depósito S3 de servicios compartidos:
Combinamos ambas políticas para obtener la siguiente política final. Cree esta política en la cuenta de servicios compartidos después de reemplazar los ID de cuenta correspondientes:
Para poder implementar un modelo creado en una cuenta diferente, el usuario debe tener un rol que tenga acceso a las acciones de SageMaker, como un rol con el AmazonSageMakerFullAccess
política administrada. Referirse a Implementar una versión de modelo desde una cuenta diferente para obtener detalles adicionales.
Necesitamos definir el grupo de modelos que contiene las versiones de modelos que queremos implementar. Además, queremos otorgar permisos a la cuenta de ciencia de datos. Esto se puede lograr en los siguientes pasos. Nos referimos a las cuentas de la siguiente manera:
- id_de_cuenta_de_servicios_compartidos – La cuenta donde está el registro del modelo y donde queremos que esté el modelo
- data_science_account_id – La cuenta donde estaremos entrenando y, por lo tanto, creando el artefacto del modelo real
- id_cuenta_despliegue – La cuenta donde queremos alojar el punto final para este modelo
Primero, debemos asegurarnos de que existan los grupos de paquetes modelo. Puede usar las API de Boto3 como se muestra en el siguiente ejemplo, o puede usar el Consola de administración de AWS para crear el paquete modelo. Referirse a Crear grupo de paquetes modelo para más detalles. Esto supone que tiene instalado el Boto3.
Para los permisos para este grupo de paquetes modelo, puede crear un documento JSON similar al siguiente código. Reemplace los ID de cuenta reales y el nombre del grupo de paquetes modelo con sus propios valores.
Finalmente, aplique la política al grupo de paquetes modelo. No puede asociar esta política con el grupo de paquetes a través de la consola. Necesita el SDK o Interfaz de línea de comandos de AWS (AWS CLI) acceso. Por ejemplo, el siguiente código usa Boto3:
También necesitamos una costumbre Servicio de administración de claves de AWS (AWS KMS) para cifrar el modelo mientras lo almacena en Amazon S3. Esto debe hacerse usando la cuenta de ciencia de datos. En la consola de AWS KMS, vaya a la Definir permisos de uso de claves página. En el Otras cuentas de AWS sección, elija Agregar otra cuenta de AWS. Ingrese el número de cuenta de AWS para la cuenta de implementación. Utilice esta clave KMS para el trabajo de capacitación de SageMaker. Si no especifica una clave KMS para el trabajo de capacitación, SageMaker utiliza de forma predeterminada una clave de cifrado del lado del servidor de Amazon S3. Una clave de cifrado predeterminada del lado del servidor de Amazon S3 no se puede compartir ni utilizar con otra cuenta de AWS.
La política y los permisos siguen este patrón:
- La política de Amazon S3 especificada en
shared_services_account
otorga permisos a la cuenta de ciencia de datos y la cuenta de implementaciones - La política de claves de KMS especificada en
shared_services_account
otorga permisos a la cuenta de ciencia de datos y la cuenta de implementaciones
Necesitamos asegurarnos de que la cuenta de servicios compartidos y la cuenta de implementación tengan acceso a las imágenes de Docker que se usaron para entrenar el modelo. Estas imágenes generalmente se alojan en cuentas de AWS, y el administrador de su cuenta puede ayudarlo a obtener acceso, si aún no tiene acceso. Para esta publicación, no creamos ninguna imagen de Docker personalizada después de entrenar el modelo y, por lo tanto, no necesitamos políticas específicas de Amazon ECR para las imágenes.
En las cuentas de carga de trabajo (QA o prod), necesitamos crear dos Gestión de identidades y accesos de AWS (IAM) políticas similares a las siguientes. Estos son políticas en línea, lo que significa que están integrados en una identidad de IAM. Esto le da a estas cuentas acceso al registro modelo.
La primera política en línea permite que un rol acceda al recurso de Amazon S3 en la cuenta de servicios compartidos que contiene el artefacto del modelo. Proporcione el nombre del depósito S3 y su modelo:
La segunda política en línea permite que un rol, que creamos más adelante, use la clave KMS en la cuenta de servicios compartidos. Especifique el ID de cuenta para la cuenta de servicios compartidos y el ID de clave de KMS:
Finalmente, necesitamos crear un rol de IAM para SageMaker. Este rol tiene la AmazonSageMakerFullAccess
póliza adjunta. Luego adjuntamos estas dos políticas en línea al rol que creamos. Si utiliza una función de ejecución de SageMaker existente, adjunte estas dos políticas a esa función. Para obtener instrucciones, consulte Crear roles y adjuntar políticas (consola).
Ahora que hemos definido las políticas de cada cuenta, usemos un ejemplo para verlo en acción.
Cree y entrene un modelo mediante una canalización de SageMaker
Primero creamos una canalización de SageMaker en la cuenta de ciencia de datos para llevar a cabo el procesamiento de datos, el entrenamiento de modelos y la evaluación. Usamos el conjunto de datos de vivienda de California obtenido de la biblioteca StatLib. En el siguiente fragmento de código, usamos un script de preprocesamiento personalizado preprocess.py
para realizar una transformación de características simple, como el escalado de características, que se puede generar usando lo siguiente cuaderno. Este script también divide el conjunto de datos en conjuntos de datos de entrenamiento y de prueba.
Creamos un SKLearnProcessor
objeto para ejecutar este script de preprocesamiento. En la canalización de SageMaker, creamos un paso de procesamiento (ProcessingStep
) para ejecutar el código de procesamiento usando SKLearnProcessor
. Este código de procesamiento se llama cuando se inicializa la canalización de SageMaker. El código que crea el SKLearnProcessor
y ProcessingStep
se muestran en el siguiente código. Tenga en cuenta que todo el código de esta sección se ejecuta en la cuenta de ciencia de datos.
Necesitamos una clave KMS personalizada para cifrar el modelo mientras lo almacena en Amazon S3. Ver el siguiente código:
Para entrenar el modelo, creamos un objeto estimador de TensorFlow. Le pasamos el ID de la clave KMS junto con nuestro script de entrenamiento train.py
, tipo de instancia de entrenamiento y recuento. También creamos un TrainingStep
para agregar a nuestra canalización y agregarle el estimador TensorFlow. Ver el siguiente código:
Además del entrenamiento, necesitamos llevar a cabo una evaluación del modelo, para lo cual usamos el error cuadrático medio (MSE) como métrica en este ejemplo. los cuaderno anterior también genera evaluate.py
, que usamos para evaluar nuestro modelo usando MSE. También creamos un ProcessingStep
para inicializar el script de evaluación del modelo utilizando un SKLearnProcessor
objeto. El siguiente código crea este paso:
Después de la evaluación del modelo, también necesitamos un paso para registrar nuestro modelo con el registro de modelos, si el rendimiento del modelo cumple con los requisitos. Esto se muestra en el siguiente código usando el RegisterModel
paso. Aquí necesitamos especificar el paquete modelo que habíamos declarado en la cuenta de servicios compartidos. Reemplace el paquete Región, cuenta y modelo con sus valores. El nombre del modelo utilizado aquí es modeltest
, pero puede usar cualquier nombre de su elección.
También necesitamos crear los artefactos del modelo para que se pueda implementar (usando la otra cuenta). Para crear el modelo, creamos un CreateModelStep
, como se muestra en el siguiente código:
La adición de condiciones a la canalización se realiza con un ConditionStep
. En este caso, solo queremos registrar la nueva versión del modelo con el registro de modelos si el nuevo modelo cumple con una condición de precisión. Ver el siguiente código:
Finalmente, queremos orquestar todos los pasos de la canalización para que la canalización pueda inicializarse:
Implementar una versión del modelo desde una cuenta diferente
Ahora que el modelo se ha registrado en la cuenta de servicios compartidos, debemos implementarlo en nuestras cuentas de carga de trabajo mediante la canalización de CI/CD en la cuenta de implementación. Ya hemos configurado el rol y la política en un paso anterior. Usamos el ARN del paquete del modelo para implementar el modelo desde el registro del modelo. El siguiente código se ejecuta en la cuenta de implementación y se usa para implementar modelos aprobados para control de calidad y producción:
Conclusión
En esta publicación, demostramos cómo configurar las políticas necesarias para una configuración de múltiples cuentas para ML según el principio de privilegio mínimo. Luego mostramos el proceso de construcción y entrenamiento de los modelos en la cuenta de ciencia de datos. Finalmente, usamos la canalización de CI/CD en la cuenta de implementación para implementar la última versión de los modelos aprobados en las cuentas de control de calidad y producción. Además, puede ver el historial de implementación de los modelos y construir disparadores in Construcción de código AWS.
Puede escalar los conceptos en esta publicación para alojar modelos en Nube informática elástica de Amazon (Amazon EC2) o Servicio Amazon Elastic Kubernetes (Amazon EKS), así como construir una canalización de inferencia por lotes.
Para obtener más información sobre cómo tener cuentas separadas que crean modelos ML en AWS, consulte Prácticas recomendadas para unidades organizativas con AWS Organizations y Actualice de forma segura los modelos en producción.
Acerca de los autores
Sandeep Verma es Arquitecto sénior de creación de prototipos en AWS. Le gusta profundizar en los desafíos de los clientes y crear prototipos para que los clientes aceleren la innovación. Tiene experiencia en IA/ML, es fundador de New Knowledge y, en general, es un apasionado de la tecnología. En su tiempo libre le encanta viajar y esquiar con su familia.
Mani Januja es un especialista en inteligencia artificial y aprendizaje automático SA en Amazon Web Services (AWS). Ayuda a los clientes a utilizar el aprendizaje automático para resolver sus desafíos comerciales mediante AWS. Pasa la mayor parte de su tiempo profundizando y enseñando a los clientes sobre proyectos de IA / ML relacionados con la visión por computadora, el procesamiento del lenguaje natural, la previsión, el aprendizaje automático en el borde y más. Le apasiona el aprendizaje automático en el borde, por lo que ha creado su propio laboratorio con un kit de conducción autónoma y una línea de producción de fabricación de prototipos, donde pasa gran parte de su tiempo libre.
saumitra vikram es desarrollador de software en el equipo de Amazon SageMaker y tiene su sede en Chennai, India. Fuera del trabajo, le encanta correr, hacer senderismo y andar en moto por el Himalaya.
Sredevi Srinivasan es líder en ingeniería en AWS SageMaker. Le apasiona y emociona habilitar ML como una plataforma que está configurada para transformar la vida cotidiana. Actualmente se enfoca en SageMaker Feature Store. En su tiempo libre le gusta pasar tiempo con su familia.
Rupinder Grewal es un Arquitecto de Soluciones Sr. Ai/ML Especialista con AWS. Actualmente se enfoca en servir modelos y MLOps en SageMaker. Antes de este cargo, trabajó como ingeniero de aprendizaje automático creando y alojando modelos. Fuera del trabajo, le gusta jugar tenis y andar en bicicleta por senderos de montaña.
Farooq Sabir es arquitecto sénior de soluciones especialista en inteligencia artificial y aprendizaje automático en AWS. Tiene un doctorado y una maestría en ingeniería eléctrica de la Universidad de Texas en Austin y una maestría en informática del Instituto de Tecnología de Georgia. En AWS, ayuda a los clientes a formular y resolver sus problemas comerciales en ciencia de datos, aprendizaje automático, visión artificial, inteligencia artificial, optimización numérica y dominios relacionados. Tiene más de 16 años de experiencia laboral y también es miembro adjunto de la facultad en la Universidad de Texas en Dallas, donde imparte un curso de posgrado sobre aprendizaje automático aplicado. Con sede en Dallas, Texas, a él y a su familia les encanta viajar y hacer viajes largos por carretera.
- Avanzado (300)
- AI
- arte ai
- generador de arte ai
- robot ai
- Amazon SageMaker
- inteligencia artificial
- certificación de inteligencia artificial
- inteligencia artificial en banca
- robots de inteligencia artificial
- robots de inteligencia artificial
- software de inteligencia artificial
- Aprendizaje automático de AWS
- y las mejores prácticas
- blockchain
- conferencia blockchain ai
- Coingenius
- inteligencia artificial conversacional
- criptoconferencia ai
- de dall
- deep learning
- google ai
- máquina de aprendizaje
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- escala ia
- sintaxis
- Procedimientos técnicos
- zephyrnet