Batch Size (LLM Training)
iaDé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
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h