Il y a 24 joursEdf

Stage - Parallélisation et accélération de calculs d'apprentissage par renforcement appliqués aux plans de chargement - H/F

  • Stage
  • Saclay (Essonne)
  • Master, Titre d'ingénieur, Bac +5
  • Études / Statistiques / Data

Description de l'offre

Contexte général

Ces dernières années les méthodes d’apprentissage par renforcement associées à des réseaux de neurones ont connu des succès importants. Dans le domaine des jeux ATARI, les équipes de Google DeepMind sont parvenues à atteindre des performances supérieures à celles de l’humain, en utilisant un algorithme de Deep-Q-Learning [1]. Plus récemment, ces mêmes équipes ont battu les meilleurs joueurs humains de GO avec un algorithme de MCTS [2].

Il s’agit dans les deux cas de créer un agent capable d’effectuer une série d’actions sur un environnement afin de maximiser un objectif. Cet agent possède une politique qui définit les actions à prendre en fonction de l’état de l’environnement, et une valeur qui estime le gain attendu à partir de cet état ([3]). La politique et la valeur sont représentées par un réseau de neurones, et ajustées lors d’une période d’apprentissage au cours de laquelle l’agent réalise une série d’expériences du type essai-erreur. Des bibliothèques open-source (keras, tensorflow) sont désormais disponibles et permettent d’implémenter facilement ces algorithmes.

Ce formalisme peut être utilisé pour résoudre des problèmes industriels d’optimisation dans lesquels un système qui doit respecter des critères de performance peut être modifié par une série d’actions. Elles ont alors l’avantage de concentrer l’essentiel du temps de calcul lors de la phase d’apprentissage, et de pouvoir être ensuite appliquées très rapidement à l’optimisation du même problème pour des états initiaux différents du système.

 

Problème industriel

Tous les douze ou dix-huit mois, les réacteurs nucléaires du parc français sont mis à l’arrêt pour rechargement. Dans un premier temps, tous les assemblages sont retirés du cœur. Puis, un nouvel ensemble d’assemblages, appelé recharge, est choisi. La recharge comporte, suivant les gestions, un tiers ou un quart d’assemblages neufs, ainsi que des assemblages usés, ayant déjà réalisé un ou plusieurs cycles d’irradiation. La position des assemblages dans le cœur doit être choisie judicieusement afin de respecter un ensemble de critères de sûreté. En particulier, il convient de s’assurer que la puissance est répartie de manière homogène dans le cœur et qu’elle le restera pour différentes configurations accidentelles.

Les ingénieurs EDF de l’Unité d’Ingénierie d’Exploitation (UNIE) sont chargés du choix de la disposition des assemblages usés dans le cœur ou « plan de chargement ». Pour cela, ils disposent d’une IHM qui leur permet de modifier un plan de chargement en réalisant des permutations de groupes d’assemblages.

Ce processus correspond exactement au formalisme de l’apprentissage par renforcement. Il existe certes déjà des méthodes automatiques de recherche de plan (algorithmes génétiques, colonies de fourmies), mais leur temps de calcul devient prohibitif lorsque l’on cherche à y intégrer plusieurs critères de sûreté. Il est très tentant de tester des méthodes d’apprentissage par renforcement afin de faire ce travail plus rapidement.

Une équipe d’EDF-R&D travaille donc sur cette thématique. Des algorithmes de Deep-Q-learning et de Monte-Carlo-Tree-Search sont actuellement testés. De premiers résultats encourageants ont été obtenus, mais les performances doivent encore être améliorées avant que ces nouveaux outils soient utilisables par les ingénieurs d’exploitation.

Objectif du stage

La phase d’apprentissage du réseau de neurones comporte deux types de tâches : la réalisation des expériences (c’est-à-dire des expériences par essai erreur de l’agent), et l’ajustement des poids du réseau de neurones. La réalisation des expériences met en œuvre des calculs de réacteur pour évaluer les critères de sûreté. Chaque calcul est relativement couteux en temps, mais il est très facile de les paralléliser. Plusieurs copies de l’agent réalisent alors sur différents processeurs des séries d’expériences qui sont agrégées dans une base de données commune.

L’ajustement des poids du réseau est traditionnellement réalisé par une descente de gradient. Elle est donc réalisée sur un seul exemplaire de l’agent. Actuellement, cette tâche est réalisée sur un seul GPU et est responsable de la plus grande part du temps de calcul. Différentes techniques peuvent permettre de paralléliser cette étape sur les GPUs, sur une ou plusieurs machines.

La rapidité de la phase d’apprentissage est essentielle pour permettre à l’agent d’intégrer davantage d’expériences et améliorer ainsi ses performances.

Le stagiaire contribuera aux travaux sur l’application de méthodes d’apprentissage par renforcement à la recherche de plans de chargement. En particulier, il s’agira donc d’accélérer la phase d’apprentissage, en améliorant l’implémentation du code et en mettant en place une parallélisation de l’étape d’ajustement des poids.

Le travail nécessitera notamment de :

Comprendre les algorithmes utilisés
Tester des méthodes de parallélisation de la phase d’ajustement (via tensorflow, MPI ou Horovod par exemple).
Identifier si possible d’autres leviers d’accélération du code et les implémenter.
Le contenu du stage pourra être adapté en fonction de l’avancée des travaux en cours et des compétences du stagiaire.

 

Références :

[1] V. Minh (Google Deep Mind) et al., Human-level control through deep reinforcement learning, Nature, vol 518, pp 529-541, Février 2015

[2] D.Silver (Google Deep Mind) et al., Mastering the game of Go without human knowledge, Nature vol 550, pp 354-359, Octobre 2017

[3] R.Sutton et al, Reinforcement Learning, An Introduction, The MIT Press, 2017

Profil recherché

Etudiants bac + 5 en dernière année d'école d'ingénieur ou en M2

Stage d'une durée de 6 mois.

Sujets abordés par le stage :

Intelligence artificielle, Physique des réacteurs nucléaires, Utilisation de langages scientifiques (Python, Keras, TensorFlow), Système d’exploitation Unix/Linux.

Compétences requises :

Une très forte motivation est souhaitée. Ce stage porte sur un sujet de R&D amont qui nécessite des qualités de réflexion et de créativité, ainsi que des capacités informatiques. Le stagiaire devra être d’être force de proposition pour améliorer la performance des algorithmes.