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
- BotServ.de Ollama Modelfiles
- BotServ.de Ciclo de vida del modelo Ollama
- BotServ.de Base de conocimiento RAG
- BotServ.de Rendimiento de Ollama
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
- Unsloth: https://github.com/unslothai/unsloth
- Axolotl: https://github.com/OpenAccess-AI-Collective/axolotl
- LoRA Paper: https://arxiv.org/abs/2106.09685
- QLoRA Paper: https://arxiv.org/abs/2305.14314
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.


