Les principales différences entre FP16 (point flottant 16 bits) et la précision INT8 (entier 8 bits) pour les modèles Deepseek tournent principalement autour de la précision, de la plage dynamique et de l'efficacité de calcul.
Précision
FP16 fournit généralement une précision plus élevée par rapport à INT8. Ceci est particulièrement important pour les modèles nécessitant des calculs précis, car FP16 peut représenter une gamme plus large de valeurs et des distinctions plus fines entre elles en raison de sa nature à virgule flottante. En revanche, la précision inférieure d'Int8 peut entraîner des erreurs de quantification plus importantes, en particulier dans les scénarios où les paramètres ou les activations du modèle ont des valeurs qui dépassent la plage limitée des entiers 8 bits signés, qui s'étend de -128 à 127 [1] [4].Plage dynamique
La plage dynamique de FP16 est nettement plus large que celle de INT8. FP16 peut exprimer des valeurs à travers un spectre beaucoup plus grand car il attribue des bits pour l'exposant et la mantissa, ce qui lui permet de gérer efficacement les nombres très petits et très grands. En comparaison, la plage fixe d'Int8 limite son applicabilité, en particulier dans les modèles complexes où les valeurs de sortie peuvent varier considérablement [2] [3]. Par exemple, alors que INT8 a une plage dynamique de $$ 2 ^ 8 $$, FP16 peut représenter des valeurs dans une plage qui permet efficacement une représentation de données beaucoup plus nuancée [2].Efficacité de calcul
INT8 est optimisé pour l'efficacité de calcul, en particulier dans les tâches d'inférence sur les appareils Edge. L'utilisation de l'arithmétique entier nécessite généralement moins de puissance et peut entraîner des calculs plus rapides par rapport aux opérations à virgule flottante. Cette efficacité est cruciale pour le déploiement de modèles dans des applications en temps réel où la latence et la consommation d'énergie sont des facteurs critiques [1] [4]. De plus, la quantification INT8 permet des réductions significatives de l'utilisation de la mémoire, ce qui peut améliorer les performances des appareils avec des ressources limitées [3] [5].En résumé, alors que FP16 offre une précision supérieure et une plage dynamique adaptée à la formation et à l'inférence de modèles complexes, INT8 excelle dans l'efficacité et la vitesse opérationnelles, ce qui le rend préférable pour le déploiement dans des environnements liés aux ressources. Le choix entre ces précisions dépend souvent des exigences spécifiques de l'application, telles que le besoin de précision par rapport au besoin de vitesse et d'efficacité.
Citations:[1] https://arxiv.org/pdf/2303.17951.pdf
[2] https://www.baseten.co/blog/fp8-ofesivet-model-inference-with-8-bit-floating-point-numbers/
[3] https://itsabout.ai/udgerstanding-data-types-in-ai-and-hpc-int8-fp8-fp16-bf16-bf32-fp32-tf32-fp64-et-hardware-accelerators/
[4] https://massedcompute.com/faq-answers/?question=What+Are+the+Différences+between+Int8+ et+fp16+precision+In+Term
[5] https://www.baseten.co/blog/introduction-to-quantizing-ml-models/
[6] https://www.reddit.com/r/machinelearning/comments/114fgo8/d_is_fp16_used_in_deep_learning_or_fp32/
[7] https://forums.developer.nvidia.com/t/same-inference-speed-for-int8-and-fp16/66971
[8] https://forums.developer.nvidia.com/t/int8-vs-fp16-results/158139