Configuration du training
Hyperparamètres, adaptateurs LoRA, mixed precision et options avancées. Comment configurer un training job selon votre cas d'usage.
Structure de la config de training
Quand vous créez un training job depuis le dashboard, le formulaire expose tous ces paramètres via des champs de saisie, des menus déroulants et des cases à cocher. Les champs de base (learning rate, batch size, epochs, max length) sont visibles par défaut. Les options avancées (gradient accumulation, LoRA, évaluation, checkpointing) se trouvent dans une section dépliable.
En coulisses, ces réglages produisent un objet de configuration de ce type :
{
"epochs": 3,
"batch_size": 4,
"learning_rate": 5e-5,
"weight_decay": 0.01,
"warmup_ratio": 0.1,
"max_length": 512,
"gradient_accumulation_steps": 4,
"mixed_precision": "bf16",
"gradient_checkpointing": true,
"lr_scheduler": "cosine",
"use_peft": true,
"peft_method": "lora",
"lora_r": 16,
"lora_alpha": 32,
"lora_dropout": 0.05,
"save_strategy": "steps",
"save_steps": 500,
"eval_strategy": "steps",
"eval_steps": 250,
"logging_steps": 10,
"seed": 42
}Paramètres principaux
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
epochs | int | 3 | Nombre de passages complets sur les données d'entraînement. |
batch_size | int | 4 | Exemples par passe forward/backward. Limité par la mémoire GPU. |
learning_rate | float | 5e-5 | Learning rate maximal. Plage habituelle pour le fine-tuning : 1e-5 à 5e-4. |
weight_decay | float | 0.01 | Régularisation L2. Aide à prévenir le surapprentissage. |
warmup_ratio | float | 0.0 | Fraction du nombre total de steps pour le warmup linéaire (ex. 0.1 = 10% de warmup). |
max_length | int | 512 | Longueur maximale de séquence en tokens. Les séquences plus longues sont tronquées. |
seed | int | 42 | Graine aléatoire pour la reproductibilité. |
Batch size et gradient accumulation
Votre batch size effectif est batch_size * gradient_accumulation_steps. Si votre GPU ne peut pas contenir un batch volumineux, réduisez batch_size et augmentez gradient_accumulation_steps :
// Batch size effectif = 4 * 8 = 32
{
"batch_size": 4,
"gradient_accumulation_steps": 8
}Le gradient accumulation consomme moins de mémoire par step mais ralentit l'entraînement (plus de passes forward avant chaque mise à jour des poids). C'est l'approche standard quand la VRAM est limitée.
Mixed precision
Le champ mixed_precision contrôle la précision en virgule flottante pendant l'entraînement :
| Valeur | Quand l'utiliser |
|---|---|
"bf16" | GPU Ampere et plus récents (A100, RTX 3090/4090). Meilleure stabilité. Choix par défaut recommandé. |
"fp16" | GPU plus anciens avec Tensor Cores (V100, série RTX 2000). Peut nécessiter du loss scaling. |
"fp32" | Précision complète. Plus gourmand en mémoire et plus lent, mais stabilité maximale. Solution de repli si fp16/bf16 produit des NaN. |
"auto" | Laisse le worker décider en fonction des capacités de son GPU. |
Avec les Parsyn Workers, "auto" est un choix sûr. Le worker sélectionnera bf16 sur les A100 et fp16 sur du matériel plus ancien.
LoRA (Low-Rank Adaptation)
LoRA ajoute de petites matrices entraînables à certaines couches du modèle au lieu de mettre à jour tous les poids. Cela réduit considérablement la consommation mémoire et produit un fichier d'adaptateur compact (10-100 Mo) plutôt qu'une copie complète du modèle. Dans le formulaire de training job, activez-le avec la case PEFT dans la section avancée, puis choisissez entre LoRA et QLoRA.
Quand utiliser LoRA
- Mémoire GPU limitée (moins de 24 Go de VRAM pour des modèles 7B+)
- Itérations d'entraînement rapides
- Plusieurs versions fine-tunées sans stocker des copies complètes
- Adaptation de domaine ou transfert de style sur un modèle déjà performant
Paramètres LoRA
| Paramètre | Défaut | Description |
|---|---|---|
use_peft | false | Active PEFT (Parameter-Efficient Fine-Tuning). |
peft_method | "lora" | lora ou qlora (LoRA quantifié, encore moins de mémoire). |
lora_r | 8 | Rang des matrices low-rank. Plus élevé = plus de capacité. Valeurs courantes : 4, 8, 16, 32, 64. |
lora_alpha | 16 | Facteur de mise à l'échelle. Généralement défini à 2 * lora_r. |
lora_dropout | 0.05 | Dropout sur les couches LoRA. Mettez à 0 pour les très petits datasets. |
quantization | "none" | Pour QLoRA : "4bit" ou "8bit". Charge le modèle de base en version quantifiée. |
LoRA vs full fine-tuning
| LoRA | Full fine-tuning | |
|---|---|---|
| Mémoire (modèle 7B) | ~6 Go VRAM | ~28 Go VRAM (fp16) |
| Vitesse | Rapide | Plus lent |
| Taille de sortie | ~50 Mo (adaptateur) | ~14 Go (modèle complet) |
| Plafond de qualité | Légèrement inférieur | Maximum |
| Idéal pour | Adaptation de domaine, style, instructions | Changements importants de capacités, nouvelles connaissances |
Schedulers de learning rate
Le champ lr_scheduler contrôle l'évolution du learning rate pendant l'entraînement :
"linear": Décroissance linéaire du pic jusqu'à zéro."cosine": Décroissance cosinusoïdale (progressive, très utilisée). Bon choix par défaut."polynomial": Décroissance polynomiale avec puissance configurable."constant": Learning rate fixe pendant tout l'entraînement."constant_with_warmup": Phase de warmup, puis constant.
Tous les schedulers supportent une phase de warmup contrôlée par warmup_ratio. Pendant le warmup, le learning rate augmente linéairement de 0 jusqu'à la valeur configurée.
Évaluation pendant l'entraînement
Si vous disposez d'un dataset de validation, configurez l'évaluation en cours d'entraînement dans la section Evaluation des options avancées. Réglez la stratégie d'évaluation sur "steps" ou "epoch", sélectionnez un dataset de validation, et activez éventuellement l'early stopping.
La configuration correspondante :
{
"eval_strategy": "steps",
"eval_steps": 250,
"validation_dataset_id": 43,
"load_best_model_at_end": true,
"metric_for_best_model": "eval_loss",
"early_stopping_patience": 3,
"early_stopping_threshold": 0.001
}Le worker met l'entraînement en pause à chaque checkpoint d'évaluation, exécute le jeu de validation et rapporte la validation loss. Avec l'early stopping, l'entraînement s'arrête automatiquement quand la validation loss cesse de s'améliorer, ce qui évite le surapprentissage.
Checkpointing
Contrôlez la sauvegarde des checkpoints avec save_strategy :
"steps": Sauvegarde tous lessave_stepssteps."epoch": Sauvegarde à la fin de chaque epoch."no": Pas de checkpoints intermédiaires (seul le modèle final est sauvegardé).
Chaque checkpoint est uploadé sur S3 et contient les poids du modèle, l'état de l'optimiseur et les métriques à ce step. Si l'entraînement est interrompu, vous pouvez reprendre depuis le dernier checkpoint.
Recettes
Instruction tuning (LoRA, modèle 7B, RTX 4090 ou équivalent)
{
"epochs": 3,
"batch_size": 2,
"gradient_accumulation_steps": 8,
"learning_rate": 2e-4,
"warmup_ratio": 0.1,
"max_length": 1024,
"mixed_precision": "bf16",
"gradient_checkpointing": true,
"lr_scheduler": "cosine",
"use_peft": true,
"peft_method": "lora",
"lora_r": 16,
"lora_alpha": 32,
"lora_dropout": 0.05,
"save_strategy": "steps",
"save_steps": 200,
"eval_strategy": "steps",
"eval_steps": 100,
"logging_steps": 5
}Full fine-tuning (petit modèle, A100 80 Go)
{
"epochs": 5,
"batch_size": 16,
"gradient_accumulation_steps": 2,
"learning_rate": 5e-5,
"weight_decay": 0.01,
"warmup_ratio": 0.05,
"max_length": 2048,
"mixed_precision": "bf16",
"lr_scheduler": "cosine",
"use_peft": false,
"save_strategy": "steps",
"save_steps": 1000,
"eval_strategy": "steps",
"eval_steps": 500,
"logging_steps": 10
}Expérimentation rapide (GPT-2, itération rapide)
{
"epochs": 1,
"batch_size": 8,
"learning_rate": 5e-5,
"max_length": 256,
"mixed_precision": "auto",
"use_peft": false,
"save_strategy": "no",
"logging_steps": 1
}Résolution de problèmes
La loss est NaN
- Baissez le learning rate (par ex. de 5e-5 à 1e-5).
- Passez de fp16 à bf16, ou utilisez fp32.
- Vérifiez que le dataset ne contient pas d'exemples vides ou mal formés.
- Activez le gradient checkpointing pour stabiliser la mémoire.
Erreur de mémoire (OOM)
- Réduisez
batch_sizeet compensez avecgradient_accumulation_steps. - Réduisez
max_length. - Activez LoRA ou QLoRA.
- Activez le gradient checkpointing.
- Utilisez le mixed precision si vous êtes en fp32.
L'entraînement est lent
- Activez le mixed precision.
- Augmentez le batch size si la VRAM le permet.
- Réduisez
max_lengthsi vos données sont plus courtes. - Vérifiez
logging_steps: logger à chaque step ajoute du temps de calcul.
La qualité du modèle est mauvaise
- Entraînez pendant plus d'epochs (surveillez la validation loss pour détecter le surapprentissage).
- Augmentez le rang et l'alpha de LoRA.
- Vérifiez la qualité du dataset (cohérence, variété, exactitude).
- Essayez différents learning rates. L'optimum varie selon le modèle et le dataset.