Hoy en día, los modelos de IA generativa cubren una variedad de tareas, desde resúmenes de texto, preguntas y respuestas y generación de imágenes y videos. Para mejorar la calidad de la producción, se utilizan enfoques como el aprendizaje n-short, la ingeniería rápida, la generación aumentada de recuperación (RAG) y el ajuste fino. El ajuste fino le permite ajustar estos modelos de IA generativa para lograr un mejor rendimiento en las tareas específicas de su dominio.
Con Amazon SageMaker, ahora puede ejecutar un trabajo de capacitación de SageMaker simplemente anotando su código Python con @remote decorador. El SDK de Python de SageMaker traduce automáticamente su entorno de espacio de trabajo existente, y cualquier código y conjunto de datos de procesamiento de datos asociados, en un trabajo de capacitación de SageMaker que se ejecuta en la plataforma de capacitación. Esto tiene la ventaja de escribir el código de una manera más natural, orientada a objetos, y aún utiliza las capacidades de SageMaker para ejecutar trabajos de entrenamiento en un clúster remoto con cambios mínimos.
En esta publicación, mostramos cómo ajustar un Halcón-7B Modelos de base (FM) utilizando el decorador @remote de SageMaker Python SDK. También utiliza Ajuste fino eficiente en parámetros de Hugging Face (PEFT) y técnicas de cuantificación a través de bits y bytes para apoyar el ajuste. El código presentado en este blog también se puede utilizar para ajustar otros FM, como Llama-2 13b.
Las representaciones de precisión total de este modelo pueden tener dificultades para caber en la memoria en uno o incluso varios. Unidades de procesamiento gráfico (GPU) – o incluso puede necesitar una instancia más grande. Por lo tanto, para perfeccionar este modelo sin aumentar el costo, utilizamos la técnica conocida como LLM cuantificados con adaptadores de bajo rango (QLoRA). QLoRA es un enfoque de ajuste eficiente que reduce el uso de memoria de los LLM y al mismo tiempo mantiene un rendimiento muy bueno.
Ventajas de usar @remote decorador
Antes de continuar, comprendamos cómo el decorador remoto mejora la productividad del desarrollador mientras trabaja con SageMaker:
- @remote decorador activa un trabajo de entrenamiento directamente usando código Python nativo, sin la invocación explícita de los estimadores de SageMaker y los canales de entrada de SageMaker.
- Barrera de entrada baja para desarrolladores de modelos de formación en SageMaker.
- No es necesario cambiar Entornos de desarrollo integrados (IDE). Continúe escribiendo código en el IDE que elija e invoque los trabajos de capacitación de SageMaker.
- No es necesario aprender sobre contenedores. Continuar brindando dependencias en un
requisitos.txt
y entregárselo al decorador remoto.
Requisitos previos
Se necesita una cuenta de AWS con un rol de AWS Identity and Access Management (AWS IAM) que tenga permisos para administrar los recursos creados como parte de la solución. Para obtener más información, consulte Creación de una cuenta de AWS.
En esta publicación, utilizamos Amazon SageMaker Studio con el Ciencia de datos 3.0
imagen y un ml.t3.medio
instancia de lanzamiento rápido. Sin embargo, puede utilizar cualquier entorno de desarrollo integrado (IDE) de su elección. Solo necesita configurar correctamente sus credenciales de AWS Command Line Interface (AWS CLI). Para obtener más información, consulte Configurar la AWS CLI.
Para realizar ajustes, el Falcon-7B, un ml.g5.12xgrande
La instancia se utiliza en esta publicación. Asegúrese de tener suficiente capacidad para esta instancia en la cuenta de AWS.
Necesitas clonar esto repositorio de github por replicar la solución demostrada en esta publicación.
Descripción general de la solución
- Instale requisitos previos para ajustar el modelo Falcon-7B
- Configurar configuraciones de decorador remoto
- Preprocesar el conjunto de datos que contiene las preguntas frecuentes sobre los servicios de AWS
- Preguntas frecuentes sobre cómo ajustar Falcon-7B en los servicios de AWS
- Pruebe los modelos de ajuste fino en preguntas de muestra relacionadas con los servicios de AWS
1. Instale los requisitos previos para ajustar el modelo Falcon-7B
Inicie el cuaderno falcon-7b-qlora-decorador-remoto_qa.ipynb en SageMaker Studio seleccionando Imago como Ciencia de los datos
y Núcleo como Pitón 3
. Instale todas las bibliotecas requeridas mencionadas en el requisitos.txt
. Pocas bibliotecas deben instalarse en la propia instancia del portátil. Realice otras operaciones necesarias para procesar conjuntos de datos y activar un trabajo de capacitación de SageMaker.
2. Configurar configuraciones de decorador remoto
Cree un archivo de configuración donde se especifiquen todas las configuraciones relacionadas con el trabajo de capacitación de Amazon SageMaker. El decorador @remote lee este archivo mientras ejecuta el trabajo de entrenamiento. Este archivo contiene configuraciones como dependencias, imagen de entrenamiento, instancia y la función de ejecución que se utilizará para el trabajo de entrenamiento. Para obtener una referencia detallada de todas las configuraciones admitidas por el archivo de configuración, consulte Configuración y uso de valores predeterminados con SageMaker Python SDK.
No es obligatorio utilizar el configuración.yaml
archivo para trabajar con el decorador @remote. Esta es solo una forma más limpia de proporcionar todas las configuraciones al decorador @remote. Esto mantiene los parámetros relacionados con SageMaker y AWS fuera del código con un esfuerzo único para configurar el archivo de configuración utilizado por todos los miembros del equipo. Todas las configuraciones también podrían proporcionarse directamente en los argumentos del decorador, pero eso reduce la legibilidad y la mantenibilidad de los cambios a largo plazo. Además, un administrador puede crear el archivo de configuración y compartirlo con todos los usuarios de un entorno.
Preprocesar el conjunto de datos que contiene las preguntas frecuentes sobre los servicios de AWS
El siguiente paso es cargar y preprocesar el conjunto de datos para prepararlo para el trabajo de entrenamiento. Primero, echemos un vistazo al conjunto de datos:
Muestra preguntas frecuentes sobre uno de los servicios de AWS. Además de QLoRA, bitsanbytes
se utiliza para convertir a precisión de 4 bits para cuantificar el LLM congelado a 4 bits y adjuntar lora adaptadores en él.
Cree una plantilla de mensaje para convertir cada muestra de preguntas frecuentes a un formato de mensaje:
El siguiente paso es convertir las entradas (texto) en ID de token. Esto lo hace un Tokenizador de transformadores de cara abrazada.
Ahora simplemente usa el plantilla_indicador
función para convertir todas las preguntas frecuentes al formato de solicitud y configurar conjuntos de datos de prueba y entrenamiento.
4. Preguntas frecuentes sobre cómo ajustar Falcon-7B en los servicios de AWS
Ahora puedes preparar el guión de entrenamiento y definir la función de entrenamiento. tren_fn
y ponga @remote decorador en la función.
La función de entrenamiento hace lo siguiente:
- tokeniza y fragmenta el conjunto de datos
- configuración
Configuración de bits y bytes
, que especifica que el modelo debe cargarse en 4 bits pero mientras que el cálculo debe convertirse abfloat16
. - Cargar el modelo
- Encuentre los módulos de destino y actualice las matrices necesarias utilizando el método de utilidad
buscar_todos_los_nombres_lineales
- Crear lora configuraciones que especifican la clasificación de matrices de actualización (
s
), factor de escala (lora_alfa
), los módulos para aplicar las matrices de actualización LoRA (módulos_objetivo
), probabilidad de abandono para las capas de Lora (lora_dropout
),tipo_tarea
, etc. - Iniciar la formación y evaluación.
e invocar el tren_fn()
El trabajo de ajuste se ejecutaría en el clúster de capacitación de Amazon SageMaker. Espere a que finalice el trabajo de ajuste.
5. Pruebe los modelos de ajuste fino en preguntas de muestra relacionadas con los servicios de AWS
Ahora es el momento de realizar algunas pruebas en el modelo. Primero, carguemos el modelo:
Ahora cargue una pregunta de muestra del conjunto de datos de entrenamiento para ver la respuesta original y luego haga la misma pregunta desde el modelo optimizado para ver la respuesta en comparación.
Aquí hay un ejemplo de una pregunta del conjunto de capacitación y la respuesta original:
Ahora, se hace la misma pregunta sobre el modelo Falcon-7B sintonizado:
Con esto concluye la implementación del ajuste fino de Falcon-7B en el conjunto de datos de preguntas frecuentes de los servicios de AWS utilizando el decorador @remote del SDK de Python de Amazon SageMaker.
Limpiar
Complete los siguientes pasos para limpiar sus recursos:
- Cierre las instancias de Amazon SageMaker Studio para evitar incurrir en costos adicionales.
- Limpie su directorio de Amazon Elastic File System (Amazon EFS) borrando el directorio de caché de Hugging Face:
Conclusión
En esta publicación, le mostramos cómo usar efectivamente las capacidades del decorador @remote para ajustar el modelo Falcon-7B usando QLoRA, Hugging Face PEFT con bitsandbtyes
sin aplicar cambios significativos en el cuaderno de capacitación y utilizó las capacidades de Amazon SageMaker para ejecutar trabajos de capacitación en un clúster remoto.
Todo el código que se muestra como parte de esta publicación para ajustar Falcon-7B está disponible en el repositorio de GitHub. El repositorio también contiene un cuaderno que muestra cómo ajustar Llama-13B.
Como siguiente paso, le recomendamos que consulte la funcionalidad @remote decorador y API del SDK de Python y utilícelo en el entorno e IDE que elija. Hay ejemplos adicionales disponibles en el ejemplos-de-amazon-sagemaker repositorio para comenzar rápidamente. También puedes consultar las siguientes publicaciones:
Sobre los autores
Bruno Pistone es un arquitecto de soluciones especializado en IA/ML para AWS con sede en Milán. Trabaja con grandes clientes ayudándoles a comprender en profundidad sus necesidades técnicas y a diseñar soluciones de inteligencia artificial y aprendizaje automático que aprovechen al máximo la nube de AWS y la pila de aprendizaje automático de Amazon. Su experiencia incluye: aprendizaje automático de extremo a extremo, industrialización del aprendizaje automático e inteligencia artificial generativa. Le gusta pasar tiempo con sus amigos y explorar nuevos lugares, además de viajar a nuevos destinos.
Vikesh Pandey es un arquitecto de soluciones especializado en aprendizaje automático en AWS y ayuda a clientes de industrias financieras a diseñar y crear soluciones en IA generativa y aprendizaje automático. Fuera del trabajo, a Vikesh le gusta probar diferentes cocinas y practicar deportes al aire libre.
Deja una respuesta