Benchmarks

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:

Think 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 :