BF16 (BFloat16)
iaDéfinition
BF16 (BFloat16 ou Brain Floating Point 16) est un format de representation numerique en virgule flottante 16 bits developpe par Google Brain, utilise massivement pour l'entrainement et l'inference des LLMs sur GPU et TPU modernes. BF16 utilise 1 bit de signe, 8 bits d'exposant, et 7 bits de mantisse — a comparer avec FP32 (1+8+23) et FP16 (1+5+10). L'avantage cle de BF16 par rapport a FP16 est la plage dynamique : avec 8 bits d'exposant (identique a FP32), BF16 peut representer la meme plage de valeurs que FP32 (environ 10^-38 a 3.4*10^38), alors que FP16 avec seulement 5 bits d'exposant a une plage beaucoup plus limitee (10^-8 a 65504). Cette plage limitee de FP16 entraine frequemment des overflow et underflow lors de l'entrainement de LLMs, necessitant des techniques de gradient scaling complexes. BF16 permet un entrainement 'mixed precision' plus stable que FP16 : les poids et les activations sont stockes en BF16 (divisant la memoire GPU par 2 par rapport a FP32), tandis que les accumulations et certains calculs critiques restent en FP32. Cette approche est standard dans l'entrainement de tous les LLMs modernes. Sur les GPU modernes (A100, H100, RTX 4090) et les Apple Silicon (M1/M2/M3), BF16 est supporté nativement avec des tensor cores dediés. Les throughputs BF16 sont typiquement 2x plus eleves que FP32. Sur les GPU plus anciens (V100, GTX 1080), BF16 n'est pas supporte et il faut recourir a FP16 avec gradient scaling. Pour l'inference, BF16 est souvent le bon compromis entre la precision FP32 et la quantification INT8/INT4. La degradation de performance par rapport a FP32 est marginale (<0.1% sur la plupart des benchmarks), tandis que le gain en memoire est de 50% et le throughput double. Les modeles HuggingFace se chargent facilement en BF16 avec torch_dtype=torch.bfloat16.
Comparatif formats numeriques
| Format | Bits | Exposant | Mantisse | Plage max |
|---|---|---|---|---|
| FP32 | 32 | 8 | 23 | 3.4e38 |
| BF16 | 16 | 8 | 7 | 3.4e38 |
| FP16 | 16 | 5 | 10 | 65504 |
| FP8 E4M3 | 8 | 4 | 3 | 448 |
| INT8 | 8 | N/A | N/A | 127 |
Chargement BF16 avec HuggingFace
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
'meta-llama/Meta-Llama-3.1-8B-Instruct',
torch_dtype=torch.bfloat16, # BF16 inference
device_map='auto' # Multi-GPU si disponible
)
print(f'VRAM estimee: {sum(p.numel() for p in model.parameters()) * 2 / 1e9:.1f} GB')# 8B params * 2 bytes/param (BF16) = ~16GB
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