Ultralytics YOLO27 : Rejoins la liste d'attente.
Licence YOLO
Retour au glossaire Ultralytics

BFloat16 (BF16)

BFloat16 (BF16) est un nombre flottant de 16 bits doté de l’exposant de 8 bits de FP32 et d’une fraction de 7 bits, ce qui conserve la plage de FP32 avec moitié moins de mémoire. Comparaison avec FP16.

BFloat16 (format à virgule flottante du cerveau, BF16) est un format à virgule flottante de 16 bits composé de 1 bit de signe, 8 bits d’exposant et 7 bits de fraction. Il conserve la même largeur d’exposant que le format standard à virgule flottante de 32 bits (FP32), et couvre donc la même plage de valeurs, d’environ 1,2 × 10⁻³⁸ à 3,4 × 10³⁸, tout en occupant deux fois moins de mémoire par nombre. Le compromis concerne la précision : 7 bits de fraction ne fournissent que deux à trois chiffres décimaux significatifs. Le deep learning tolère bien cet arrondi, et ce format, conçu chez Google Brain pour les TPU de Google, est devenu le format 16 bits par défaut pour entraîner de grands modèles sur des GPU modernes et des accélérateurs.

Comment BF16 représente les nombres#

Une valeur BF16 correspond exactement à la moitié supérieure d’une valeur FP32 : le même signe et le même exposant, avec une fraction réduite de 23 à 7 bits. La conversion de FP32 en BF16 ne fait donc qu’arrondir les 16 bits de poids faible, et la conversion inverse ajoute des zéros ; le format est ainsi peu coûteux à implémenter dans le matériel. L’autre format 16 bits courant, IEEE FP16 ou demi-précision, répartit ses bits différemment, avec 5 bits d’exposant et 10 bits de fraction, ce qui améliore la précision au détriment de la plage. La comparaison des trois formats pour les mêmes valeurs illustre le compromis :

import torch

# Largest value, smallest normal value, and spacing just above 1.0 for each format
for dtype in [torch.float32, torch.float16, torch.bfloat16]:
    info = torch.finfo(dtype)
    print(f"{dtype!s:15} max={info.max:.3g}  tiny={info.tiny:.3g}  eps={info.eps:.3g}")

# A large activation, a tiny gradient, and a value that needs fine precision
x = torch.tensor([70000.0, 1e-8, 1.001953125])
print("FP16:", x.half().tolist())
print("BF16:", x.bfloat16().tolist())

BF16 atteint un maximum de 3.39e38, contre 65 504 pour FP16, et sa plus petite valeur normale, 1.18e-38, correspond à celle de FP32. FP16 transforme 70 000 en infini et 1e-8 en zéro, tandis que BF16 conserve les deux valeurs sous la forme 70 144 et environ 1.0e-8. Le pas plus fin de FP16 (eps 0.000977, contre 0.00781 pour BF16) préserve exactement 1.001953125, tandis que BF16 l’arrondit à 1.0.

BF16 ou FP16 pour l’entraînement#

Pendant l’entraînement, la plage compte davantage que la précision. Les gradients passent souvent sous les plus petites valeurs de FP16 et disparaissent ; l’entraînement en précision mixte FP16 multiplie donc la perte par un facteur d’échelle avant la rétropropagation et réduit ce facteur chaque fois que les gradients débordent ; cette technique s’appelle la mise à l’échelle de la perte. BF16 n’a pas besoin de mise à l’échelle de la perte, car sa plage est identique à celle de FP32, et l’entraînement BF16 égale les résultats FP32 pour les modèles de vision, de parole, de langage et de recommandation en autant d’itérations, sans modifier les hyperparamètres. L’entraînement en précision mixte conserve une copie principale des poids en FP32 et effectue les multiplications matricielles en BF16 avec accumulation en FP32, car additionner en BF16 de nombreux produits ayant une fraction de 7 bits entraînerait une perte de précision trop importante. Le choix entre les deux formats 16 bits dépend principalement du matériel :

PyTorch applique BF16 via la précision mixte automatique avec torch.autocast(device_type="cuda", dtype=torch.bfloat16). Ultralytics YOLO propose le même réglage pour l’entraînement avec amp="bf16" : la passe avant s’exécute en autocast BF16 et le scaler de gradient utilisé par défaut en mode FP16 est désactivé, sur les GPU CUDA prenant en charge nativement BF16.

Prise en charge matérielle#

