LlamaFactory: ajuste fino unificado de más de 100 modelos de lenguaje y visión

Por David Moya · · 7 min lectura · Artículo técnico

Descubre LlamaFactory, la herramienta que unifica el ajuste fino de más de 100 LLM y VLM con CLI y Web UI. Guía completa, arquitectura y casos de uso.

LlamaFactory: ajuste fino unificado de más de 100 modelos de lenguaje y visión

Introducción: la fragmentación del ajuste fino

El ecosistema de modelos de lenguaje grandes (LLM) ha evolucionado a un ritmo vertiginoso. Cada semana aparecen nuevos modelos con arquitecturas, tokenizadores y configuraciones de entrenamiento distintas. Para los equipos de inteligencia artificial aplicada, esto representa una oportunidad enorme, pero también un dolor de cabeza operativo: cada modelo exige scripts de ajuste fino específicos, dependencias particulares y formatos de datos propios. La consecuencia es clara: se dedica más tiempo a la fontanería que a la experimentación real.

LlamaFactory nace precisamente para resolver ese problema. Se trata de un framework unificado que permite ajustar más de 100 modelos de lenguaje y visión con una sola interfaz, ya sea mediante línea de comandos (CLI) o a través de una interfaz web (LLaMA Board). Su popularidad es indiscutible: casi 75 000 estrellas en GitHub y una adopción por parte de gigantes como Amazon, NVIDIA y Aliyun. En este artículo analizamos en profundidad qué ofrece, cómo funciona y por qué deberías considerarlo en tu flujo de trabajo.

Qué problema resuelve LlamaFactory

Antes de LlamaFactory, ajustar un modelo como Llama 3, Qwen o Mistral implicaba escribir código específico para cada familia. Si querías probar LoRA en lugar de ajuste completo, tenías que reescribir el script. Si además querías cambiar de QLoRA a DPO, el trabajo se multiplicaba. Esta fragmentación ralentiza la iteración y aumenta la probabilidad de errores.

LlamaFactory aborda este problema con una capa de abstracción que unifica:

La promesa es simple: escribe una configuración una vez y ejecútala en cualquier modelo compatible. Esto reduce drásticamente el tiempo de puesta en marcha y permite a los equipos centrarse en lo que realmente importa: los datos y la evaluación.

Arquitectura de LlamaFactory

LlamaFactory está diseñado con un enfoque modular que separa la lógica de negocio de los detalles de implementación. A grandes rasgos, su arquitectura se compone de varias capas:

+---------------------+
|   Interfaz de usuario |
|  (CLI / Web UI)      |
+----------+----------+
           |
+----------v----------+
|   Capa de configuración |
|  (YAML, argumentos)    |
+----------+----------+
           |
+----------v----------+
|   Núcleo de LlamaFactory |
|  - Carga de modelos      |
|  - Tokenización          |
|  - Formateo de datos     |
|  - Entrenador unificado  |
+----------+----------+
           |
+----------v----------+
|   Backends de entrenamiento |
|  (Transformers, PEFT, TRL, |
|   DeepSpeed, FSDP, vLLM)   |
+----------+----------+
           |
+----------v----------+
|   Hardware (GPU, NPU, ROCm) |
+---------------------+

Esta separación permite que el mismo comando funcione con distintos backends sin cambiar la lógica del usuario. Además, la capa de configuración acepta tanto archivos YAML como argumentos de línea de comandos, lo que facilita la reproducibilidad y la integración en pipelines de MLOps.

Componentes clave

Cómo empezar con LlamaFactory

La instalación es sencilla y se puede realizar tanto desde PyPI como desde el repositorio. Recomendamos usar un entorno virtual para evitar conflictos de dependencias.

pip install llamafactory

Para aprovechar todas las funcionalidades, especialmente el entrenamiento distribuido, es aconsejable instalar los extras:

pip install "llamafactory[torch,metrics]"

Una vez instalado, puedes verificar la versión y los comandos disponibles:

llamafactory-cli version
llamafactory-cli help

Preparación de datos

LlamaFactory espera un formato JSON Lines (JSONL) con campos como instruction, input y output para tareas de instrucción. También admite conversaciones multi-turno con el campo conversations. Un ejemplo mínimo:

{"instruction": "¿Cuál es la capital de Francia?", "input": "", "output": "París"}
{"instruction": "Traduce al inglés", "input": "Hola mundo", "output": "Hello world"}

Para datasets de preferencias, se utilizan campos como chosen y rejected. LlamaFactory incluye utilidades para convertir y validar datos, lo que simplifica la integración con fuentes externas.

Ajuste fino con CLI

El comando principal es llamafactory-cli train, que acepta un archivo YAML con toda la configuración. Por ejemplo, para ajustar un modelo Qwen2.5 con LoRA:

### config/lora_qwen.yaml
model_name_or_path: Qwen/Qwen2.5-7B-Instruct
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
dataset: alpaca_es
template: qwen
dataset_dir: data
output_dir: outputs/qwen2.5-lora
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
learning_rate: 1e-4
num_train_epochs: 3
logging_steps: 10
save_steps: 100

Y se ejecuta con:

llamafactory-cli train config/lora_qwen.yaml

Para ajuste completo, basta con cambiar finetuning_type a full y ajustar los hiperparámetros. La misma configuración sirve para otros modelos cambiando model_name_or_path y template.

Interfaz web: LLaMA Board

Si prefieres una experiencia visual, LlamaFactory ofrece LLaMA Board, una interfaz basada en Gradio que permite configurar y lanzar entrenamientos sin escribir código. Se inicia con:

llamafactory-cli webui

Esto abre una interfaz en el navegador donde puedes seleccionar el modelo, el dataset, los hiperparámetros y monitorizar el progreso en tiempo real. Es ideal para experimentación rápida y para equipos con perfiles menos técnicos.

Despliegue con API compatible con OpenAI

Una vez ajustado el modelo, puedes servirlo con vLLM para obtener inferencia de alto rendimiento:

llamafactory-cli api --model_name_or_path outputs/qwen2.5-lora --template qwen --infer_backend vllm

Esto levanta un servidor que expone endpoints compatibles con la API de OpenAI, facilitando la integración con aplicaciones existentes.

Casos de uso prácticos

LlamaFactory brilla en escenarios donde la experimentación rápida y la variedad de modelos son clave. Algunos casos concretos:

Un ejemplo real: un equipo de soporte técnico necesita un asistente que responda en español con terminología específica. Con LlamaFactory, pueden tomar un modelo Qwen2.5, aplicar LoRA con un dataset de tickets históricos y desplegarlo con vLLM en menos de un día.

Comparativa con alternativas

Existen otras herramientas de ajuste fino, como Axolotl, Unsloth o Torchtune. Cada una tiene sus fortalezas. La siguiente tabla resume las diferencias clave:

CaracterísticaLlamaFactoryAxolotlUnslothTorchtune
Modelos soportados+100+50+20+10
Interfaz webSí (LLaMA Board)NoNoNo
Métodos de ajusteFull, LoRA, QLoRA, RLHF, DPO, ORPOFull, LoRA, QLoRA, RLHFLoRA, QLoRAFull, LoRA
Soporte multimodalSí (VLM)ParcialNoNo
Despliegue integradoSí (vLLM, API OpenAI)NoNoNo
Curva de aprendizajeBajaMediaBajaAlta

LlamaFactory destaca por su amplitud de modelos, la interfaz web y la integración de despliegue. Axolotl es más flexible para configuraciones avanzadas, mientras que Unsloth optimiza la velocidad en un subconjunto de modelos. Torchtune es una opción más cercana a PyTorch puro, pero requiere más conocimiento técnico.

Preguntas frecuentes (FAQ)

¿Qué requisitos de hardware necesito para usar LlamaFactory?

Depende del modelo y del método. Para un modelo de 7B con QLoRA, una GPU con 8 GB de VRAM es suficiente. Para ajuste completo de un 7B, se recomiendan al menos 24 GB. LlamaFactory soporta múltiples GPUs, DeepSpeed y FSDP para escalar.

¿Puedo usar LlamaFactory con modelos que no estén en la lista oficial?

Sí, siempre que el modelo sea compatible con Hugging Face Transformers. Puedes especificar la ruta local o el identificador del Hub. La lista oficial se actualiza constantemente, pero la arquitectura subyacente permite adaptar otros modelos.

¿Cómo maneja LlamaFactory los datasets en español?

El formato es independiente del idioma. Puedes usar cualquier dataset en español siguiendo la estructura JSONL. Además, LlamaFactory incluye plantillas de prompt que puedes personalizar para adaptar el formato a tus necesidades.

¿Es compatible con entornos sin GPU, como CPU o NPU?

Sí. LlamaFactory soporta entrenamiento en CPU (aunque lento) y en NPU de Ascend, así como en GPUs AMD con ROCm. La documentación oficial proporciona guías específicas para cada backend.

¿Qué diferencia hay entre LoRA y QLoRA en LlamaFactory?

LoRA añade adaptadores de bajo rango al modelo base, reduciendo el número de parámetros entrenables. QLoRA además cuantiza el modelo base a 4 bits, lo que disminuye aún más el uso de memoria. En LlamaFactory, se seleccionan con finetuning_type: lora o qlora respectivamente.

Conclusión

LlamaFactory se ha consolidado como una herramienta esencial para cualquier equipo que trabaje con LLM. Su enfoque unificado elimina la fricción del ajuste fino y permite iterar rápidamente sobre una amplia gama de modelos y métodos. Ya sea que prefieras la línea de comandos o una interfaz web, LlamaFactory ofrece un camino accesible y potente hacia la personalización de modelos. Si aún no lo has probado, este es el momento de incorporarlo a tu caja de herramientas.

Founding Members: todo por 99 EUR

501 módulos, 23 especializaciones, acceso sin caducidad al contenido adquirido. Precio normal: 199 EUR. Garantía 30 días.

Ser Founding Member Ver todos los planes