VT2018 NPU

=Auteur=
 * Architectures de processeurs pour le Deep Learning (NPU) : Démo de l'Intel Movidius


 * Enseignants : Georges-Pierre Bonneau, Didier Donsez


 * Rédigé par : Léo Valette


 * Contexte : Veille Technologique - Informatiques 5ème année - Polytech Grenoble


 * Date de dernière modification : 06/01/2019


 * Contact : leo.valette@etu.univ-grenoble-alpes.fr

=Résumé= NPU veut dire Neural Processing Unit, c’est une catégorie de microprocesseurs créée pour le machine learning. Dans le contexte technologique actuel, où tout le monde oriente ses recherches vers le machine learning, il est important d’avoir quelque chose de plus performant qu’un simple CPU pour utiliser les réseaux de neurones.

=Abstract= NPU stands for Neural Processing Unit, this is a class of microprocessors designed for machine learning. In our technological context, where everyone looks for machine learning, something more efficient than a CPU is a must have in order to use neural networks.

=Introduction= Les systèmes informatiques ont souvent complété le CPU par des accélérateurs spéciaux pour des tâches spécialisées, notamment des cartes vidéo (GPU) pour les graphiques. Au fur et à mesure que l'apprentissage automatique et l'intelligence artificielle ont pris de l'ampleur, des unités matérielles spécialisées ont été développées ou adaptées à partir de produits précédents pour accélérer ces tâches, ce sont ce que l’on appelle NPU. Mais NPU est un produit spécifique et chaque entreprise a donc sa propre appellation.

Exemples de produits

 * Google TPU : créé par Google pour son framework Tensorflow


 * Movidius Myriad 2 est un accélérateur VLIW AI à multi-cœurs, complété par des unités de fonctions vidéo fixes.


 * Nvidia Tesla est basé sur le GPU, de même que Radeon Instinct mais ils sont orientés vers l’accélération de l’IA


 * "Neural Processing Unit" (NPU) est un accélérateur de réseau neuronal au sein du HiSilicon Kirin 970

=Intel Movidius=

Description
Le Movidius NCSDK permet le prototypage rapide de réseaux neuronaux profonds (DNN) sur les dispositifs de calcul neuronal compatibles.

Fonctionnement
Le workflow est le suivant : un modèle est entraîné sur une machine en amont. Le modèle est ensuite chargé sur le dispositif de calcul neuronal connecté à la machine hôte. On peut alors compiler, profiler ou modifier notre réseau de neurones depuis la machine hôte via les outils du NCDSK. Le modèle est ensuite compilé sur le dispositif de calcul neuronal ce qui permet par la suite de prototyper une application sur la machine hôte qui accède au dispositif de calcul neuronal via l’Intel Movidius Neural Compute API.



Description
L’idée de ce produit est de permettre à un programme de se reposer sur la puce Myriad 2 pour analyser ses données plutôt que de se tourner vers un système en ligne. cela offre l’énorme avantage de l’autonomie de l’engin ainsi créé. Avec 1 watt de consommation et aucun besoin de se connecter via Wifi ou autre, la solution est moins énergivore et peut donc travailler hors réseau et plus longtemps.

Il s’utilise exactement comme une clef USB (2.0 / 3.0) : il suffit de le brancher directement à un port USB de votre machine

Architecture et utilisation
Le NCS utilise le VPU (Vision Processing Unit) Intel Movidius Myriad 2 qui inclut 4GB de RAM et un tableau de 12 vecteurs appelés SHAVE processeurs. Ils servent à accélérer les réseaux de neurones en les parallélisant.



A la première connection à la machine, le VPU s’initialise. L’API du NCS permet la communication avec la machine hôte. Le micrologiciel du NCDSK est alors chargé sur le NCS. Le NCS redémarre alors et est prêt à l’emploi.



Performances et caractéristiques

 * Prix : environ 80$


 * Performances de calcul : 100 GigaFlops


 * Environnements : Fonctionne avec ARM, x86 ou encore avec une Raspberry Pi


 * Possibilité de multiplier les NCS sur un même système pour augmenter la puissance de calcul

=Démonstration de l’Intel Movidius avec une Raspberry PI= Voir []

=Sources=