Afinado Universal Axolotl

Afinado de LLMs impulsado por YAML con Axolotl en Clore.ai — LoRA, QLoRA, DPO, multi-GPU

Axolotl integra HuggingFace Transformers, PEFT, TRL y DeepSpeed en una única interfaz dirigida por YAML. Defines tu modelo, conjunto de datos, método de entrenamiento y hiperparámetros en un solo archivo de configuración — luego inicias con un solo comando. No se requiere scripting en Python para flujos de trabajo estándar.

circle-check

Características clave

  • Configuración solo en YAML — define todo en un archivo, no se necesita Python

  • Todos los métodos de entrenamiento — LoRA, QLoRA, ajuste fino completo, DPO, ORPO, KTO, RLHF

  • Multi-GPU listo para usar — DeepSpeed ZeRO 1/2/3 y FSDP con una sola bandera

  • Empaquetado de muestras — concatena ejemplos cortos para llenar la longitud de la secuencia, ganancia de rendimiento de 3–5×

  • Flash Attention 2 — ahorro automático de VRAM en hardware compatible

  • Compatibilidad amplia de modelos — Llama 3.x, Mistral, Qwen 2.5, Gemma 2, Phi-4, DeepSeek, Falcon

  • Formatos de dataset incorporados — alpaca, sharegpt, chat_template, completion y personalizado

Requisitos

Componente
Mínimo
Recomendado

GPU

RTX 3060 12 GB

RTX 4090 24 GB (×2+)

VRAM

12 GB

24+ GB

RAM

16 GB

64 GB

Disco

50 GB

100 GB

CUDA

11.8

12.1+

Python

3.10

3.11

Precios de Clore.ai: RTX 4090 ≈ $0.5–2/día · RTX 3090 ≈ $0.3–1/día · RTX 3060 ≈ $0.15–0.3/día

Inicio rápido

1. Instala Axolotl

O usa la imagen Docker (recomendado para reproducibilidad):

2. Crea un archivo de configuración

Guarda esto como config.yml:

3. Inicia el entrenamiento

Registros de progreso del entrenamiento en stdout y opcionalmente en Weights & Biases.

Análisis profundo de la configuración

Formatos de dataset

Axolotl soporta múltiples formatos de entrada de forma nativa:

Multi-GPU con DeepSpeed

Crear deepspeed_zero2.json:

Añade a tu configuración:

Luego lanza:

Alineamiento DPO / ORPO

Ajuste fino completo (sin LoRA)

Ejemplos de uso

Inferencia después del entrenamiento

Fusionar LoRA en el modelo base

Preprocesar dataset (validar antes del entrenamiento)

Esto tokeniza y valida el dataset. Útil para detectar errores de formato antes de una larga sesión de entrenamiento.

Referencia de uso de VRAM

Modelo
Método
GPUs
VRAM/GPU
Configuración

Llama 3.1 8B

QLoRA 4bit

1

~12 GB

r=32, seq_len=2048

Llama 3.1 8B

LoRA 16bit

1

~20 GB

r=16, seq_len=2048

Llama 3.1 8B

Completo

2

~22 GB

DeepSpeed ZeRO-3

Qwen 2.5 14B

QLoRA 4bit

1

~16 GB

r=16, seq_len=2048

Llama 3.3 70B

QLoRA 4bit

2

~22 GB

r=16, seq_len=2048

Llama 3.3 70B

Completo

4

~40 GB

DeepSpeed ZeRO-3+offload

Consejos

  • Siempre habilitar sample_packing: true — mayor única mejora de rendimiento (3–5× en datasets cortos)

  • Usa flash_attention: true en GPUs Ampere+ para 20–40% de ahorro de VRAM

  • Comienza con QLoRA para experimentos, cambia al ajuste fino completo solo cuando la calidad de LoRA se estanque

  • Establecer val_set_size: 0.02 para monitorizar el sobreajuste durante el entrenamiento

  • Preprocesa primero — ejecuta axolotl.cli.preprocess para validar el formato de los datos antes de comprometerte con una ejecución larga

  • Usa la imagen Docker para entornos reproducibles — evita conflictos de dependencias

  • lora_target_linear: true aplica LoRA a todas las capas lineales, generalmente mejor que apuntar solo a la atención

Solución de problemas

Problema
Solución

OutOfMemoryError

Reduce micro_batch_size a 1, habilita gradient_checkpointing

Errores de formato del dataset

Ejecuta python -m axolotl.cli.preprocess config.yml para depurar

sample_packing lento en la primera época

Normal — el cálculo inicial del empaquetado es de una sola vez

Entrenamiento Multi-GPU se cuelga

Verifica NCCL: export NCCL_DEBUG=INFO, asegúrate de que todas las GPUs sean visibles

flash_attention error de importación

Instala: pip install flash-attn --no-build-isolation

La pérdida no disminuye

Reduce la LR a 1e-4, aumenta el warmup, revisa la calidad del dataset

Error de conexión con WandB

Ejecuta wandb login o establece wandb_project: a cadena vacía

Recursos

Última actualización

¿Te fue útil?