Les TPU Cloud de deuxième et troisième génération de Google effectuent les multiplications en BF16 dans leurs unités matricielles et accumulent les résultats en FP32 ; les générations ultérieures de TPU ont conservé ce format. Les GPU NVIDIA exécutent BF16 sur les Tensor Cores à partir de la génération Ampere, notamment sur les GPU A100, H100 et Blackwell, et les processeurs Intel Xeon équipés des extensions Advanced Matrix Extensions (AMX) l’accélèrent sur le CPU. Sur un NVIDIA A100, les opérations Tensor Core en BF16 et FP16 atteignent toutes deux un débit de pointe de 312 teraFLOPS, soit 16 fois les 19,5 teraFLOPS des opérations FP32 standard du GPU.

  • Demi-précision (FP16) : Le format IEEE 16 bits, plus précis mais avec une plage bien plus limitée. Il reste courant pour l’inférence, où les activations restent dans sa plage et où sa précision supplémentaire est utile.
  • TF32 : Mode de calcul des Tensor Cores NVIDIA qui combine l’exposant de 8 bits de BF16 et la fraction de 10 bits de FP16. Les bibliothèques peuvent l’utiliser pour les multiplications matricielles FP32 sur les GPU Ampere et ultérieurs, tandis que les tenseurs restent stockés sur 32 bits.
  • FP8 : Formats à virgule flottante de 8 bits comme E4M3 et E5M2, pris en charge par les GPU Hopper et Blackwell, qui divisent encore par deux la mémoire nécessaire pour entraîner et exécuter les plus grands modèles.
  • Quantification des modèles : Convertit les poids entraînés en formats entiers comme INT8 ou INT4 pour le déploiement.

BF16 dans les grands modèles de langage#

La plupart des grands modèles de langage (LLM) à poids ouverts sont entraînés en précision mixte BF16 et publiés avec des poids BF16, qui servent de référence pour évaluer les versions quantifiées FP8 et INT4. À raison de 2 octets par paramètre, les poids d’un modèle de 70 milliards de paramètres occupent 140 Go en BF16, soit davantage que les 80 Go d’un seul NVIDIA H100 ; l’exécution d’un tel modèle en BF16 nécessite donc de le répartir sur au moins deux GPU.

Explore solutions

La vision par ordinateur dans le sport

La vision par ordinateur dans le sport

Découvre comment Ultralytics YOLO propulse la vision par ordinateur dans le sport grâce au suivi des joueurs et du ballon, aux analyses de performance, aux conseils d’entraînement et à la rééducation des athlètes.
En savoir plus
Vision par ordinateur pour les images aériennes

Vision par ordinateur pour les images aériennes

Transforme les images de drones et les images aériennes en informations exploitables en temps réel pour l’agriculture, l’aquaculture, la conservation et l’analyse géospatiale avec Ultralytics YOLO.
En savoir plus
Vision par ordinateur dans l’aérospatiale

Vision par ordinateur dans l’aérospatiale

Applique la vision par ordinateur dans l’aérospatiale avec Ultralytics YOLO pour l’inspection des aéronefs, la détection des corps étrangers sur les pistes, les opérations au sol des aéroports et la détection des défauts des matériaux composites.
En savoir plus
La vision par ordinateur dans la sécurité

La vision par ordinateur dans la sécurité

Protège chaque site avec les modèles Ultralytics YOLO. L’IA visuelle permet la surveillance des périmètres, la détection des menaces, la reconnaissance des plaques d’immatriculation et la sécurité au travail.
En savoir plus
La vision par ordinateur en robotique

La vision par ordinateur en robotique

Donne plus de capacités à tes machines grâce aux modèles Ultralytics YOLO. Dans la robotique, l’IA visuelle permet la navigation autonome, la perception, le suivi des objets et le contrôle en temps réel.
En savoir plus
La vision par ordinateur dans la logistique

La vision par ordinateur dans la logistique

Optimise la logistique avec les modèles Ultralytics YOLO. La vision par IA permet d’inspecter les colis, de les trier, de suivre les véhicules et de surveiller la sécurité des entrepôts en temps réel.
En savoir plus
La vision par ordinateur dans le commerce de détail

La vision par ordinateur dans le commerce de détail

Réinvente le commerce de détail avec les modèles Ultralytics YOLO. La vision par IA permet de suivre les stocks, de surveiller les rayons, de gérer les files d’attente et de mieux comprendre les clients.
En savoir plus
La vision par ordinateur dans le secteur de la santé

La vision par ordinateur dans le secteur de la santé

Crée des solutions de santé avec les modèles Ultralytics YOLO. La vision par IA dans le secteur de la santé accélère l’imagerie médicale, améliore les diagnostics et facilite la surveillance des patients.
En savoir plus
La vision par ordinateur dans l’industrie manufacturière

La vision par ordinateur dans l’industrie manufacturière

Optimise la fabrication avec les modèles Ultralytics YOLO. La vision par IA améliore le contrôle qualité, la détection des défauts, le respect des règles concernant les EPI et l’automatisation des chaînes de montage.
En savoir plus
La vision par ordinateur dans l’automobile

La vision par ordinateur dans l’automobile

Mets la vision par ordinateur au service de l’automobile avec les modèles Ultralytics YOLO. La vision par IA renforce la sécurité routière, l’aide à la conduite et l’automatisation des véhicules pour des routes plus intelligentes.
En savoir plus
Vision par ordinateur dans l’agriculture

Vision par ordinateur dans l’agriculture

Fais entrer l’IA de vision dans l’agriculture intelligente avec les modèles Ultralytics YOLO. Optimise le suivi des cultures et du bétail ainsi que l’agriculture de précision pour obtenir des rendements plus élevés et plus intelligents.
En savoir plus

Construisons ensemble l’avenir de l’IA !

Commence ton parcours vers l’avenir de l’apprentissage automatique