Amazon SageMaker ha rediseñado su SDK de Python para proporcionar una interfaz unificada orientada a objetos que facilita la interacción con los servicios de SageMaker. El nuevo SDK está diseñado teniendo en mente una experiencia de usuario por niveles, donde el nuevo SDK de nivel inferior (Núcleo de SageMaker) proporciona acceso a toda la gama de funciones y configuraciones de SageMaker, lo que permite una mayor flexibilidad y control para los ingenieros de ML. La capa abstracta de nivel superior está diseñada para científicos de datos con experiencia limitada en AWS y ofrece una interfaz simplificada que oculta detalles complejos de la infraestructura.
En esta serie de dos partes, presentamos la capa abstracta del SDK de Python de SageMaker que le permite entrenar e implementar modelos de aprendizaje automático (ML) mediante el uso del nuevo ModelTrainer y las clases mejoradas de ModelBuilder.
En esta publicación, nos centramos en la clase ModelTrainer para simplificar la experiencia de formación. La clase ModelTrainer proporciona mejoras significativas con respecto a la actual Estimador clase, que se analizan en detalle en esta publicación. Le mostramos cómo utilizar la clase ModelTrainer para entrenar sus modelos de ML, lo que incluye la ejecución de entrenamiento distribuido utilizando un script o contenedor personalizado. En parte 2le mostramos cómo crear un modelo e implementarlo en un punto final de SageMaker utilizando la clase ModelBuilder mejorada.
Beneficios de la clase ModelTrainer
La nueva clase ModelTrainer ha sido diseñada para abordar los desafíos de usabilidad asociados con la clase Estimator. En el futuro, ModelTrainer será el enfoque preferido para el entrenamiento de modelos, aportando mejoras significativas que mejoran enormemente la experiencia del usuario. Esta evolución marca un paso hacia el logro de la mejor experiencia de desarrollador para la capacitación de modelos. Los siguientes son los beneficios clave:
- Intuición mejorada – La clase ModelTrainer reduce la complejidad al consolidar las configuraciones en solo unos pocos parámetros principales. Esta optimización minimiza la sobrecarga cognitiva, lo que permite a los usuarios centrarse en el entrenamiento del modelo en lugar de en las complejidades de la configuración. Además, emplea clases de configuración intuitivas para interacciones sencillas con la plataforma.
- Modo script simplificado y BYOC – La transición del desarrollo local a la capacitación en la nube ahora es perfecta. ModelTrainer asigna automáticamente el código fuente, las rutas de datos y las especificaciones de parámetros al entorno de ejecución remota, eliminando la necesidad de protocolos de enlace especiales o procesos de configuración complejos.
- Entrenamiento distribuido simplificado – La clase ModelTrainer proporciona flexibilidad mejorada para que los usuarios especifiquen comandos personalizados y estrategias de entrenamiento distribuidas, lo que le permite proporcionar directamente el comando exacto que desea ejecutar en su contenedor a través del
commandparámetro en elSourceCodeEste enfoque desacopla las estrategias de capacitación distribuida del conjunto de herramientas de capacitación y los estimadores específicos del marco. - Contratos de hiperparámetros mejorados – La clase ModelTrainer pasa los hiperparámetros del trabajo de entrenamiento como una única variable de entorno, lo que le permite cargar los hiperparámetros usando una única
SM_HPSvariable.
Para explicar con más detalle cada uno de estos beneficios, lo demostramos con ejemplos en las siguientes secciones y, finalmente, le mostramos cómo configurar y ejecutar capacitación distribuida para el modelo Meta Llama 3.1 8B utilizando el nuevo ModelTrainer clase.
Lanzar un trabajo de entrenamiento usando la clase ModelTrainer
La clase ModelTrainer simplifica la experiencia al permitirle personalizar el trabajo de capacitación, lo que incluye proporcionar un script personalizado, proporcionar directamente un comando para ejecutar el trabajo de capacitación, admitir el modo local y mucho más. Sin embargo, puede iniciar un trabajo de capacitación de SageMaker en modo script proporcionando parámetros mínimos: SourceCode y el URI de la imagen de entrenamiento.
El siguiente ejemplo ilustra cómo puede iniciar un trabajo de entrenamiento con su propio script personalizado proporcionando solo el script y el URI de la imagen de entrenamiento (en este caso, PyTorch) y un archivo de requisitos opcional. El SDK establece automáticamente parámetros adicionales, como el tipo y el tamaño de la instancia, para preestablecer los valores predeterminados, y parámetros como el Gestión de acceso e identidad de AWS (IAM) y la sesión de SageMaker se detectan automáticamente a partir de la sesión actual y las credenciales del usuario. Los administradores y usuarios también pueden sobrescribir los valores predeterminados utilizando el Valores predeterminados del SDK archivo de configuración. Para obtener una lista detallada de valores preestablecidos, consulte la Documentación del SDK.
Con configuraciones diseñadas específicamente, ahora puede reutilizar estos objetos para crear múltiples trabajos de entrenamiento con diferentes hiperparámetros, por ejemplo, sin tener que redefinir todos los parámetros.
Ejecute el trabajo localmente para experimentar.
Para ejecutar el trabajo de entrenamiento anterior localmente, simplemente puede configurar el training_mode parámetro como se muestra en el siguiente código:
El trabajo de capacitación se realiza de forma remota porque training_mode está configurado para Mode.LOCAL_CONTAINER. Si no se configura explícitamente, ModelTrainer ejecuta un trabajo de entrenamiento remoto de SageMaker de forma predeterminada. Este comportamiento también se puede aplicar cambiando el valor a Mode.SAGEMAKER_TRAINING_JOB. Para obtener una lista completa de las configuraciones disponibles, incluidas la informática y las redes, consulte la Documentación del SDK.
Lea los hiperparámetros en su script personalizado
ModelTrainer admite varias formas de leer los hiperparámetros que se pasan a un trabajo de entrenamiento. Además del soporte existente para leer los hiperparámetros como argumentos de línea de comando en su script personalizado, ModelTrainer también admite la lectura de los hiperparámetros como variables de entorno individuales, con el prefijo SM_HPS_<hyperparameter-key>o como un diccionario de variables de entorno único, SM_HPS.
Supongamos que se pasan los siguientes hiperparámetros al trabajo de entrenamiento:
Tienes las siguientes opciones:
- Opción 1 – Cargue los hiperparámetros en un único diccionario JSON usando el
SM_HPSvariable de entorno en su script personalizado:
- Opción 2 – Leer los hiperparámetros como variables de entorno individuales, con el prefijo
SM_HPcomo se muestra en el siguiente código (debe especificar explícitamente el tipo de entrada correcto para estas variables):
- Opción 3 – Lea los hiperparámetros como argumentos de AWS CLI utilizando
parse.args:
Ejecute trabajos de capacitación distribuidos
SageMaker admite la capacitación distribuida para respaldar la capacitación para tareas de aprendizaje profundo, como el procesamiento del lenguaje natural y la visión por computadora, para ejecutar datos seguros y escalables en paralelo y modelar trabajos paralelos. Esto generalmente se logra proporcionando el conjunto correcto de parámetros cuando se utiliza un Estimador. Por ejemplo, para utilizar torchrundefinirías el distribution parámetro en el Estimador PyTorch y configúrelo en "torch_distributed": {"enabled": True}.
La clase ModelTrainer proporciona flexibilidad mejorada para que los usuarios especifiquen comandos personalizados directamente a través del command parámetro en el SourceCode clase y apoyos torchrun, torchrun smpy las estrategias del IPM. Esta capacidad es particularmente útil cuando necesita iniciar un trabajo con un comando de inicio personalizado que no es compatible con el kit de herramientas de capacitación.
En el siguiente ejemplo, mostramos cómo ajustar la última versión MetaLlama 3.1 8B modelo usando el script de inicio predeterminado usando Torchrun en un conjunto de datos personalizado que se preprocesa y guarda en un Servicio de almacenamiento simple de Amazon (Amazon S3) ubicación:
Si quisieras personalizar tu torchrun script de inicio, también puede proporcionar directamente los comandos usando el command parámetro:
Para obtener más ejemplos y flujos de trabajo de aprendizaje automático de un extremo a otro utilizando SageMaker ModelTrainer, consulte la repositorio de GitHub.
Conclusión
La clase SageMaker ModelTrainer recientemente lanzada simplifica la experiencia del usuario al reducir la cantidad de parámetros, introducir configuraciones intuitivas y admitir configuraciones complejas, como traer su propio contenedor y ejecutar capacitación distribuida. Los científicos de datos también pueden realizar una transición sin problemas de la capacitación local a la capacitación remota y a la capacitación en múltiples nodos utilizando ModelTrainer.
Le recomendamos que pruebe la clase ModelTrainer consultando el Documentación del SDK y cuadernos de muestra sobre el repositorio de GitHub. La clase ModelTrainer está disponible desde SageMaker SDK v2.x en adelante, sin costo adicional. En parte 2 En esta serie, le mostramos cómo crear un modelo e implementarlo en un punto final de SageMaker utilizando la clase ModelBuilder mejorada.
Acerca de los autores
Durga Sury es arquitecto senior de soluciones en el equipo de Amazon SageMaker. Durante los últimos cinco años, ha trabajado con varios clientes empresariales para configurar una plataforma AI/ML segura y escalable construida en SageMaker.
Shweta Singh es gerente senior de productos en el equipo de la plataforma Amazon SageMaker Machine Learning (ML) en AWS, y lidera el SDK de SageMaker Python. Ha trabajado en varios puestos de productos en Amazon durante más de 5 años. Tiene una licenciatura en Ingeniería Informática y una Maestría en Ciencias en Ingeniería Financiera, ambas de la Universidad de Nueva York.