Doctorant F/H Reconnaissance de programmes par intelligence artificielle

Type de contrat : CDD

Niveau de diplôme exigé : Bac + 5 ou équivalent

Fonction : Doctorant

A propos du centre ou de la direction fonctionnelle

Le centre Inria de Lyon est le 9ème centre de recherche Inria. Créé en janvier 2022, il regroupe environ 300 personnes au sein de 16 équipes de recherche et des services supports à la recherche.

Ses équipes sont localisées sur 2 campus : à Villeurbanne, La Doua, et à Lyon Gerland.

Le centre de Lyon est présent dans les domaines du logiciel, du calcul distribué et haute performance, des systèmes embarqués, du calcul quantique et de respect de la vie privée dans le monde numérique, mais aussi de la santé et de la biologie numériques.

Contexte et atouts du poste

Dans le cadre de l'action exploratoire Inria ProgReco entre Inria Lyon et l'Université Côte d'Azur, nous recrutons un.e doctorant.e en codirection entre l'ENS de Lyon et l'université Côte d'Azur.
Le doctorant pourra prendre ses fonctions à l'université Côte d'Azur ou bien à l'ENS de Lyon.


Mission confiée

L'objectif est de construire une analyse statique capable de reconnaitre automatiquement un programme en utilisant des techniques d'intelligence artificielle; et d'explorer son application à l'optimisation automatique de programmes. Le travail de recherche demandé comprend l'implémentation de la solution et les expérimentations nécessaires à sa publication.

Principales activités

Les grandes étapes de la recherche demandée incluent les points suivants :

  1. Trouver une bonne représentation d'un programme. Un programme se modèlise naturellement par un graphe. On cherche à garder des élements de syntaxe et un représenter la sémantique du programme (le calcul) en exhibant le flot de donnée et le flot de contrôle. La forme SSA et ses variantes se prêtent bien à cet exercice. En particulier, la gated-SSA et son extension aux tableaux sont de bons points de départ pour construire une telle représentation.
  2. Choisir un modèle d'apprentissage. Une fois trouvé la bonne représentation par graphe, il faut choisir un modèle d'apprentissage approprié. Les graph neural networks sont un bon point de départ et ont déjà donné des résultats prometteurs. Les gated-graph sequence neural networks utilisés avec succès en analyse de programme, sont également une piste possible.
  3. Générer un jeu d'entrainement. Il nous faut plusieurs variantes d'un programme pour entrainer le modèle d'apprentissage. Une première idée consiste consiste à considérer les passes qui sont utilisées au sein des options d’optimisation comme O3. Ensuite, on garde chaque passe avec une certaine probabilité. Si le programme est régulier, on peut également choisir aléatoirement une transformation affine de boucles à la manière des travaux sur la compilation itérative. La difficulté est de trouver un ensemble de variants suffisament uniforme pour éviter l'overfitting.
  4. Application à l'optimisation de programmes. Une fois un algorithme reconnu, on peut le substituer par une version plus efficace disponible dans une bibliothèque de calcul haute performance. Un défi majeur doit être relevé ici : notre classifieur ne fait que des prédictions, il n'y a aucune garantie d'équivalence. Il faudra donc filtrer le résultat avec un test d'équivalence sémantique exact, ce qui limite ce scénario d'application à la classe des programmes réguliers dont l'équivalence est semi-décidable. La classe des programmes réguliers est tout particulièrement présente dans les codes de calcul haute performance; et il existe une grande variété de bibliothèques optimisées (MKL, MAGMA, PLASMA, etc) avec des cibles diverses (GPU, multicoeur). Notons que cette restriction aux programmes réguliers ne concerne que cette étape d'application. Notre système de reconnaissance de programme s'efforcera d'être le plus général possible.

En plus de l'activité de recherche, le/la doctorant.e pourra effectuer des activités complémentaires d'enseignement à l'université ou à l'ENS de Lyon.

Compétences

Le/la candidat.e idéal.e pour cette thèse est un.e étudiant.e qui a suivi une formation en informatique fondamentale (compilation, programmation avancée, réseaux de neurones, graphes). Sur la partie implémentation, la maîtrise du C++ est nécessaire.

Avantages

  • Restauration subventionnée
  • Transports publics remboursés partiellement
  • Congés: 7 semaines de congés annuels + 10 jours de RTT (base temps plein) + possibilité d'autorisations d'absence exceptionnelle (ex : enfants malades, déménagement)
  • Possibilité de télétravail 90 jours/an fixes ou flottants et aménagement du temps de travail
  • Prestations sociales, culturelles et sportives (Association de gestion des œuvres sociales d'Inria)
  • Accès à la formation professionnelle
  • Participation Protection Sociale Complémentaire sous conditions

Rémunération

1ère et 2ème année : 2 100 euros brut /mois

3ème année : 2190 euros brut / mois