Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Optimice los flujos de trabajo de aprendizaje automático desde el desarrollo local hasta los experimentos escalables mediante el uso de SageMaker IA e Hydra
David Sauerwein, Marco Geiger y Julian Ferdinand Grueber, Amazon Web Services
Resumen
Este patrón proporciona un enfoque unificado para configurar y ejecutar algoritmos de aprendizaje automático (ML) desde las pruebas locales hasta la producción en Amazon SageMaker AI. Este patrón se centra en los algoritmos de ML, pero su enfoque se extiende a la ingeniería de características, la inferencia y canalizaciones completas de ML. Este patrón demuestra la transición del desarrollo de guiones locales a los trabajos de formación en SageMaker IA a través de un ejemplo de caso de uso.
Un flujo de trabajo de ML típico consiste en desarrollar y probar soluciones en una máquina local, ejecutar experimentos a gran escala (por ejemplo, con distintos parámetros) en la nube e implementar la solución aprobada en la nube. A continuación, se debe supervisar y mantener la solución implementada. Sin un enfoque unificado de este flujo de trabajo, los desarrolladores a menudo tienen que refactorizar su código en cada etapa. Si la solución depende de una gran cantidad de parámetros que pueden cambiar en cualquier etapa de este flujo de trabajo, puede resultar cada vez más difícil mantener la organización y la coherencia.
Este patrón resuelve estos desafíos. En primer lugar, elimina la necesidad de refactorizar el código entre entornos al proporcionar un flujo de trabajo unificado que mantiene la coherencia tanto si se ejecuta en máquinas locales, en contenedores o en SageMaker IA. En segundo lugar, simplifica la administración de parámetros mediante el sistema de configuración de Hydra, en el que los parámetros se definen en archivos de configuración independientes que se pueden modificar y combinar fácilmente, con un registro automático de la configuración de cada ejecución. Para más detalles acerca de cómo este patrón resuelve estos desafíos, consulte la sección Información adicional.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Un rol de usuario AWS Identity and Access Management (IAM) para implementar e iniciar los trabajos de formación en SageMaker IA
AWS Command Line Interface (AWS CLI) versión 2.0 o posterior instalada y configurada
La versión 1.8 o posterior de Poetry
, pero anterior a la versión 2.0, instalada Docker
instalado Python versión 3.10.x
Limitaciones
Actualmente, el código solo se dirige a los trabajos de formación en SageMaker IA. Extenderlo a los trabajos de procesamiento y a toda la cartera de SageMaker IA es sencillo.
Para una configuración de SageMaker IA totalmente productiva, es necesario contar con detalles adicionales. Algunos ejemplos podrían ser las claves personalizadas AWS Key Management Service (AWS KMS) para el procesamiento y el almacenamiento, o las configuraciones de red. También puede configurar estas opciones adicionales con Hydra en una subcarpeta específica de la carpeta
config.Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region
. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.
Arquitectura
En el diagrama siguiente se muestra la arquitectura de la solución.

