De quoi sagit-il avec FP16, FP32 en Python? Mon partenaire commercial potentiel et moi construisons une configuration de Deep Learning pour travailler avec des séries chronologiques. Il est venu avec « FP16 et FP32 » tout en trouvant un GPU. On dirait quil parle de valeurs à virgule flottante en 16 contre 32 bits. (Nos points de données ressemblent à ceci: « 5989.12345 », donc je « suis presque sûr que 16 bits ne suffit pas.)

Est-ce que FP16 une technique spéciale que les GPU utilisent pour améliorer les performances ou est-ce juste un terme sophistiqué pour utiliser des valeurs flottantes 16 bits au lieu de 32 flottants standard?

Commentaires

  • Oui, FP16 signifie 16 bits dans le contexte du GPU.

Answer

FP32 et FP16 signifient 32- virgule flottante 16 bits et virgule flottante 16 bits. Les GPU se concentraient à lorigine sur FP32 car ce sont les calculs nécessaires pour les jeux 3D. De nos jours, de nombreux GPU ont un support natif de FP16 pour accélérer le calcul des réseaux de neurones. ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) vous verrez que les GPU prenant en charge FP16 sont presque deux fois plus rapides à calculer FP16 que FP32. compte que les nouvelles cartes prenant en charge FP16 (comme la série NVidia 2080) sont également abo ut 20% plus rapide pour FP32 par rapport à leur prédécesseur (1080), vous obtenez une augmentation de 140% pour entraîner les réseaux de neurones FP16 par rapport à FP32 sur les cartes précédentes.

Mais il y a une mise en garde. Votre réseau neuronal doit être écrit en utilisant FP16 et il doit également avoir la même précision. Les FP16 ont une précision inférieure par conception, car ils ont beaucoup moins de bits pour représenter le même nombre. Certains choisissent dutiliser des modèles de précision mixte pour être rapides et précis ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Mais vous voyez dans le dernier lien que la vitesse est plus rapide pour une précision mixte, mais nest pas 2 fois plus rapide que lorsque vous utilisez du FP16 pur. Vous pouvez également théoriquement utiliser des poids FP32 et convertir certains dentre eux en poids FP16, mais la précision pourrait chuter.

Donc, à la fin, vous devez comprendre si vous pouvez réécrire votre réseau neuronal pour utiliser FP16 totalement ou partiellement . Si vous ne pouvez pas, vous nobtiendrez aucun avantage supplémentaire avec les cartes compatibles FP16.

La valeur maximale pour FP16 est 65504 et la valeur minimale est 5,96 × 10−8. La meilleure précision pour 5989.12345 sera très probablement 5988.0 (joué avec des bits sur https://www.h-schmidt.net/FloatConverter/IEEE754.html ) Si cette précision et magnitude est pas assez pour vous alors vous pouvez mettre à léchelle vos données avant lentraînement pour sadapter au FP16, puis vous entraîner avec le double de la vitesse. Ou utilisez des modèles de précision mixtes où vous avez FP32 comme entrée, puis réduisez la précision dans les couches ultérieures.

Commentaires

  • contenu de blog hautement informatif, merci pour cela 🙂
  • Jai également inclus une représentation probable de votre numéro dans FP16. Si vous êtes satisfait de la réponse, ce serait bien si vous pouviez cocher la réponse comme étant la réponse acceptée et aussi voter si vous le souhaitez.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *