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).
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.
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 :
Cet équilibre minutieux permet aux modèles de s'entraîner plus rapidement et d'utiliser moins de GPU mémoire.