Fine-tuning universel Axolotl
Fine-tuning de LLM piloté par YAML avec Axolotl sur Clore.ai — LoRA, QLoRA, DPO, multi-GPU
Axolotl enveloppe HuggingFace Transformers, PEFT, TRL et DeepSpeed dans une interface unique pilotée par YAML. Vous définissez votre modèle, votre jeu de données, votre méthode d’entraînement et vos hyperparamètres dans un seul fichier de configuration — puis vous lancez tout avec une seule commande. Aucun script Python requis pour les flux de travail standard.
Caractéristiques clés
Configuration uniquement en YAML — définissez tout dans un seul fichier, pas besoin de Python
Toutes les méthodes d’entraînement — LoRA, QLoRA, fine-tuning complet, DPO, ORPO, KTO, RLHF
Multi-GPU prêt à l’emploi — DeepSpeed ZeRO 1/2/3 et FSDP avec un seul drapeau
Empaquetage d’exemples — concaténez de courts exemples pour remplir la longueur de séquence, gain de débit de 3 à 5×
Flash Attention 2 — économies automatiques de VRAM sur le matériel pris en charge
Prise en charge étendue des modèles — Llama 3.x, Mistral, Qwen 2.5, Gemma 2, Phi-4, DeepSeek, Falcon
Formats de jeux de données intégrés — alpaca, sharegpt, chat_template, completion et personnalisé
Exigences
GPU
RTX 3060 12 GB
RTX 4090 24 Go (×2+)
VRAM
12 Go
24+ Go
RAM
16 Go
64 Go
Disque
50 Go
100 Go
CUDA
12.8+
12.8+
Python
3.10
3.11
Tarification Clore.ai : RTX 4090 ≈ 0,14–0,42 $/h · RTX 3090 ≈ 0,07–0,21 $/h · RTX 3060 ≈ 0,03–0,07 $/h
Démarrage rapide
1. Installez Axolotl
Ou utilisez l’image Docker (recommandé pour la reproductibilité) :
2. Créez un fichier de configuration
Enregistrez ceci sous config.yml:
3. Lancez l’entraînement
La progression de l’entraînement est journalisée sur stdout et éventuellement dans Weights & Biases.
Plongée approfondie dans la configuration
Formats de jeux de données
Axolotl prend en charge nativement plusieurs formats d’entrée :
Multi-GPU avec DeepSpeed
Créez un fichier deepspeed_zero2.json:
Ajoutez à votre configuration :
Puis lancez :
Alignement DPO / ORPO
Fine-tuning complet (sans LoRA)
Exemples d'utilisation
Inférence après l’entraînement
Fusionner LoRA dans le modèle de base
Prétraiter le jeu de données (valider avant l’entraînement)
Cela tokenize et valide le jeu de données. Utile pour détecter les erreurs de format avant une longue session d’entraînement.
Référence d’utilisation de la VRAM
Llama 3.1 8B
QLoRA 4 bits
1
~12 Go
r=32, seq_len=2048
Llama 3.1 8B
LoRA 16 bits
1
~20 Go
r=16, seq_len=2048
Llama 3.1 8B
Complet
2
~22 Go
DeepSpeed ZeRO-3
Qwen 2.5 14B
QLoRA 4 bits
1
~16 GB
r=16, seq_len=2048
Llama 3.3 70B
QLoRA 4 bits
2
~22 Go
r=16, seq_len=2048
Llama 3.3 70B
Complet
4
~40 Go
DeepSpeed ZeRO-3+offload
Conseils
Toujours activer
sample_packing: true— le plus grand gain de débit (3–5× sur les jeux de données courts)Utilisez
flash_attention: truesur les GPU Ampere+ pour économiser 20 à 40 % de VRAMCommencez avec QLoRA pour les expérimentations, passez au fine-tuning complet uniquement lorsque la qualité de LoRA stagne
Définissez
val_set_size: 0.02pour surveiller le surapprentissage pendant l’entraînementPrétraitez d’abord — exécutez
axolotl.cli.preprocesspour valider le formatage des données avant de lancer une exécution longueUtilisez l’image Docker pour des environnements reproductibles — évite les conflits de dépendances
lora_target_linear: trueapplique LoRA à toutes les couches linéaires, généralement mieux que de cibler uniquement l’attention
Dépannage
OutOfMemoryError
Réduisez micro_batch_size à 1, activez gradient_checkpointing
Erreurs de format de jeu de données
Exécutez python -m axolotl.cli.preprocess config.yml pour déboguer
sample_packing lent lors de la première époque
Normal — le calcul initial du packing est unique
L'entraînement multi-GPU se bloque
Vérifiez NCCL : export NCCL_DEBUG=INFO, assurez-vous que toutes les GPU sont visibles
flash_attention erreur d'importation
Installez : pip install flash-attn --no-build-isolation
La perte ne diminue pas
Réduisez le taux d’apprentissage à 1e-4, augmentez le warmup, vérifiez la qualité du jeu de données
Erreur de connexion à WandB
Exécutez wandb login ou définissez wandb_project: sur une chaîne vide
Ressources
Mis à jour
Ce contenu vous a-t-il été utile ?