La creación de un flujo de implementación para aplicaciones de inteligencia artificial (IA) generativa a gran escala es un desafío enorme debido a las complejidades y los requisitos únicos de estos sistemas. Los modelos de IA generativa evolucionan constantemente y se lanzan nuevas versiones y actualizaciones con frecuencia. Esto hace que la gestión e implementación de estas actualizaciones en un flujo de implementación a gran escala, al tiempo que se proporciona coherencia y se minimiza el tiempo de inactividad, sea una tarea importante. Las aplicaciones de IA generativa requieren la ingesta, el preprocesamiento y el formateo continuos de grandes cantidades de datos de diversas fuentes. La construcción de flujos de datos robustos que puedan manejar esta carga de trabajo de manera confiable y eficiente a gran escala es un desafío considerable. Monitorear el rendimiento, el sesgo y las implicaciones éticas de los modelos de IA generativa en entornos de producción es una tarea crucial.
Para lograrlo a gran escala, se necesitan inversiones significativas en recursos, experiencia y colaboración interfuncional entre múltiples personas, como científicos de datos o desarrolladores de aprendizaje automático (ML) que se centran en el desarrollo de modelos de ML e ingenieros de operaciones de aprendizaje automático (MLOps) que se centran en los aspectos únicos de los proyectos de IA/ML y ayudan a mejorar el tiempo de entrega, reducir los defectos y hacer que la ciencia de datos sea más productiva. En esta publicación, le mostramos cómo convertir el código Python que ajusta un modelo de IA generativo en amazon Bedrock desde archivos locales a un flujo de trabajo reutilizable utilizando decoradores de amazon SageMaker Pipelines. Puede utilizar amazon SageMaker Model Building Pipelines para colaborar entre varios equipos de IA/ML.
Canalizaciones de SageMaker
Puede utilizar SageMaker Pipelines para definir y organizar los distintos pasos involucrados en el ciclo de vida de ML, como el preprocesamiento de datos, el entrenamiento de modelos, la evaluación y la implementación. Esto agiliza el proceso y proporciona coherencia en las diferentes etapas del proceso. SageMaker Pipelines puede gestionar el control de versiones de modelos y el seguimiento de linaje. Realiza un seguimiento automático de los artefactos, hiperparámetros y metadatos del modelo, lo que le ayuda a reproducir y auditar las versiones del modelo.
La función de decorador SageMaker Pipelines ayuda a convertir el código ML local escrito como un programa Python en uno o más pasos de pipeline. Debido a que se puede acceder a amazon Bedrock como una API, los desarrolladores que no conocen amazon SageMaker pueden implementar una aplicación amazon Bedrock o ajustar amazon Bedrock escribiendo un programa Python normal.
Puede escribir su función de ML como lo haría para cualquier proyecto de ML. Después de probarla localmente o como un trabajo de capacitación, un científico de datos o un profesional que sea experto en SageMaker puede convertir la función en un paso de canalización de SageMaker agregando un @step
decorador.
Descripción general de la solución
SageMaker Model Building Pipelines es una herramienta para crear pipelines de ML que aprovecha la integración directa con SageMaker. Gracias a esta integración, puede crear un pipeline para orquestación mediante una herramienta que se encarga de gran parte de la creación y administración de pasos por usted.
A medida que pasa de las fases piloto y de prueba a la implementación de modelos de IA generativos a escala, deberá aplicar prácticas de DevOps a las cargas de trabajo de ML. SageMaker Pipelines está integrado con SageMaker, por lo que no necesita interactuar con ningún otro servicio de AWS. Tampoco necesita administrar ningún recurso porque SageMaker Pipelines es un servicio completamente administrado, lo que significa que crea y administra recursos para usted. amazon SageMaker Studio ofrece un entorno para administrar la experiencia de SageMaker Pipelines de extremo a extremo. La solución en esta publicación muestra cómo puede tomar el código Python que se escribió para preprocesar, ajustar y probar un modelo de lenguaje grande (LLM) utilizando las API de amazon Bedrock y convertirlo en una canalización de SageMaker para mejorar la eficiencia operativa de ML.
La solución tiene tres pasos principales:
- Escriba código Python para preprocesar, entrenar y probar un LLM en amazon Bedrock.
- Agregar
@step
funciones decoradas para convertir el código Python en una canalización de SageMaker. - Cree y ejecute el pipeline de SageMaker.
El siguiente diagrama ilustra el flujo de trabajo de la solución.
Prerrequisitos
Si solo desea ver el código del cuaderno, puede verlo amazon-sagemaker-examples/blob/main/sagemaker-pipelines/step-decorator/bedrock-examples/fine_tune_bedrock_step_decorator.ipynb”>cuaderno en GitHub.
Si no tienes experiencia en AWS, primero debes crear y configurar una cuenta de AWS. Luego, deberás configurar SageMaker Studio en tu cuenta de AWS. Crea un espacio JupyterLab dentro de SageMaker Studio para ejecutar la aplicación JupyterLab.
Cuando esté en el espacio JupyterLab de SageMaker Studio, complete los siguientes pasos:
- En el menú Archivo, elija Nuevo y Terminal para abrir una nueva terminal.
- En la terminal, ingrese el siguiente código:
- Verás la carpeta que llama
amazon-sagemaker-examples
en el panel Explorador de archivos de SageMaker Studio. - Abrir la carpeta
amazon-sagemaker-examples/sagemaker-pipelines/step-decorator/bedrock-examples
. - Abre el cuaderno
fine_tune_bedrock_step_decorator.ipynb
.
Este cuaderno contiene todo el código para esta publicación y puedes ejecutarlo de principio a fin.
Explicación del código del cuaderno
El notebook utiliza el depósito predeterminado de amazon Simple Storage Service (amazon S3) para el usuario. El depósito predeterminado de S3 sigue el patrón de nombres s3://sagemaker-{Region}-{your-account-id}
Si aún no existe, se creará automáticamente.
Utiliza el rol de AWS Identity and Access Management (IAM) predeterminado de SageMaker Studio para el usuario. Si su rol de usuario de SageMaker Studio no tiene acceso de administrador, debe agregar los permisos necesarios al rol.
Para obtener más información, consulte lo siguiente:
Crea una sesión de SageMaker y obtiene el depósito S3 predeterminado y el rol de IAM:
Utilice Python para preprocesar, entrenar y probar un LLM en amazon Bedrock
Para comenzar, necesitamos descargar datos y preparar un LLM en amazon Bedrock. Para ello, utilizamos Python.
Cargar datos
Nosotros usamos el Conjunto de datos de CNN/DailyMail de Hugging Face para ajustar el modelo. El conjunto de datos CNN/DailyMail es un conjunto de datos en idioma inglés que contiene más de 300.000 artículos de noticias únicos escritos por periodistas de CNN y Daily Mail. El conjunto de datos sin procesar incluye los artículos y sus resúmenes para entrenamiento, validación y prueba. Antes de que podamos usar el conjunto de datos, debe formatearse para incluir el mensaje. Vea el siguiente código:
Datos divididos
Divida el conjunto de datos en entrenamiento, validación y prueba. Para esta publicación, restringimos el tamaño de cada fila a 3000 palabras y seleccionamos 100 filas para entrenamiento, 10 para validación y 5 para prueba. Puede seguir el cuaderno en amazon-sagemaker-examples/tree/main/sagemaker-pipelines/step-decorator/batch-examples”>GitHub Para más detalles.
Subir datos a amazon S3
A continuación, convertimos los datos al formato JSONL y cargamos los archivos de entrenamiento, validación y prueba en amazon S3:
Entrenar el modelo
Ahora que los datos de entrenamiento están cargados en amazon S3, es momento de ajustar un modelo de amazon Bedrock utilizando el conjunto de datos CNN/DailyMail. Ajustamos el modelo amazon Titan Text Lite proporcionado por amazon Bedrock para un caso de uso de resumen. Definimos los hiperparámetros para el ajuste y lanzamos el trabajo de entrenamiento:
Crear rendimiento aprovisionado
Rendimiento se refiere a la cantidad y la tasa de entradas y salidas que un modelo procesa y devuelve. Puede comprar Provisioned Throughput para aprovisionar recursos dedicados en lugar de un rendimiento a pedido, que podría tener fluctuaciones de rendimiento. Para los modelos personalizados, debe comprar Provisioned Throughput para poder usarlo. Consulte Provisioned Throughput para amazon Bedrock para obtener más información.
Probar el modelo
Ahora es el momento de invocar y probar el modelo. Usamos el indicador de tiempo de ejecución de amazon Bedrock del conjunto de datos de prueba junto con el ID del rendimiento aprovisionado que se configuró en el paso anterior y parámetros de inferencia como maxTokenCount, stopSequence, temperature,
y top
:
Decore funciones con @step que convierte funciones de Python en pasos de canalización de SageMaker
El @step
El decorador es una función que convierte su código ML local en uno o más pasos de canalización. Puede escribir su función ML como lo haría para cualquier proyecto ML y luego crear una canalización convirtiendo funciones Python en pasos de canalización utilizando el @step
decorador, creando dependencias entre esas funciones para crear un gráfico de canalización o un gráfico acíclico dirigido (DAG), y pasando los nodos de hoja de ese gráfico como una lista de pasos a la canalización. Para crear un paso usando el @step
decorador, anota la función con @step
Cuando se invoca esta función, recibe como entrada la salida DelayedReturn del paso anterior del pipeline. Una instancia contiene la información sobre todos los pasos anteriores definidos en la función que forman el DAG del pipeline de SageMaker.
En el cuaderno ya agregamos el @step
Decorador al comienzo de cada definición de función en la celda donde se definió la función, como se muestra en el código siguiente. El código de la función provendrá del programa de Python de ajuste fino que estamos tratando de convertir aquí en una canalización de SageMaker.
Crear y ejecutar la canalización de SageMaker
Para unirlo todo, conectamos la tubería definida @step
funciones en una secuencia de varios pasos. Luego, enviamos y ejecutamos la secuencia:
Una vez ejecutada la canalización, puede enumerar los pasos de la canalización para recuperar el conjunto de datos completo de resultados:
Puede realizar un seguimiento del linaje de una canalización de SageMaker ML en SageMaker Studio. El seguimiento del linaje en SageMaker Studio se centra en un DAG. El DAG representa los pasos de una canalización. Desde el DAG, puede realizar un seguimiento del linaje de un paso a otro. El siguiente diagrama muestra los pasos de la canalización de ajuste fino de amazon Bedrock. Para obtener más información, consulte Ver la ejecución de una canalización.
Si elige un paso en el menú desplegable Seleccionar paso, podrá centrarse en una parte específica del gráfico. Puede ver registros detallados de cada paso del pipeline en amazon CloudWatch Logs.
Limpiar
Para limpiar y evitar incurrir en cargos, siga las instrucciones de limpieza detalladas en el amazon-sagemaker-examples”>Repositorio de GitHub Para eliminar lo siguiente:
- El rendimiento aprovisionado de amazon Bedrock
- El modelo del cliente
- El oleoducto Sagemaker
- El objeto de amazon S3 que almacena el conjunto de datos ajustado
Conclusión
MLOps se centra en optimizar, automatizar y supervisar los modelos de ML a lo largo de su ciclo de vida. La creación de un flujo de trabajo de MLOps sólido exige una colaboración interdisciplinaria. Los científicos de datos, los ingenieros de ML, el personal de TI y los equipos de DevOps deben trabajar juntos para poner en funcionamiento los modelos desde la investigación hasta la implementación y el mantenimiento. SageMaker Pipelines le permite crear y gestionar flujos de trabajo de ML a la vez que ofrece capacidades de almacenamiento y reutilización para los pasos del flujo de trabajo.
En esta publicación, le mostramos un ejemplo que utiliza los decoradores de pasos de SageMaker para convertir un programa Python para crear un modelo de amazon Bedrock personalizado en una canalización de SageMaker. Con SageMaker Pipelines, obtiene los beneficios de un flujo de trabajo automatizado que se puede configurar para ejecutarse según un cronograma en función de los requisitos para volver a entrenar el modelo. También puede usar SageMaker Pipelines para agregar funciones útiles, como el seguimiento de linaje y la capacidad de administrar y visualizar todo su flujo de trabajo desde el entorno de SageMaker Studio.
AWS ofrece soluciones de ML administradas, como amazon Bedrock y SageMaker, para ayudarlo a implementar y servir modelos básicos listos para usar existentes o crear y ejecutar sus propios modelos personalizados.
Consulte los siguientes recursos para obtener más información sobre los temas tratados en esta publicación:
Acerca de los autores
Neel Sendas Neel es gerente técnico principal de cuentas en amazon Web Services. Trabaja con clientes empresariales para diseñar, implementar y escalar aplicaciones en la nube para lograr sus objetivos comerciales. Trabajó en varios casos de uso de ML, que van desde la detección de anomalías hasta la calidad predictiva de productos para la optimización de la fabricación y la logística. Cuando no está ayudando a los clientes, se dedica al golf y al baile de salsa.
Ashish Rawat es un arquitecto de soluciones sénior especialista en IA/ML en amazon Web Services, con sede en Atlanta, Georgia. Ashish tiene una amplia experiencia en arquitectura de TI empresarial y desarrollo de software, incluidos IA/ML e IA generativa. Es fundamental para orientar a los clientes para resolver desafíos comerciales complejos y crear una ventaja competitiva utilizando los servicios de IA/ML de AWS.