Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Batch Size (LLM Training)

ia

Définition

Le Batch Size dans l'entrainement des LLMs est le nombre de sequences d'entrainement utilisees pour calculer les gradients lors de chaque step d'optimisation. C'est un hyperparametre critique qui affecte la stabilite de l'entrainement, la vitesse de convergence, la qualite finale du modele et l'utilisation efficace du hardware. Les effets du batch size : (1) Grand batch (1M+ tokens) — gradients plus stables et moins bruites, convergence plus rapide (moins de steps necessaires), mais risque de converger vers de moins bons minima (les grands batches explorent moins l'espace des parametres). (2) Petit batch (8K-64K tokens) — plus de bruit dans les gradients qui agit comme regulariseur (exploration plus large de l'espace), mais convergence plus lente et training instable. Le gradient accumulation est la technique standard pour simuler de grands batches sur des GPU a VRAM limitee : au lieu de calculer le gradient sur un batch de N sequences, on calcule le gradient sur N/k batches de taille k et on accumule les gradients avant la mise a jour. 8 accumulation steps de batch_size=4 equivalent a un batch_size=32. La relation batch size - learning rate : la recherche suggere de scaler le LR lineairement avec le batch size (Linear Scaling Rule, Goyal et al. 2017). Doubler le batch size doit s'accompagner d'un doublement du LR pour maintenir la meme 'vitesse effective d'entrainement'. En pratique, ce scaling est sous-lineaire pour les tres grands batches. Les valeurs typiques : pre-training de LLMs 7B (Llama 2, Mistral) utilisent des batches de 2M tokens (avec gradient accumulation), le SFT utilise 128K-512K tokens, et le DPO/ORPO utilisent 32K-128K tokens. Pour le fine-tuning sur une seule GPU, batch_size=1-4 avec gradient accumulation steps=8-32 est courant.

Gradient Accumulation pour grands batches

# Simuler batch_size=32 avec per_device_batch_size=4 et 8 GPUs
# Effective batch = 4 * 8 * 1 = 32 sequences

from transformers import TrainingArguments
args = TrainingArguments(
    per_device_train_batch_size=4,
    gradient_accumulation_steps=1,  # 4 * 8 GPUs * 1 = 32 effectif
    # Ou avec 1 GPU pour simuler 32:
    # per_device_train_batch_size=4, gradient_accumulation_steps=8 -> 32
    learning_rate=1e-4,   # A ajuster avec le batch size
    max_grad_norm=1.0,    # Gradient clipping
)

Regles empiriques

  • Doubler le batch -> doubler le LR (approximativement)
  • Batch trop petit (<8 seq) -> entrainement instable avec BF16
  • Monitorer le gradient norm : si souvent > max_grad_norm, reduire le LR

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis