Los modelos de lenguaje de gran tamaño se han vuelto indispensables para generar respuestas inteligentes y matizadas en una amplia variedad de casos de uso comerciales. Sin embargo, las empresas a menudo tienen datos y casos de uso únicos que requieren personalizar modelos de lenguaje de gran tamaño más allá de sus capacidades listas para usar. amazon Bedrock es un servicio completamente administrado que ofrece una selección de modelos básicos (FM) de alto rendimiento de empresas de IA líderes como AI21 Labs, Anthropic, Cohere, Meta, Mistral ai, Stability ai y amazon a través de una única API, junto con un amplio conjunto de capacidades que necesita para crear aplicaciones de IA generativas con seguridad, privacidad e IA responsable. Para permitir una personalización segura y escalable de modelos, amazon Web Services (AWS) anunció el soporte para la personalización de modelos en amazon Bedrock en AWS re:Invent 2023. Esto permite a los clientes entrenar previamente modelos seleccionados utilizando sus propios datos patentados para adaptar las respuestas del modelo a su contexto comercial. La calidad del modelo personalizado depende de múltiples factores, incluida la calidad de los datos de entrenamiento y los hiperparámetros utilizados para personalizar el modelo. Esto requiere que los clientes realicen múltiples iteraciones para desarrollar el mejor modelo personalizado para sus necesidades.
Para abordar este desafío, AWS anunció la integración nativa entre amazon Bedrock y AWS Step Functions. Esto permite a los clientes organizar flujos de trabajo repetibles y automatizados para personalizar los modelos de amazon Bedrock.
En esta publicación, demostraremos cómo Step Functions puede ayudar a superar los puntos críticos clave en la personalización de modelos. Aprenderá a configurar un flujo de trabajo de muestra que organiza el entrenamiento, la evaluación y el monitoreo de modelos. La automatización de estas tareas complejas a través de un marco repetible reduce los plazos de desarrollo y libera todo el valor de amazon Bedrock para sus necesidades únicas.
Arquitectura
Para esta demostración, utilizaremos un caso de uso de resumen con Cohere Command Light Model en amazon Bedrock. Sin embargo, este flujo de trabajo se puede utilizar para el caso de uso de resumen de otros modelos al pasar el ID del modelo base y los hiperparámetros necesarios y realizar cambios menores específicos del modelo en el flujo de trabajo. Consulte la guía del usuario de amazon Bedrock para obtener la lista completa de modelos compatibles para la personalización. Toda la infraestructura necesaria se implementará utilizando AWS Serverless Application Model (SAM).
A continuación se presenta un resumen de la funcionalidad de la arquitectura:
- El usuario carga los datos de entrenamiento en formato JSON Line en un depósito de datos de entrenamiento de amazon Simple Storage Service (amazon S3) y los datos de validación e inferencia de referencia en el depósito de datos de validación. Estos datos deben estar en formato JSON Line.
- La función de paso
CustomizeBedrockModel
La máquina de estados se inicia con los parámetros de entrada, como el modelo a personalizar, los hiperparámetros, las ubicaciones de los datos de entrenamiento y otros parámetros que se analizan más adelante en esta publicación.- El flujo de trabajo invoca amazon Bedrock
CreateModelCustomizationJob
API sincrónica para ajustar el modelo base con los datos de entrenamiento del depósito S3 y los hiperparámetros pasados. - Una vez creado el modelo personalizado, el flujo de trabajo invoca amazon Bedrock
CreateProvisionedModelThroughput
API para crear un rendimiento aprovisionado sin compromiso. - La máquina de estados principal llama a la máquina de estados secundaria para evaluar el rendimiento del modelo personalizado con respecto al modelo base.
- La máquina de estados secundaria invoca el modelo base y el modelo personalizado aprovisiona el rendimiento con los mismos datos de validación del depósito de validación S3 y almacena los resultados de la inferencia en el depósito de inferencia.
- Se llama a una función AWS Lambda para evaluar la calidad del resumen realizado por el modelo personalizado y el modelo base mediante la métrica BERTScore. Si el modelo personalizado tiene un rendimiento inferior al del modelo base, se elimina el rendimiento aprovisionado.
- Se envía un correo electrónico de notificación con el resultado.
- El flujo de trabajo invoca amazon Bedrock
Prerrequisitos
- Cree una cuenta de AWS si aún no tiene una.
- Acceso a la cuenta de AWS a través de la consola de administración de AWS y la interfaz de línea de comandos de AWS (AWS CLI). El usuario de AWS Identity and Access Management (IAM) que utilice debe tener permisos para realizar las llamadas de servicio de AWS necesarias y administrar los recursos de AWS mencionados en esta publicación. Al otorgar permisos al usuario de IAM, siga el principio de privilegios mínimos.
- Git instalado.
- Modelo de aplicación sin servidor de AWS (AWS SAM) instalado.
- Docker debe estar instalado y ejecutándose.
- Debe habilitar el acceso al modelo Cohere Command Light en la consola de amazon Bedrock en la región de AWS donde ejecutará la plantilla de AWS SAM. Personalizaremos el modelo en esta demostración. Sin embargo, el flujo de trabajo se puede ampliar con cambios menores específicos del modelo para admitir la personalización de otros modelos compatibles. Consulte la guía del usuario de amazon Bedrock para obtener la lista completa de modelos compatibles para la personalización. No debe tener unidades de modelo de compromiso reservadas para el modelo base para ejecutar esta demostración.
Preparación de la demostración
Los recursos de esta demostración se aprovisionarán en la región de AWS del este de EE. UU. (N. Virginia) (us-east-1). Recorreremos las siguientes fases para implementar nuestro flujo de trabajo de personalización de modelos:
- Implementar la solución utilizando la plantilla AWS SAM
- Subir datos de entrenamiento propietarios al depósito S3
- Ejecute el flujo de trabajo de Step Functions y monitoree
- Ver el resultado del entrenamiento del modelo de base
- Limpiar
Paso 1: Implementar la solución utilizando la plantilla AWS SAM
Consulte el repositorio de GitHub para obtener las instrucciones más recientes. Ejecute los pasos a continuación para implementar el flujo de trabajo de Step Functions mediante la plantilla de AWS SAM. Puede
- Crea un nuevo directorio, navega hasta ese directorio en una terminal y clona el repositorio de GitHub:
- Cambiar el directorio al directorio de la solución:
- Ejecutar el
build.sh
para crear la imagen del contenedor.
- Cuando se le solicite, ingrese los siguientes valores de parámetros:
- Desde la línea de comandos, use AWS SAM para implementar los recursos de AWS para el patrón como se especifica en
template.yml
archivo:
- Proporcione las siguientes entradas cuando se le solicite:
- Tenga en cuenta los resultados del proceso de implementación de SAM. Estos contienen los nombres de recursos y/o ARN que se utilizan en los pasos subsiguientes.
Paso 2: Cargue datos de entrenamiento patentados en el depósito S3
Nuestros datos de entrenamiento patentados se cargarán en el depósito S3 dedicado creado en el paso anterior y se usarán para ajustar el modelo amazon Bedrock Cohere Command Light. Los datos de entrenamiento deben estar en formato de línea JSON y cada línea debe contener un JSON válido con dos atributos: solicitud y finalización.
solía Este conjunto de datos públicos de HuggingFace y lo convertí al formato de línea JSON.
- Sube los archivos de datos de entrenamiento proporcionados al depósito S3 utilizando el siguiente comando. Reemplazar
TrainingDataBucket
con el valor de lasam deploy --guided
Salida. Actualizaryour-region
con la Región que proporcionó al ejecutar la plantilla SAM.
- Subir el
validation-data.json
archivo al depósito S3 utilizando el comando que sigue. ReemplaceValidationDataBucket
con el valor de lasam deploy --guided
Salida. Actualizaryour-region
con la región que proporcionó al ejecutar la plantilla SAM:
- Subir el
reference-inference.json
archivo al depósito S3 utilizando el comando que sigue. ReemplaceValidationDataBucket
con el valor de lasam deploy --guided
Salida. Actualizaryour-region
con la región que proporcionó al ejecutar la plantilla SAM.
- También debería haber recibido un correo electrónico para verificar la dirección de correo electrónico del remitente. Verifique la dirección de correo electrónico siguiendo las instrucciones que se indican en el correo electrónico.
Paso 3: Ejecute el flujo de trabajo de Step Functions y monitoree
Ahora iniciaremos la máquina de estados de Step Functions para ajustar el modelo Cohere Command Light en amazon Bedrock en función de los datos de entrenamiento cargados en el depósito S3 en el paso anterior. También pasaremos los hiperparámetros. Siéntete libre de cambiarlos.
- Ejecute el siguiente comando de AWS CLI para iniciar el flujo de trabajo de Step Functions. Reemplace
StateMachineCustomizeBedrockModelArn
yTrainingDataBucket
con los valores de lasam deploy --guided
Salida. ReemplazarUniqueModelName
yUniqueJobName
con valores únicos. Cambie los valores de los hiperparámetros en función del modelo seleccionado. Actualizaryour-region
con la región que proporcionó al ejecutar la plantilla SAM.
Ejemplo de salida:
La personalización y evaluación del modelo básico puede tardar entre 1 y 1,5 horas en completarse. Recibirá un correo electrónico de notificación una vez que se complete la personalización.
- Ejecute el siguiente comando de AWS CLI o inicie sesión en la consola de AWS Step Functions para verificar el estado del flujo de trabajo de Step Functions. Espere hasta que el flujo de trabajo se complete correctamente. Reemplace el
executionArn
Desde el paso anterior salida y actualizaciónyour-region
.
Paso 4: Ver el resultado del entrenamiento del modelo de base
Una vez que el flujo de trabajo de Step Functions se complete correctamente, recibirá un correo electrónico con el resultado de la calidad del modelo personalizado. Si el modelo personalizado no tiene un mejor rendimiento que el modelo base, se eliminará el rendimiento proporcionado. A continuación, se incluye un correo electrónico de muestra:
Si la calidad de la respuesta de inferencia no es satisfactoria, deberá volver a entrenar el modelo base según los datos de entrenamiento o hiperparámetros actualizados.
Ver el ModelInferenceBucket
para las inferencias generadas tanto desde el modelo base como desde el modelo personalizado.
Paso 5: Limpieza
La desactivación adecuada de los recursos de AWS aprovisionados es una práctica recomendada importante para optimizar los costos y mejorar la seguridad después de concluir las pruebas de concepto y las demostraciones. Los siguientes pasos eliminarán los componentes de infraestructura implementados anteriormente en esta publicación:
- Elimine el rendimiento aprovisionado de amazon Bedrock del modo personalizado. Asegúrese de que la configuración sea correcta.
ProvisionedModelArn
Se proporciona para evitar una eliminación accidental no deseada. También se actualizayour-region
.
- Elimine el modelo personalizado de amazon Bedrock. Asegúrese de que la configuración sea correcta.
CustomModelName
Se proporciona para evitar la eliminación accidental no deseada. También se actualizayour-region
.
- Elimine el contenido del depósito S3 con el siguiente comando. Asegúrese de proporcionar el nombre de depósito correcto para evitar la pérdida accidental de datos:
- Para eliminar los recursos implementados en su cuenta de AWS a través de AWS SAM, ejecute el siguiente comando:
Conclusión
En esta publicación se describe un flujo de trabajo de principio a fin para personalizar un modelo de amazon Bedrock utilizando AWS Step Functions como motor de orquestación. El flujo de trabajo automatizado entrena el modelo base con datos personalizados y ajusta los hiperparámetros. Luego, evalúa el rendimiento del modelo personalizado en comparación con el modelo base para determinar la eficacia del entrenamiento. Una vez finalizado, se notifica al usuario por correo electrónico los resultados del entrenamiento.
La personalización de modelos de lenguaje de gran tamaño requiere de infraestructura y experiencia especializada en aprendizaje automático. Los servicios de AWS como amazon Bedrock y Step Functions eliminan estas complejidades para que las empresas puedan centrarse en sus datos y casos de uso exclusivos. Al contar con un flujo de trabajo automatizado para la personalización y la evaluación, los clientes pueden personalizar los modelos según sus necesidades con mayor rapidez y con menos desafíos operativos.
Estudio adicional
Sobre el Autor
Biswanath Mukherjee es arquitecto de soluciones sénior en amazon Web Services. Trabaja con grandes clientes estratégicos de AWS proporcionándoles orientación técnica para migrar y modernizar sus aplicaciones en la nube de AWS. Gracias a su amplia experiencia en arquitectura y migración de la nube, colabora con los clientes para desarrollar soluciones innovadoras que aprovechen la escalabilidad, la confiabilidad y la agilidad de AWS para satisfacer sus necesidades comerciales. Su experiencia abarca diversas industrias y casos de uso, lo que permite a los clientes aprovechar todo el potencial de la nube de AWS.