Fine-Tuning

Ajuste Fino de TinyLLaMA con Unsloth: Una Guía Completa

Learn to fine-tune TinyLLaMA with Unsloth in this detailed guide.

ajuste fino de TinyLLaMA con Unsloth: una guía práctica

¡Bienvenidos, entusiastas y desarrolladores de IA! En esta detallada guía, me emociono al mostrarles cómo ajustar finamente TinyLLaMA, un Modelo de Lenguaje Pequeño (SLM) diseñado específicamente para dispositivos de borde como teléfonos móviles. Ya sea que estés buscando mejorar tus aplicaciones de IA o participar en tu próximo hackathon, estás en el lugar correcto. ¡Vamos a sumergirnos!

Requisitos Previos

Antes de sumergirnos en el tutorial, asegúrate de tener lo siguiente:

  • Conocimientos básicos de Python
  • Familiaridad con conceptos de Aprendizaje Automático
  • Una cuenta de Google para acceder a Google Colab.
  • Una cuenta de W&B (puedes registrarte aquí).

Configuración del Entorno de Ajuste Fino

Usaremos Google Colab para ajustar finamente TinyLLaMA, aprovechando sus capacidades de GPU accesibles y gratuitas. Así es como puedes comenzar:

Crea un Nuevo Cuaderno de Colab:

  1. Visita Google Colab y crea un nuevo cuaderno.
  2. Configura el tiempo de ejecución del cuaderno para usar una GPU seleccionando Tiempo de ejecución > Cambiar tipo de tiempo de ejecución, luego elige GPU T4 de la sección de Acelerador de hardware.

Instalar Dependencias:

En tu celda de código, ejecuta el siguiente comando para instalar las bibliotecas necesarias:

!pip install unsloth transformers accelerate

Cargando el Modelo y el Tokenizador

A continuación, carga el modelo TinyLLaMA y su tokenizador. Así es como hacerlo con opciones de configuración:

from transformers import TinyLLaMA, TinyLLaMATokenizer

model = TinyLLaMA.from_pretrained('tiny-llama')
tokenizer = TinyLLaMATokenizer.from_pretrained('tiny-llama')

Selección de Capas y Hiperparámetros

Después de cargar el modelo, configúralo para el ajuste fino seleccionando capas específicas y configurando hiperparámetros clave:

Usando el método get_peft_model del FastLanguageModel proporcionado por Unsloth, se aplican técnicas de Ajuste Fino Eficiente en Parámetros (PEFT):

from unsloth import get_peft_model

peft_model = get_peft_model(model, 'LoRA', layers={'attention': ["q_proj", "k_proj", "v_proj", "o_proj"], 'feed_forward': ["gate_proj", "up_proj", "down_proj"]})

Preparando el Conjunto de Datos y Definiendo el Formato del Prompt

Ahora que tu modelo está configurado, es hora de preparar tu conjunto de datos. Puedes usar el conjunto de datos de Alpaca o crear uno personalizado. Así es como:

Usando el Conjunto de Datos de Alpaca

El conjunto de datos de Alpaca está diseñado específicamente para entrenar modelos en seguir instrucciones.

!pip install datasets
from datasets import load_dataset

dataset = load_dataset('huggingface/alpaca')

Creando y Cargando un Conjunto de Datos Personalizado

Si optas por un conjunto de datos personalizado:

  • Crea una estructura de archivo JSON que contenga campos como instrucción, entrada y salida.
  • Cárgalo usando:
dataset = load_dataset('json', data_files='dataset.json')

Monitoreando el Ajuste Fino con W&B

Weights & Biases (W&B) es invaluable para rastrear el proceso de entrenamiento de tu modelo:

import wandb

wandb.init(project="tiny-llama")

Entrenando TinyLLaMA con Integración de W&B

Finalmente, entrenemos TinyLLaMA con el SFTTrainer de la biblioteca trl:

from trl import SFTTrainer

trainer = SFTTrainer(model, dataset,
                     args={'gradient_accumulation_steps': 4,
                           'per_device_train_batch_size': 2,
                           'logging_dir': './logs'})

trainer.train()

Monitoreando el Entrenamiento con Weights & Biases (W&B)

Para ver las métricas de entrenamiento:

  1. Inicia sesión en W&B y navega a tu proyecto.
  2. Explora el panel para métricas como pérdida, velocidad de entrenamiento y uso de GPU.

Probando el Modelo Ajustado

Después de entrenar, prueba el rendimiento de tu modelo:

output = model.generate(tokenizer.encode())
print(tokenizer.decode(output))

Guardando el Modelo Ajustado

Puedes guardar tu modelo localmente o subirlo al Hugging Face Hub:

  • Localmente: Usa
    model.save_pretrained('./fine_tuned_model')
  • Hugging Face Hub:
    model.push_to_hub('tu-nombre-del-hub')

Consejos Prácticos

Aquí hay algunos consejos para mejorar tu experiencia de ajuste fino:

  • Evitar el Sobreajuste: Monitorea la pérdida de validación. Usa técnicas como la detención temprana y la regularización.
  • Manejar Datos Desbalanceados: Técnicas como el sobremuestreo y el ponderado de clases pueden ayudar.
  • Ajuste Fino con Datos Limitados: La augmentación de datos y el aprendizaje por transferencia pueden maximizar el rendimiento del modelo.

Consideraciones Avanzadas

¿Buscas llevarlo un paso más allá? Considera:

  • Ajuste Fino Específico por Capas
  • Aprendizaje por Transferencia
  • Integración con Otros Modelos

Conclusión

En este tutorial, cubrimos los métodos para ajustar finamente TinyLLaMA usando Unsloth, junto con técnicas efectivas de gestión de recursos. El ajuste fino puede llevar a mejoras significativas en el rendimiento del modelo con un uso eficiente de los recursos de GPU en Google Colab. También destacamos las mejores prácticas, incluida la importancia de monitorear el rendimiento de tu modelo con W&B.

¡Feliz modelado, y que tus proyectos de IA florezcan!

Puede que te interese

Illustration of no-code fine-tuning process for Phi3 model using LlamaFactory.
A visual representation of sentiment analysis using Cohere's NLP tools.

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.