Back to blog
    Fine-Tuning de Llama 3: Guía Práctica para Tu Caso de Uso
    llama-3fine-tuningmetaloratutorialgguf

    Fine-Tuning de Llama 3: Guía Práctica para Tu Caso de Uso

    Una guía práctica para ajustar los modelos Llama 3 de Meta — cubriendo selección de modelo, preparación de dataset, configuración LoRA, consejos de entrenamiento y despliegue como GGUF para inferencia local.

    EErtas Team·

    Llama 3 es una de las familias de modelos open-source más capaces disponibles. Su combinación de sólido rendimiento base, licencia permisiva y amplio soporte comunitario lo convierte en el punto de partida predeterminado para la mayoría de los proyectos de fine-tuning.

    Esta guía recorre los detalles prácticos: qué variante de Llama 3 elegir, cómo preparar tus datos, qué configuraciones LoRA funcionan mejor y cómo desplegar el resultado localmente.

    Eligiendo la Variante Correcta de Llama 3

    Llama 3 8B

    La variante de trabajo pesado. 8 mil millones de parámetros logra el equilibrio correcto entre capacidad y requisitos de recursos.

    Ideal para:

    • Tareas de clasificación y extracción
    • Q&A específico de dominio
    • Generación de output estructurado
    • Aplicaciones que necesitan inferencia rápida en hardware modesto
    • Equipos que ajustan por primera vez

    Hardware: Se ajusta con LoRA en una sola GPU con 16 GB de VRAM. Ejecuta inferencia en cualquier máquina con 8+ GB de RAM (cuantizado a Q4).

    Llama 3 70B

    El peso pesado. Significativamente más capaz en razonamiento complejo, tareas multi-paso y generación creativa.

    Ideal para:

    • Tareas de razonamiento y análisis complejos
    • Generación de contenido largo
    • Tareas donde el modelo 8B se queda corto después del fine-tuning
    • Aplicaciones con acceso a infraestructura multi-GPU

    Hardware: Se ajusta con QLoRA en 2-4 GPUs con 24+ GB de VRAM cada una. Ejecuta inferencia en máquinas con 48+ GB de RAM (cuantizado a Q4).

    Recomendación

    Empieza con Llama 3 8B. Ajústalo con tus datos, evalúa los resultados, y solo pasa a 70B si el modelo 8B no cumple tu barra de calidad. En la mayoría de los casos, un modelo 8B bien ajustado supera a un modelo 70B con prompts en tareas específicas.

    Preparando Tus Datos de Entrenamiento

    Llama 3 usa un formato de plantilla de chat específico. Tus datos de entrenamiento deben coincidir con este formato para mejores resultados.

    Formato de Chat

    {"messages": [
      {"role": "system", "content": "You are a medical coding assistant that assigns ICD-10 codes to clinical descriptions."},
      {"role": "user", "content": "Patient presents with acute upper respiratory infection with fever and productive cough."},
      {"role": "assistant", "content": "J06.9 - Acute upper respiratory infection, unspecified"}
    ]}
    

    Formato de Instrucción

    Para tareas más simples que no necesitan conversación multi-turno:

    {"instruction": "Classify the sentiment of this product review.", "input": "The battery life is incredible but the screen is too dim outdoors.", "output": "mixed - positive (battery life), negative (screen brightness)"}
    

    Consejos de Preparación de Datos para Llama 3

    1. Usa el mensaje de sistema. Las variantes instruction-tuned de Llama 3 responden bien a system prompts. Incluye uno en cada ejemplo de entrenamiento para establecer el rol del modelo.

    2. Haz coincidir tu formato de inferencia. Si usarás conversaciones multi-turno en tiempo de inferencia, entrena con ejemplos multi-turno. Si usarás formato de instrucción de turno único, entrena en consecuencia.

    3. Mantén las respuestas enfocadas. Llama 3 8B tiene una ventana de contexto de 8,192 tokens. Los ejemplos de entrenamiento largos desperdician capacidad de contexto. Apunta a respuestas menores de 500 tokens donde sea posible.

    4. Incluye casos límite. Llama 3 generaliza bien desde el fine-tuning, pero necesitas mostrarle los límites. Incluye ejemplos de entradas que el modelo debería rechazar, marcar como inciertas o manejar de manera diferente.

    5. Apunta a 1,000-5,000 ejemplos. Para fine-tuning con LoRA en Llama 3 8B, este rango produce consistentemente buenos resultados. Por debajo de 500, el modelo puede no generalizar bien. Por encima de 10,000, los retornos decrecientes son claros.

    Configuración LoRA

    Configuración Recomendada para Llama 3 8B

    ParámetroValorNotas
    Rango LoRA (r)16Buen equilibrio entre capacidad y eficiencia
    Alpha LoRA322x rango es el punto de partida estándar
    Módulos objetivoq_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_projApunta a todas las proyecciones de atención y MLP
    Tasa de aprendizaje2e-4Estándar para LoRA en Llama 3
    Tamaño de lote4Con acumulación de gradiente de 4 (lote efectivo 16)
    Épocas3Monitorea la pérdida de validación — detén temprano si diverge
    Ratio de warmup0.03~3% del total de pasos como warmup
    Decaimiento de peso0.01Regularización ligera
    Longitud máxima de secuencia2048Aumenta si tus ejemplos son más largos
    OptimizadorAdamWOpción estándar
    SchedulerCosenoDecaimiento suave de la tasa de aprendizaje

    Para Llama 3 70B (QLoRA)

    Usa las mismas configuraciones anteriores con estos ajustes:

    ParámetroValorNotas
    Rango LoRA (r)32Un modelo más grande se beneficia de mayor rango
    Alpha LoRA642x rango
    Cuantización4-bit (NF4)Permite entrenar con menos GPUs
    Tamaño de lote2Restricciones de memoria
    Acumulación de gradiente8Lote efectivo 16

    Consejos de Entrenamiento

    Vigila el Sobreajuste

    Llama 3 8B se ajusta rápidamente — frecuentemente converge dentro de 1-2 épocas en datasets más pequeños. Señales de sobreajuste:

    • La pérdida de validación aumenta mientras la pérdida de entrenamiento continúa bajando
    • Los outputs del modelo comienzan a repetir ejemplos de entrenamiento literalmente
    • El rendimiento en entradas nuevas se degrada

    Solución: reduce épocas, reduce la tasa de aprendizaje, o agrega más ejemplos de entrenamiento diversos.

    Sensibilidad a la Tasa de Aprendizaje

    Llama 3 es sensible a la tasa de aprendizaje. Si ves:

    • La pérdida no disminuye: aumenta la tasa de aprendizaje a 5e-4
    • La pérdida sube abruptamente al inicio: disminuye la tasa de aprendizaje a 1e-4
    • La pérdida oscila: disminuye la tasa de aprendizaje y aumenta el warmup

    Comparación Multi-Modelo

    Uno de los patrones más útiles es ajustar el mismo modelo base con diferentes configuraciones LoRA o diferentes subconjuntos de tus datos, y luego comparar los outputs. Esto te ayuda a identificar:

    • Si más datos realmente mejoran la calidad
    • Qué rango LoRA equilibra mejor calidad y tamaño
    • Si tus datos tienen problemas de calidad (si múltiples configuraciones producen resultados mediocres similares, el problema probablemente es la calidad de los datos, no la configuración)

    En Ertas Studio, puedes ejecutar múltiples trabajos de entrenamiento en el mismo canvas y comparar outputs lado a lado.

    Evaluando Tu Llama 3 Ajustado

    Evaluación Cuantitativa

    Para tareas de clasificación:

    • Calcula precisión, recall y F1 en un conjunto de prueba reservado
    • Compara contra el Llama 3 base (sin ajustar) en el mismo conjunto de prueba
    • Compara contra una versión con prompts del modelo base

    Para tareas de generación:

    • Puntajes ROUGE para resumen
    • Coincidencia exacta para extracción
    • Métricas personalizadas relevantes a tu dominio

    Evaluación Cualitativa

    Ejecuta 50-100 prompts representativos a través del modelo base y tu versión ajustada. Haz que expertos del dominio evalúen:

    • ¿El modelo usa la terminología del dominio correctamente?
    • ¿Los outputs están formateados consistentemente?
    • ¿El modelo rechaza o marca casos inciertos apropiadamente?
    • ¿Hay nuevos modos de falla introducidos por el fine-tuning?

    Mejoras Esperadas

    En tareas específicas y bien definidas con buenos datos de entrenamiento, deberías ver:

    MétricaLlama 3 8B Base (con prompts)Llama 3 8B Ajustado
    Precisión en la tarea60-75%85-95%
    Consistencia de formato70-80%95-99%
    Terminología de dominioInconsistenteConfiable
    Tasa de alucinación10-20%2-5%

    Si no ves una mejora significativa, revisa la calidad de tus datos de entrenamiento antes de ajustar la configuración del modelo.

    Desplegando Tu Llama 3 Ajustado

    Exportar como GGUF

    Después del entrenamiento, fusiona el adaptador LoRA con el modelo base y exporta como GGUF con cuantización Q4_K_M. Esto produce un archivo de ~4.5 GB (para Llama 3 8B) que se ejecuta en cualquier máquina con 8+ GB de RAM.

    Desplegar con Ollama

    # Crear un Modelfile
    cat > Modelfile << 'EOF'
    FROM ./llama-3-8b-my-task.gguf
    SYSTEM "You are a medical coding assistant that assigns ICD-10 codes to clinical descriptions."
    PARAMETER temperature 0.1
    PARAMETER top_p 0.9
    EOF
    
    # Construir y ejecutar
    ollama create medical-coder -f Modelfile
    ollama run medical-coder "Patient presents with type 2 diabetes mellitus with diabetic nephropathy."
    

    Desplegar con llama.cpp

    ./llama-server \
      -m llama-3-8b-my-task.gguf \
      --port 8080 \
      --ctx-size 4096 \
      --n-gpu-layers 35
    

    Ajusta Llama 3 con Ertas Studio

    Ertas Studio elimina la sobrecarga de infraestructura de todo este flujo de trabajo:

    1. Sube tu dataset JSONL — Studio valida formato y calidad de datos
    2. Selecciona Llama 3 8B (o 70B) del navegador de modelos
    3. Studio pre-llena las configuraciones LoRA recomendadas basándose en tu dataset
    4. Entrena en GPUs gestionadas en la nube — sin hardware que aprovisionar
    5. Compara ejecuciones lado a lado en el canvas
    6. Exporta como GGUF y despliega en cualquier lugar

    Precio early bird: $14.50/mes fijo de por vida — aumentará a $34.50/mes en el lanzamiento. Únete a la lista de espera →

    Lectura Adicional

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Keep reading