FERRO Quentin

doctorant à Sorbonne Université
Équipe : PEQUAN
https://lip6.fr/Quentin.Ferro

Direction de recherche : Fabienne JÉZÉQUEL, Stef GRAILLAT

Co-encadrement : HILAIRE THibault

Auto-ajustement de la précision et validation numérique

Cette thèse se concentre sur l'auto-ajustement de la précision des nombres flottants, en particulier via l'outil PROMISE. L'auto-ajustement consiste à réduire la précision des variables flottantes d'un code, de manière automatique, tout en respectant une contrainte de précision sur le résultat final. Abaisser la précision des variables présente de nombreux avantages en termes de performances en temps, en mémoire, et en énergie consommée, d'où son application à des codes HPC. À cette fin, de nombreux outils existent. La particularité de PROMISE est l'utilisation de l'Arithmétique Stochastique Discrète (ASD) via la bibliothèque de validation numérique CADNA, qui lui permet d'estimer au mieux la précision des résultats.
Alors que la réduction de réseaux de neurones utilise en général des méthodes spécifiques, ces derniers pourraient aussi tirer bénéfice de l'auto-ajustement de la précision. En ce sens, PROMISE a été appliqué à quatre différents réseaux de neurones, démontrant la possible diminution des précisions flottantes dans la phase d'inférence, sans compromettre la précision des résultats. Deux approches sont testées. La première consiste à prendre la même précision pour les paramètres d'un même neurone. Elle permet d'abaisser le plus de précisions possible. La seconde consiste à prendre une précision par couche. Malgré un plus grand nombre de variables en précision élevée, elle permet d'obtenir un résultat plus rapidement. Le résultat de PROMISE dépendant de l'entrée choisie pour l'inférence, elle peut aussi se révéler moins spécifique à une entrée unique. L'auto-ajustement avec PROMISE a aussi été étudié dans la phase d'apprentissage des réseaux de neurones. Malgré une application limitée par le caractère aléatoire de cette phase, cela a permis de montrer que l'abaissement de la précision des variables flottantes avait très peu d'impact sur la phase d'apprentissage.
L'application de PROMISE met aussi en avant des améliorations significatives en termes de performances. En mémoire, les résultats sont équivalents aux données théoriques d'utilisation mémoire de chaque format flottant. En temps, les résultats d'accélération obtenus pour des codes vectorisés et non vectorisés se rapprochent des résultats théoriques, mais sont ternis par certaines opérations (casts et appels aux fonctions de bibliothèques). Tous ces résultats viennent confirmer l'intérêt de l'abaissement de la précision, notamment au sein de codes vectorisés.
Outre les performances des codes étudiés, celles de PROMISE ont également été examinées. La parallélisation de l'algorithme principal utilisé par PROMISE a été réalisée. L'implémentation d'un outil d'instrumentation basé sur Clang/LLVM a aussi été réalisée. Cet outil permet d'instrumenter des codes pour CADNA, remplaçant un script Perl, non robuste et ad hoc. Il permet aussi d'instrumenter automatiquement des codes pour PROMISE, instrumentation effectuée jusqu'ici à la main. Une troisième version de cet outil, sous forme d'API Python, vient remplacer l'analyse et la création de code effectuées au sein de PROMISE, rendant ces étapes plus robustes.

Soutenance : 16/10/2024

Membres du jury :

Daniel Menard, IETR, INSA Rennes [Rapporteur]
Guillaume Revy, LIRMM, Université de Perpignan [Rapporteur]
Pierre Fortin, CRIStAL, Université de Lille
Stef Graillat, LIP6, Sorbonne Université
Thibault Hilaire, LIP6, Sorbonne Université
Fabienne Jézéquel, LIP6, Université Paris-Panthéon Assas

Date de départ : 02/11/2024

Publications 2022-2024