Skip to content
BotServBotServ
OllamaFinetuningLoRApersonalizar modelosentrenamiento IA

Ajustar modelos Ollama con LoRA

Personaliza modelos con Ollama y técnicas LoRA. Preparación de datos, entrenamiento, adaptadores y ejemplos prácticos.

S

schutzgeist

4 min read
Ajustar modelos Ollama con LoRA

Ajuste fino de modelos en Ollama

Qué cubre este artículo sobre ajuste fino en Ollama

  • Qué es el ajuste fino y cuándo resulta conveniente aplicarlo.
  • Cómo funcionan LoRA y QLoRA.
  • Cómo preparar datos de entrenamiento.
  • Cómo crear un adaptador y utilizarlo en Ollama.
  • Consejos, herramientas y errores comunes.

Introducción: Ajuste fino de modelos en Ollama

Los modelos preentrenados resuelven muchas tareas, pero en dominios especializados, lenguaje específico o datos propios de la empresa, su conocimiento suele ser insuficiente. El ajuste fino adapta un modelo base a un propósito determinado. Con Ollama puedes ejecutar estos modelos personalizados localmente agregando adaptadores LoRA. De este modo los datos permanecen privados y tienes control preciso sobre el comportamiento del modelo.

Este artículo explora los fundamentos del ajuste fino, la preparación de datos y cómo integrarlo en Ollama.

Conceptos clave

  • Ajuste fino: Reentrenamiento de un modelo ya entrenado.
  • LoRA: Low-Rank Adaptation, adaptación eficiente con bajo consumo de memoria.
  • QLoRA: LoRA cuantizada, aún más económica en memoria.
  • Adaptador: Pesos adicionales que complementan un modelo base.
  • Datos de entrenamiento: Pares entrada-salida para el aprendizaje.
  • Datos de evaluación: Conjunto usado para evaluar el modelo entrenado.
  • Sobreajuste: El modelo memoriza los datos de entrenamiento en lugar de generalizar.

Cuándo aplicar ajuste fino

  • Necesitas terminología especializada o un lenguaje específico.
  • Quieres incorporar conocimiento propio en las respuestas.
  • Requieres un formato de respuesta o tono particular.
  • La ingeniería de prompts simple ya no es suficiente.
  • RAG complementa, pero el modelo necesita desarrollar capacidades más profundas.

¿Pocos datos o recursos limitados? RAG es usualmente el primer paso más sensato.

LoRA y QLoRA

LoRA complementa el modelo base con matrices pequeñas entrenables. El modelo original permanece sin cambios. Las ventajas incluyen:

  • Menos VRAM requerida.
  • Entrenamiento más rápido.
  • Los adaptadores pueden intercambiarse.
  • Varios adaptadores se pueden combinar.

QLoRA va un paso más allá cuantizando el modelo base durante el entrenamiento. Esto permite ajuste fino en GPUs de consumidor.

Preparar datos de entrenamiento

Los datos deben estar en el formato correcto. Un formato común para modelos de chat:

{
  "messages": [
    {"role": "system", "content": "Du bist ein Support-Assistent."},
    {"role": "user", "content": "Wie setze ich mein Passwort zurück?"},
    {"role": "assistant", "content": "Gehe zu Einstellungen und wähle \"Passwort ändern\"."}
  ]
}
  • Los datos deben ser de alta calidad y consistentes.
  • Necesitas al menos algunos cientos de ejemplos, idealmente más.
  • Para respuestas específicas, usa prompts de sistema estructurados.
  • Respeta la privacidad, evita usar datos sensibles sin protección.

Entrenamiento con axolotl o unsloth

Herramientas como axolotl o unsloth simplifican el ajuste fino.

Ejemplo con unsloth

from unsloth import FastLanguageModel
import torch

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/llama-3-8b-bnb-4bit",
    max_seq_length=2048,
    load_in_4bit=True,
)

model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    lora_alpha=16,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0,
    bias="none",
)

Después del entrenamiento, el adaptador se guarda.

Convertir el adaptador a GGUF

Tras entrenar, frecuentemente necesitas convertir el adaptador a formato GGUF para que Ollama lo utilice:

python convert-lora-to-gguf.py \
  --base-model llama-3-8b \
  --lora adapter \
  --output mein-adapter.gguf

Alternativamente, puedes guardar el modelo fusionado directamente como GGUF.

Usar el modelo en Ollama

Con un Modelfile integras el adaptador:

FROM llama3.1
ADAPTER ./mein-adapter.bin

SYSTEM """
Du bist ein spezialisierter Assistent für interne Supportfragen.
"""

Para crearlo:

ollama create support-assistent -f Modelfile
ollama run support-assistent

Consejos

  • Comienza con un conjunto pequeño de datos e itera.
  • Ajusta gradualmente la tasa de aprendizaje y el tamaño del lote.
  • Monitorea la pérdida de validación para detectar sobreajuste.
  • Prueba el adaptador con preguntas desconocidas.
  • Evalúa combinar ajuste fino con RAG.

Errores comunes

  • Datos insuficientes: El modelo no converge de forma estable.
  • Sobreajuste: Entrenar demasiado tiempo o con datos muy específicos.
  • Formato incorrecto: Ollama espera sintaxis válida en el Modelfile.
  • VRAM insuficiente: Opta por QLoRA o modelos más pequeños.
  • Adaptador incompatible: El modelo base debe coincidir.
  • Fugas de datos: Los datos de entrenamiento contienen información sensible.

Alternativas al ajuste fino

Antes de ajustar, considera:

  • Ingeniería de prompts: Prompts mejor formulados.
  • RAG: Insertar conocimiento externo en el contexto.
  • Selección del modelo: Probar un modelo más grande.
  • Modelfile: Ajustar el prompt de sistema y parámetros.

Enlaces útiles e información adicional

Preguntas frecuentes: Ajuste fino de modelos en Ollama

¿Necesito mucha potencia de GPU para ajuste fino? QLoRA permite entrenar en GPUs de consumidor con 8 a 16 GB de VRAM.

¿Puedo combinar varios adaptadores LoRA? Sí, normalmente de forma secuencial o fusionándolos.

¿Son suficientes 100 ejemplos de entrenamiento? Usualmente es poco. Varios cientos a miles de ejemplos de alta calidad son mejores.

¿Es el ajuste fino conforme a regulaciones de privacidad? Si todo se ejecuta localmente, los datos permanecen en tu red.

¿Cómo valido el éxito? Usando un conjunto de validación separado y preguntas de prueba ciegas.

Fuentes y lecturas complementarias

Resumen: Ajuste fino de modelos en Ollama

El ajuste fino permite personalizar modelos en Ollama para tareas y conjuntos de datos específicos. LoRA y QLoRA hacen viable el entrenamiento incluso en hardware de consumidor. Lo crítico es contar con datos de entrenamiento de calidad, las herramientas adecuadas, evaluación cuidadosa e integración correcta en Ollama mediante un Modelfile. Antes de ajustar, examina la ingeniería de prompts y RAG, pues frecuentemente ofrecen resultados más rápidos y económicos.

Volver al blog
Share:

Entradas relacionadas