Glossaire

Précision mixte

Booste l'efficacité de l'apprentissage profond avec un entraînement de précision mixte ! Obtiens des vitesses plus rapides, une utilisation réduite de la mémoire et des économies d'énergie sans sacrifier la précision.

Entraîne les modèles YOLO simplement
avec Ultralytics HUB

En savoir plus

L'apprentissage à précision mixte est une technique utilisée dans l'apprentissage profond (DL) pour accélérer l'apprentissage des modèles et réduire la consommation de mémoire sans avoir d'impact significatif sur la précision des modèles. Elle y parvient en utilisant stratégiquement une combinaison de différents formats de précision numérique pour le stockage et le calcul des valeurs au sein d'un réseau neuronal (NN). Généralement, cela implique l'utilisation du format standard 32 bits à virgule flottante (FP32 ou simple précision) pour les parties critiques comme le stockage des poids du modèle, tout en employant les formats 16 bits à virgule flottante plus rapides et moins gourmands en mémoire (FP16 ou demi-précision, et parfois BF16 ou BFloat16) pour les calculs pendant les passes avant et arrière(rétropropagation).

Comment fonctionne la précision mixte

L'idée principale derrière la précision mixte est de tirer parti des avantages de la vitesse et de la mémoire des formats de précision inférieure tout en atténuant les problèmes potentiels de stabilité numérique. Une approche courante comprend les étapes suivantes :

  1. Maintien des poids principaux en FP32 : Une copie principale des poids du modèle est conservée dans le format standard FP32 afin de garantir une grande précision pour les mises à jour des poids.
  2. Utiliser FP16/BF16 pour les calculs : Pendant la boucle d'apprentissage, les poids FP32 sont coulés en FP16 ou BF16 pour les passes avant et arrière. Les calculs utilisant ces formats de précision inférieure sont nettement plus rapides sur le matériel moderne comme les GPUNVIDIA équipés de Tensor Cores, qui sont spécifiquement conçus pour accélérer les multiplications de matrices à des précisions inférieures.
  3. Mise à l'échelle des pertes : Lorsque l'on utilise FP16, la plage des nombres représentables est beaucoup plus petite que FP32. Les petites valeurs de gradient calculées pendant la rétropropagation peuvent donc devenir nulles (sous-écoulement), ce qui entrave l'apprentissage. Pour éviter cela, la valeur de la perte est mise à l'échelle avant la rétropropagation, ce qui a pour effet de mettre à l'échelle les gradients dans une plage représentable par FP16. Avant la mise à jour du poids, ces gradients sont remis à l'échelle. BF16, avec sa plage dynamique plus large similaire à FP32 mais sa précision plus faible, évite souvent la nécessité d'une mise à l'échelle de la perte.
  4. Mettre à jour les poids principaux : Les gradients calculés (remis à l'échelle si l'échelonnement des pertes a été utilisé) sont utilisés pour mettre à jour la copie principale des poids, qui restent en FP32.

Cet équilibre minutieux permet aux modèles de s'entraîner plus rapidement et d'utiliser moins de GPU mémoire.

Avantages de la précision mixte

  • Formation plus rapide : Les calculs de moindre précision (FP16/BF16) s'exécutent beaucoup plus rapidement sur du matériel compatible, ce qui réduit considérablement le temps nécessaire pour chaque époque de formation. Cela permet une itération et une expérimentation plus rapides.
  • Consommation de mémoire réduite : Les valeurs FP16/BF16 nécessitent la moitié de la mémoire des valeurs FP32. Cette réduction s'applique aux activations stockées pendant la passe avant et aux gradients calculés pendant la passe arrière. La réduction de la consommation de mémoire permet de former des modèles plus importants ou d'utiliser des lots plus importants, ce qui peut améliorer les performances du modèle et la stabilité de la formation.
  • Amélioration de l'efficacité : La combinaison d'un calcul plus rapide et d'exigences moindres en matière de bande passante mémoire conduit à une utilisation plus efficace des ressources matérielles, ce qui peut potentiellement réduire les coûts de formation pour l'informatique en nuage ou les clusters sur site.

Précision mixte et concepts connexes

  • Précision totale (FP32) : La formation traditionnelle utilise la FP32 pour tout le stockage et le calcul. Elle est généralement plus stable numériquement, mais plus lente et plus gourmande en mémoire que la précision mixte.
  • Demi-précision (FP16/BF16) : Utiliser uniquement FP16 ou BF16 tout au long de la formation peut conduire à une instabilité numérique importante (surtout FP16 sans techniques comme la mise à l'échelle des pertes) et à une perte potentielle de précision. La précision mixte est une approche plus robuste qui combine FP32 et FP16/BF16.
  • Quantification du modèle: Il s'agit généralement de convertir les poids et/ou les activations du modèle en formats de précision encore plus faible, tels que les entiers de 8 bits (INT8), principalement pour optimiser la vitesse et l'efficacité de l'inférence, en particulier sur les appareils de périphérie. Bien qu'elle soit parfois utilisée pendant la formation(Quantization-Aware Training), elle est distincte de la précision mixte typique FP32/FP16 utilisée pendant les phases de formation standard.

Applications et exemples

La précision mixte est largement adoptée dans la formation des modèles d'apprentissage automatique (ML) à grande échelle.

  1. Formation de grands modèles linguistiques (LLM) : Les modèles tels que GPT-3, BERT et T5 ont des milliards de paramètres. Les entraîner en utilisant uniquement FP32 nécessiterait des quantités prohibitives de mémoire et de temps de la part du GPU . La précision mixte permet d'entraîner de tels modèles de base en réduisant considérablement les besoins en mémoire et en accélérant les calculs. Des frameworks comme PyTorch et TensorFlow offrent une prise en charge intégrée de la formation en précision mixte.
  2. Accélérer les modèles de vision par ordinateur : Dans le domaine de la vision par ordinateur (VA), la précision mixte accélère la formation de modèles complexes tels que les réseaux neuronaux convolutifs (CNN) et les transformateurs de vision (ViT) utilisés pour des tâches telles que la détection d'objets, la segmentation d'images et la classification d'images. Par exemple, les modèlesYOLO d'Ultralytics , y compris le dernier modèle de la série Ultralytics YOLO11peuvent exploiter la précision mixte pendant la formation pour une convergence plus rapide et une utilisation efficace des ressources, comme indiqué dans nos conseils sur la formation des modèles et nos comparaisons de modèles. Cela permet aux utilisateurs de former plus rapidement des modèles très performants sur des ensembles de données tels que COCO. Les cycles de formation plus rapides facilitent l'ajustement des hyperparamètres et le développement de modèles au sein de plateformes comme Ultralytics HUB. La précision mixte peut également être utilisée pendant l'inférence pour accélérer le déploiement, en particulier lors de l'exportation de modèles vers des formats tels que TensorRT qui optimisent fortement pour des précisions inférieures.
Tout lire