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.

BF16 (BFloat16)

ia

Dé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

FormatBitsExposantMantissePlage max
FP32328233.4e38
BF1616873.4e38
FP161651065504
FP8 E4M3843448
INT88N/AN/A127

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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis