Deux benchmarks principaux ont été retenus :
- Le projet AIDAQ qui consiste à implémenter des algorithmes de reconnaissance neuronale sur FPGA dans le calorimètre à argon liquide d’ATLAS pour réaliser les fonctions de trigger de premier niveau en environnement fortement bruité et avec des niveaux de pile-up variables.
L’implémentation fait appel à des réseaux récursifs sur FPGA Intel - Le projet ImXgam pour débruiter des images de tomographie 3D.
L’implémentation fait appel à des encodeurs variables implémentés sur carte GPU.
Les data sets et implémentations tensorflow ou Keras sont disponibles sur ce site Gitlab:
Challenges
Les 4 cibles hardware retenues disposent d’outils de portages relativement hétérogènes et relativement peu faciles à utiliser. Afin de ne pas ajouter à ceux-ci la complexité des applications précédemment décrites, un jeu de « challenges » plus basiques a été retenu. Le but de ces challenges est d’expérimenter la chaîne de développement avec des exemples simples avant d’implémenter une application plus complexe.
Ils fonctionnent tous de la même manière : à l’aide d’un algorithme (qui diffère en fonction du réseau étudié), on génère aléatoirement deux séries de données. On associe à une des séries la catégorie 1 et à l’autre la catégorie 0 suivant deux plans définis par un modèle mathématique.
Challenge 1 : multinomial (ch1)
Le réseau ch1 possède la structure suivante :
- 2 entrées : les coordonnées X, Y
- Une couche Fully-Connected avec 8 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 1 neurones + couche d’activation Sigmoid.
Au total, il comporte 35 paramètres.
Voici les données qui lui sont associées :
Challenge 2 : Ongrid/Offgrid (ch2)
Dans les différentes études, nous n’étudierons pas le challenge 2. En effet, nous n’avons pour le moment pas réussi à faire converger l’apprentissage de ce réseau.
Voici les données qui lui sont associées :
Pour comprendre la génération de données il vaut mieux aller voir le code python associé.
Challenge 3 : Left/Right (ch3)
Le réseau ch3 possède la structure suivante :
- 2 entrées : les coordonnées X, Y.
- Une couche Fully-Connected avec 200 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 100 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 50 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 1 neurones + couche d’activation Sigmoid.
Au total, il comporte 24 852 paramètres.
Voici les données qui lui sont associées :
Challenge 4 : Concentric circles (ch4)
Le réseau ch4 possède la structure suivante :
- 2 entrées : les coordonnées X, Y.
- Une couche Fully-Connected avec 1000 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 500 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 250 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 100 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 50 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 1 neurones + couche d’activation Sigmoid.
Au total, il comporte 659 002 paramètres.
Voici les données qui lui sont associées :
Challenge 5-6-7-8 (ch5-6-7-8)
Tous ces réseaux possèdent la même architecture :
- 2 entrées : les coordonnées X, Y.
- Une couche Fully-Connected avec 500 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 250 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 100 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 50 neurones + couche d’activation ReLU.
- Une couche Fully-Connected avec 1 neurones + couche d’activation Sigmoid.
Au total, ils comportent 156 101 paramètres.
Voici les données qui leur sont associées :