Ajuste fino de Llama 3: Dominando la personalización para proyectos de IA
¡Bienvenido a este tutorial sobre el ajuste fino del modelo Llama 3 para varias tareas! Mi nombre es Tommy, y te guiaré a través de este completo tutorial diseñado para equiparte con las habilidades necesarias para ajustar un modelo generativo de última generación utilizando conjuntos de datos del mundo real. Al final de este tutorial, estarás listo para aplicar tus conocimientos en hackatones de IA y otros proyectos emocionantes.
Objetivos 📋
En este tutorial, cubriremos:
- El proceso de ajuste fino de Llama 3 para diversas tareas utilizando conjuntos de datos personalizables.
- Uso de la implementación Unsloth de Llama 3 por su eficiencia.
- Aprovechamiento de las herramientas de Hugging Face para el manejo de modelos y la gestión de conjuntos de datos.
- Adapting the fine-tuning process to your specific needs, allowing you to fine-tune Llama 3 for any task.
Requisitos previos 🛠️
Antes de comenzar, asegúrate de tener lo siguiente:
- Conocimientos básicos de transformers.
- Familiaridad con la programación en Python.
- Acceso a Google Colab.
- Conocimientos básicos sobre el ajuste fino de modelos.
Configurando el entorno 🖥️
Google Colab ⚙️
Para comenzar, abre Google Colab y crea un nuevo cuaderno. Asegúrate de habilitar el soporte para GPU para un entrenamiento más rápido. Puedes hacer esto navegando a Editar > Configuración del cuaderno y seleccionando T4 GPU como acelerador de hardware. Seleccionar T4 GPU optimizará el rendimiento.
Instalando dependencias 📦
En tu cuaderno de Colab, ejecuta el siguiente comando para instalar las bibliotecas necesarias:
!pip install transformers datasets
Cargando el modelo preentrenado 📚
Usaremos la implementación Unsloth de Llama 3, que está optimizada para un entrenamiento e inferencia más rápidos. Nota: Si estás usando un modelo restringido de Hugging Face, recuerda agregar el campo "token" a FastLanguageModel.from_pretrained con tu token de acceso de Hugging Face.
Preparando el conjunto de datos 📊
Primero, carga tu archivo dataset.json
en Google Colab que contiene los datos requeridos para entrenar el modelo para análisis de sentimientos. Luego, define el prompt que se utilizará junto con el conjunto de datos para el ajuste fino:
from datasets import load_dataset
# Cargar el conjunto de datos
train_dataset = load_dataset('json', data_files='dataset.json')
Ajuste fino del modelo 🔧
Usaremos LoRA (Adaptación de Bajo Rango) para ajustar el modelo eficientemente. LoRA ayuda a adaptar modelos grandes insertando matrices de bajo rango entrenables en cada capa de la arquitectura del Transformador.
Explicación de parámetros 📝
- r: Rango de la aproximación de bajo rango, fijado en 16 para un buen equilibrio entre rendimiento y uso de memoria.
- target_modules: Especifica en qué módulos se aplica LoRA, enfocándose en las partes más críticas del modelo.
- lora_alpha: Factor de escalado para los pesos de LoRA, fijado en 16 para un entrenamiento estable.
- lora_dropout: Tasa de abandono aplicada a las capas de LoRA, típicamente fijada en 0 para no tener abandono.
- bias: Indica cómo se manejan los sesgos, fijado en "none" lo que significa que los sesgos no se entrenan.
- use_gradient_checkpointing: Reduce el uso de memoria almacenando activaciones intermedias.
Entrenamiento 🏋️
Utilizaremos el SFTTrainer de Hugging Face para entrenar el modelo. A continuación se presentan los parámetros utilizados para TrainingArguments:
- output_dir: Directorio donde se guardará el modelo entrenado y los puntos de control. Esto es esencial para reanudar el entrenamiento y compartir el modelo.
- per_device_train_batch_size: Tamaño del lote para el entrenamiento en cada dispositivo, afectando el uso de memoria y la velocidad de entrenamiento.
- save_steps: Número de pasos entre guardados del modelo, crucial para reanudar en caso de interrupciones.
- save_total_limit: Número máximo de puntos de control para retener; los puntos de control más antiguos serán eliminados.
- gradient_accumulation_steps: Pasos para acumular gradientes antes de realizar un pase hacia atrás, útil para modelos más grandes.
- warmup_steps: Pasos para realizar el calentamiento de la tasa de aprendizaje, ayudando a estabilizar el proceso de entrenamiento.
- max_steps: Pasos totales de entrenamiento; el entrenamiento se detiene al alcanzar este límite.
- learning_rate: La tasa de aprendizaje para el entrenamiento, controlando el tamaño de la actualización de los pesos del modelo.
- fp16: Utiliza números de punto flotante de 16 bits durante el entrenamiento para reducir el uso de memoria.
- bf16: Utiliza precisión bfloat16, ventajosa en cierto hardware.
Configura el SFTTrainer con:
from transformers import SFTTrainer, TrainingArguments
args = TrainingArguments(
output_dir='./results',
per_device_train_batch_size=8,
save_steps=500,
save_total_limit=2,
gradient_accumulation_steps=2,
warmup_steps=100,
max_steps=1000,
learning_rate=5e-5,
fp16=True
)
trainer = SFTTrainer(
model=model,
args=args,
train_dataset=train_dataset,
tokenizer=tokenizer,
dataset_text_field='text',
max_seq_length=512
)
Usando el modelo ajustado finamente 🧠
Después del entrenamiento, prueba el modelo con entradas de muestra para evaluar la tarea de análisis de sentimientos:
sample_input = "¡Me encanta usar Llama 3 para proyectos de IA!"
output = model(sample_input)
Guardar y compartir el modelo 💾
Hay dos maneras de guardar tu modelo ajustado finamente:
- Guardar el modelo localmente: Utiliza la función de guardar para almacenar el modelo en tu dispositivo.
- Guardar el modelo en Hugging Face Hub: Comparte tu modelo subiéndolo a la plataforma de Hugging Face para acceso público.
Conclusión 🎉
Y con eso, deberías estar bien equipado para ajustar finamente el modelo Llama 3 para una variedad de tareas. Al dominar estas técnicas, podrás adaptar el modelo a tus necesidades específicas, permitiéndote abordar proyectos de IA con mayor eficiencia y precisión. ¡Buena suerte con tus esfuerzos de ajuste fino y los emocionantes proyectos de IA por venir! 🚀
Dejar un comentario
Todos los comentarios se revisan antes de su publicación.
Este sitio está protegido por hCaptcha y se aplican la Política de privacidad de hCaptcha y los Términos del servicio.