En el diagrama, se muestra el siguiente flujo de trabajo:
El científico de datos puede iterar el algoritmo a pequeña escala en un entorno local, ajustar los parámetros y probar el guion de entrenamiento rápidamente sin necesidad de usar Docker o IA. SageMaker (Para más información, consulte la tarea “Run locally for quick testing” en Epics).
Una vez satisfecho con el algoritmo, el científico de datos crea y envía la imagen de Docker al repositorio de Amazon Elastic Container Registry (Amazon ECR) denominado
hydra-sm-artifact. (Para obtener más información, consulta la sección «Ejecutar flujos de trabajo con SageMaker IA» en Epics).El científico de datos inicia trabajos de capacitación en SageMaker IA o trabajos de optimización de hiperparámetros (HPO) mediante scripts de Python. Para los trabajos de entrenamiento habituales, la configuración ajustada se escribe en el bucket de Amazon Simple Storage Service (Amazon S3) denominado
hydra-sample-config. En el caso de los trabajos de HPO, se aplica el conjunto de configuraciones predeterminadas que se encuentra en la carpetaconfig.El trabajo de entrenamiento de SageMaker IA extrae la imagen de Docker, lee los datos de entrada del bucket
hydra-sample-datade Amazon S3 y obtiene la configuración del bucket de Amazon S3hydra-sample-configo utiliza la configuración predeterminada. Tras el entrenamiento, el trabajo guarda los datos de salida en el buckethydra-sample-datade Amazon S3.
Automatización y escala
Para la formación, el reentrenamiento o la inferencia automatizados, puedes integrar el AWS CLI código con servicios como AWS LambdaAWS CodePipeline, o Amazon. EventBridge
El escalamiento se puede lograr al cambiar las configuraciones (por ejemplo, el tamaño de las instancias) o agregar configuraciones para el entrenamiento distribuido.
Tools (Herramientas)
Servicios de AWS
AWS CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en Cuentas de AWS todo el mundo. Regiones de AWS
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante los comandos de tu consola de línea de comandos. Para este patrón, AWS CLI es útil tanto para la configuración inicial de los recursos como para las pruebas.
Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
Amazon SageMaker AI es un servicio de aprendizaje automático (ML) gestionado que le ayuda a crear y entrenar modelos de aprendizaje automático para luego implementarlos en un entorno hospedado listo para la producción. SageMaker AI Training es un servicio de aprendizaje automático totalmente gestionado dentro de la SageMaker IA que permite el entrenamiento de modelos de aprendizaje automático a escala. La herramienta puede gestionar las demandas computacionales de los modelos de entrenamiento de manera eficiente, haciendo uso de la escalabilidad incorporada y la integración con otros Servicios de AWS modelos. SageMaker AI Training también es compatible con algoritmos y contenedores personalizados, lo que la hace flexible para una amplia gama de flujos de trabajo de aprendizaje automático.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
Otras herramientas
Docker
es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores. Se utilizó en este patrón para garantizar entornos coherentes en varias etapas, desde el desarrollo hasta la implementación, y para empaquetar las dependencias y el código de manera fiable. La contenedorización de Docker permitió un escalado y control de versiones fáciles en el flujo de trabajo. Hydra
es una herramienta de administración de la configuración que proporciona flexibilidad para gestionar varias configuraciones y una administración dinámica de los recursos. Es fundamental para administrar las configuraciones del entorno, ya que permite una implementación perfecta en entornos distintos. Para más información acerca de Hydra, consulte Información adicional. Python
es un lenguaje de programación informático de uso general. Se utilizó Python para escribir el código de ML y el flujo de trabajo de implementación. Poetry
es una herramienta de empaquetado y administración de dependencias de Python.
Repositorio de código
El código de este patrón está disponible en el repositorio GitHub configuring-sagemaker-training-jobs-with-hydra
Prácticas recomendadas
Elija una función de IAM para implementar e iniciar los trabajos de formación en SageMaker IA que siga el principio de privilegios mínimos y conceda los permisos mínimos necesarios para realizar una tarea. Para obtener más información, consulte Otorgar privilegio mínimo y Prácticas recomendadas de seguridad en la documentación de IAM.
Utilice credenciales temporales para acceder al rol de IAM en la terminal.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree y active un entorno virtual. | Para crear y activar el entorno virtual, ejecute los comandos siguientes en la raíz del repositorio:
| AWS general |
Implemente la infraestructura. | Para implementar la infraestructura mediante CloudFormation, ejecute el siguiente comando:
| General AWS, DevOps ingeniero |
Descargue de los datos de muestra. | Para descargar los datos de entrada de openml
| AWS general |
Ejecute localmente para hacer pruebas rápidas. | Para ejecutar el código de entrenamiento de manera local para la prueba, ejecute el comando siguiente:
Los registros de todas las ejecuciones se almacenan por tiempo de ejecución en una carpeta llamada También puede hacer varios entrenamientos en paralelo, con parámetros distintos, mediante la funcionalidad | Científico de datos |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Establezca las variables de entorno. | Para ejecutar tu trabajo con SageMaker IA, establece las siguientes variables de entorno, proporcionando tu ID Región de AWS y tu Cuenta de AWS ID:
| AWS general |
Cree y envíe la imagen de Docker. | Para crear la imagen de Docker y enviarla al repositorio de Amazon ECR, ejecute los comandos siguientes:
Esta tarea supone que tiene credenciales válidas en su entorno. La imagen de Docker se envía al repositorio de Amazon ECR especificado en la variable de entorno de la tarea anterior y se utiliza para activar el contenedor de SageMaker IA en el que se ejecutará el trabajo de formación. | Ingeniero de ML, AWS general |
Copie los datos de entrada en Amazon S3. | El trabajo de formación en SageMaker IA debe recoger los datos de entrada. Para copiar los datos de entrada al bucket de Amazon S3 para datos, ejecute el comando siguiente:
| Ingeniero de datos, AWS general |
Envíe trabajos de formación en SageMaker IA. | Para simplificar la ejecución de sus scripts, especifique los parámetros de configuración predeterminados en el archivo
| AWS general, ingeniero de ML, científico de datos |
Ejecute el ajuste de hiperparámetros de la SageMaker IA. | Ejecutar el ajuste de los hiperparámetros de la SageMaker IA es similar a enviar un trabajo de entrenamiento SageMaker de IA. Sin embargo, el script de ejecución difiere en algunos aspectos importantes, como puede ver en el archivo start_sagemaker_hpo_job.py Para iniciar el trabajo de optimización de hiperparámetros (HPO), ejecute los comandos siguientes:
| Científico de datos |
Resolución de problemas
| Problema | Solución |
|---|---|
Token vencido | Exporte AWS credenciales nuevas. |
Falta de permisos de IAM | Asegúrese de exportar las credenciales de un rol de IAM que tenga todos los permisos de IAM necesarios para implementar la CloudFormation plantilla e iniciar los trabajos de formación en SageMaker IA. |
Recursos relacionados
Entrena un modelo con Amazon SageMaker AI (AWS documentación)
Información adicional
Este patrón resuelve los desafíos siguientes:
Coherencia desde el desarrollo local hasta la implementación a escala: con este patrón, los desarrolladores pueden usar el mismo flujo de trabajo, independientemente de si utilizan scripts de Python locales, ejecutan contenedores Docker locales, realizan grandes experimentos con SageMaker IA o despliegan en SageMaker producción con IA. Esta coherencia es importante por los motivos siguientes:
Iteración más rápida: permite una experimentación local rápida sin necesidad de hacer ajustes importantes al escalar verticalmente.
Sin necesidad de refactorizar: la transición a experimentos de SageMaker IA de mayor envergadura es sencilla y no requiere una revisión de la configuración existente.
Mejora continua: desarrollar características nuevas y mejorar de manera continua el algoritmo es sencillo, ya que el código sigue siendo el mismo en todos los entornos.
Administración de la configuración: este patrón utiliza Hydra
Los parámetros se definen en los archivos de configuración, independientes del código.
Los conjuntos de parámetros distintos se pueden intercambiar o combinar con facilidad.
El seguimiento de los experimentos se simplifica porque la configuración de cada ejecución se registra de manera automática.
Los experimentos en la nube pueden utilizar la misma estructura de configuración que las ejecuciones locales, lo que garantiza la coherencia.
Con Hydra, puede administrar la configuración de manera eficaz; para ello, habilite las funciones siguientes:
Divida las configuraciones: divida las configuraciones de su proyecto en partes más pequeñas y manejables que se puedan modificar de manera independiente. Este enfoque facilita la gestión de proyectos complejos.
Ajuste los valores predeterminados con facilidad: cambie de manera rápida las configuraciones de referencia para que sea más fácil probar nuevas ideas.
Alinee las entradas de la CLI y los archivos de configuración: combine las entradas de la línea de comandos con sus archivos de configuración sin problemas. Este enfoque reduce el desorden y la confusión, lo que hace que el proyecto sea más manejable con el tiempo.