Estamos emocionados de anunciar el lanzamiento de Núcleo de SageMakerun nuevo SDK de Python de amazon SageMaker diseñado para ofrecer un enfoque orientado a objetos para gestionar el ciclo de vida del aprendizaje automático (ML). Este nuevo SDK agiliza el procesamiento, la capacitación y la inferencia de datos y presenta encadenamiento de recursos, valores predeterminados inteligentes y capacidades de registro mejoradas. Con SageMaker Core, administrar cargas de trabajo de ML en SageMaker se vuelve más simple y eficiente. El SDK de SageMaker Core viene incluido como parte del SageMaker Python SDK versión 2.231.0 y arriba.
En esta publicación, mostramos cómo SageMaker Core SDK simplifica la experiencia del desarrollador al tiempo que proporciona API para ejecutar sin problemas varios pasos en un ciclo de vida general de ML. También analizamos los principales beneficios de utilizar este SDK y compartimos recursos relevantes para obtener más información sobre este SDK.
Tradicionalmente, los desarrolladores han tenido dos opciones al trabajar con SageMaker: la SDK de AWS para Pythontambién conocido como boto3
o el SDK de Python de SageMaker. Aunque ambos proporcionan API integrales para la gestión del ciclo de vida del aprendizaje automático, a menudo se basan en construcciones poco tipificadas, como constantes codificadas y diccionarios JSON, que imitan una DESCANSAR interfaz. Por ejemplo, para crear un trabajo de formación, Boto3 ofrece una crear_trabajo_de_formación API, pero para recuperar los detalles del trabajo se requiere la describir_trabajo_de_formación API.
Al usar boto3, los desarrolladores enfrentan el desafío de recordar y crear diccionarios JSON extensos, asegurando que todas las claves estén ubicadas con precisión. Echemos un vistazo más de cerca a crear_trabajo_de_formación método de boto3:
Si observamos atentamente, argumentos como AlgorithmSpecification
, InputDataConfig
, OutputDataConfig
, ResourceConfig
o VpcConfig
necesitamos escribir diccionarios JSON detallados. Debido a que contiene muchas variables de cadena en un campo de diccionario largo, es muy fácil tener un error tipográfico en alguna parte o faltar una clave. No es posible realizar una verificación de tipos y, en cuanto al compilador, es solo una cadena.
De manera similar, en SageMaker Python SDK, requiere que creemos un estimador objetar e invocar el adaptar() método en él. Aunque estas construcciones funcionan bien, no son intuitivas para la experiencia del desarrollador. Es difícil para los desarrolladores asignar el significado de un estimador a algo que pueda usarse para entrenar un modelo.
Presentamos el SDK principal de SageMaker
SageMaker Core SDK ofrece resolver este problema reemplazando diccionarios tan largos con interfaces orientadas a objetos, para que los desarrolladores puedan trabajar con abstracciones orientadas a objetos, y SageMaker Core se encargará de convertir esos objetos en diccionarios y ejecutar las acciones en nombre del desarrollador.
Las siguientes son las características clave de SageMaker Core:
- Interfaz orientada a objetos – Proporciona clases orientadas a objetos para tareas como procesamiento, capacitación o implementación. Proporcionar dicha interfaz puede imponer una verificación de tipos estricta, hacer que el código sea más manejable y promover la reutilización. Los desarrolladores pueden beneficiarse de todas las funciones de la programación orientada a objetos.
- Encadenamiento de recursos – Los desarrolladores pueden pasar sin problemas los recursos de SageMaker como objetos proporcionándolos como argumentos para diferentes recursos. Por ejemplo, podemos crear un objeto modelo y pasar ese objeto modelo como argumento mientras configuramos el punto final. Por el contrario, mientras usamos Boto3, necesitamos suministrar
ModelName
como argumento de cadena. - Abstracción de detalles de bajo nivel. – Maneja automáticamente las transiciones de estado de los recursos y las lógicas de sondeo, liberando a los desarrolladores de la gestión de estas complejidades y permitiéndoles centrarse en tareas de mayor valor.
- Soporte para valores predeterminados inteligentes – Es compatible Valores predeterminados inteligentes de SageMakerlo que permite a los desarrolladores establecer valores predeterminados para parámetros como AWS y roles de administración de identidad y acceso (IAM) y configuraciones de nube privada virtual (VPC). Esto agiliza el proceso de configuración y SageMaker Core API seleccionará la configuración predeterminada automáticamente del entorno.
- Finalización automática del código – Mejora la experiencia del desarrollador al ofrecer sugerencias y completaciones en tiempo real en populares entornos de desarrollo integrados (IDE), lo que reduce las posibilidades de errores de sintaxis y acelera el proceso de codificación.
- Paridad total con las API de SageMaker, incluida la IA generativa – Proporciona acceso a las capacidades de SageMaker, incluida la IA generativa, a través del SDK principal, para que los desarrolladores puedan usar SageMaker Core sin problemas sin preocuparse por la paridad de funciones con Boto3.
- Documentación completa y sugerencias de tipo – Proporciona documentación sólida y completa y sugerencias de tipo para que los desarrolladores puedan comprender las funcionalidades de las API y los objetos, escribir código más rápido y reducir errores.
Para este tutorial, utilizamos un ciclo de vida de IA generativa sencillo que involucra la preparación de datos, el ajuste y la implementación de Llama-3-8B LLM de Meta. Usamos el SDK de SageMaker Core para ejecutar todos los pasos.
Requisitos previos
Para comenzar con SageMaker Core, asegúrese de que Python 3.8 o superior esté instalado en el entorno. Hay dos formas de comenzar con SageMaker Core:
- Si no utiliza SageMaker Python SDK, instale el SDK de sagemaker-core usando el siguiente código de ejemplo.
- Si ya está utilizando SageMaker Python SDK, actualícelo a una versión superior o equivalente
2.231.0
. Cualquier versión anterior2.231.0
tiene SageMaker Core preinstalado. El siguiente ejemplo de código muestra el comando para actualizar el SDK de SageMaker Python.
Tutorial de la solución
Para administrar sus cargas de trabajo de ML en SageMaker usando SageMaker Core, siga los pasos de las siguientes secciones.
Preparación de datos
En esta fase, prepare los datos de capacitación y prueba para el LLM. Aquí, utilice un conjunto de datos disponible públicamente. Conjunto de datos de respuesta a preguntas de Stanford (SQuAD). El siguiente código crea un ProcessingJob
objeto usando el método estático create
especificando la ruta del script, el tipo de instancia y el recuento de instancias. La configuración predeterminada inteligente obtiene la función de ejecución de SageMaker, lo que simplifica aún más la experiencia del desarrollador. No era necesario proporcionar la ubicación de los datos de entrada y la ubicación de los datos de salida porque también se proporcionan a través de valores predeterminados inteligentes. Para obtener información sobre cómo configurar valores predeterminados inteligentes, consulte Configuración y uso de valores predeterminados con SageMaker Python SDK.
Capacitación
En este paso, utiliza el modelo Llama-3-8B previamente entrenado y lo ajusta con los datos preparados del paso anterior. El siguiente fragmento de código muestra la API de capacitación. Tu creas un TrainingJob
objeto usando el create
método, especificando el script de entrenamiento, el directorio de origen, el tipo de instancia, el recuento de instancias, la ruta de salida y los hiperparámetros.
Para los hiperparámetros, crea un objeto, en lugar de proporcionar un diccionario. Utilice el encadenamiento de recursos pasando la salida del recurso ProcessingJob como datos de entrada para TrainingJob.
También utiliza los valores predeterminados inteligentes para obtener la función de ejecución de SageMaker. Espere a que finalice el trabajo de capacitación y producirá un artefacto modelo, envuelto en un tar.gz, y lo almacenará en el output_path
proporcionado en la API de capacitación anterior.
Creación e implementación de modelos.
La implementación de un modelo en un terminal de SageMaker consta de tres pasos:
- Crear un objeto modelo de SageMaker
- Crear la configuración del punto final
- Crear el punto final
SageMaker Core proporciona una interfaz orientada a objetos para los tres pasos.
- Crear un objeto modelo de SageMaker
El siguiente fragmento de código muestra la experiencia de creación de modelos en SageMaker Core.
De manera similar a los pasos de procesamiento y capacitación, tiene un método de creación de la clase modelo. La definición de contenedor ahora es un objeto, que especifica la definición de contenedor que incluye la imagen del contenedor de inferencia de modelo grande (LMI) y el ID del modelo HuggingFace. También puede observar el encadenamiento de recursos en acción cuando pasa el resultado del TrainingJob como datos de entrada al modelo.
- Crear la configuración del punto final
Cree la configuración del punto final. El siguiente fragmento de código muestra la experiencia en SageMaker Core.
ProductionVariant
es un objeto en sí mismo ahora.
- Crear el punto final
Cree el punto final utilizando el siguiente fragmento de código.
Esto también utiliza el encadenamiento de recursos. En lugar de suministrar sólo el endpoint_config_name
(en Boto3), te pasas todo endpoint_config
objeto.
Como hemos mostrado en estos pasos, SageMaker Core simplifica la experiencia de desarrollo al proporcionar una interfaz orientada a objetos para interactuar con los recursos de SageMaker. El uso de valores predeterminados inteligentes y encadenamiento de recursos reduce la cantidad de código repetitivo y especificación manual de parámetros, lo que resulta en un código más legible y fácil de mantener.
Limpieza
Cualquier punto final creado con el código de esta publicación generará cargos. Apague cualquier punto final no utilizado utilizando el borrar() método.
Una nota sobre el SDK de SageMaker Python existente
SageMaker Python SDK utilizará SageMaker Core como base y se beneficiará de las interfaces orientadas a objetos creadas como parte de SageMaker Core. Los clientes pueden optar por utilizar el enfoque orientado a objetos mientras utilizan el SDK de Python de SageMaker en el futuro.
Beneficios
El SDK de SageMaker Core ofrece varios beneficios:
- Desarrollo simplificado – Al abstraer detalles de bajo nivel y proporcionar valores predeterminados inteligentes, los desarrolladores pueden centrarse en crear e implementar modelos de aprendizaje automático sin verse ralentizados por tareas repetitivas. También alivia a los desarrolladores de la sobrecarga cognitiva de tener que recordar diccionarios multinivel largos y complejos. En su lugar, pueden trabajar en el paradigma orientado a objetos con el que los desarrolladores se sientan más cómodos.
- Mayor productividad – Funciones como la finalización automática de código y las sugerencias de escritura ayudan a los desarrolladores a escribir código más rápido y con menos errores.
- Legibilidad mejorada – Las clases de recursos dedicadas y el encadenamiento de recursos dan como resultado un código más legible y mantenible.
- Integración ligera con AWS Lambda – Debido a que este SDK es liviano (alrededor de 8 MB cuando se descomprime), es sencillo crear una capa AWS Lambda para SageMaker Core y usarla para ejecutar varios pasos en el ciclo de vida de ML a través de funciones Lambda.
Conclusión
SageMaker Core es una poderosa adición a amazon SageMaker, que brinda una experiencia de desarrollo optimizada y eficiente para los profesionales del aprendizaje automático. Con su interfaz orientada a objetos, encadenamiento de recursos y valores predeterminados inteligentes, SageMaker Core permite a los desarrolladores centrarse en crear e implementar modelos de aprendizaje automático sin verse frenados por una orquestación compleja de estructuras JSON. Consulte los siguientes recursos para comenzar hoy con SageMaker Core:
Sobre los autores
vikesh pandey es arquitecto principal de soluciones especializado en GenAI/ML en AWS y ayuda a clientes de industrias financieras a diseñar, construir y escalar sus cargas de trabajo GenAI/ML en AWS. Tiene una experiencia de más de una década y media trabajando en todo el conjunto de ingeniería de software y aprendizaje automático. Fuera del trabajo, a Vikesh le gusta probar diferentes cocinas y practicar deportes al aire libre.
Shweta Singh es gerente senior de productos en el equipo de la plataforma de aprendizaje automático (ML) de amazon SageMaker en AWS y lidera el SDK de Python de SageMaker. 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.