Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Intel dévoile les détails de son Nervana NNP-I
Son processeur pour l'inférence dans les réseaux neuronaux

Le , par dourouc05

25PARTAGES

4  0 
Nervana, à l’origine, est une société qui développe des puces pour l’apprentissage profond. Son rachat par Intel n’a pas signifié la fin de ses projets, loin de là : en janvier dernier, une puce prévue pour de l’inférence à très haut débit (pour des serveurs, par exemple) a été annoncée. Le NNP-I 1000 a pour nom de code Spring Hill et Intel a récemment levé le rideau sur un certain nombre de détails techniques. Notamment, cette puce sera disponible sur des cartes au format M.2 (le même que celui utilité pour les SSD), c’est-à-dire en tant que coprocesseur chargé d’effectuer de l’inférence, mais il n’est pas impossible que d’autres formats soient disponibles (par exemple, des cartes PCIe plus habituelles, probablement avec plus de mémoire).


À la base, un NNP-I est un processeur Core/Xeon de génération Ice Lake, gravé en 10 nm, parmi les tout derniers sortis. À la différence d’un tel processeur classique, il n’y a pas huit cœurs de calcul généraux, seulement deux, dénommés “cœurs d’intelligence artificielle”. Ils disposent des instructions les plus récentes pour gérer les opérations des réseaux neuronaux (avec les jeux d’instructions AVX512 et VNNI). Deux contrôleurs mémoire LPDDR4 sont inclus : une carte M.2 embarque seize gigaoctets de mémoire, le processeur peut monter à trente-deux gigaoctets).

Un processeur comporte également douze accélérateurs d’inférence (ICE), six par cœur. Tous les cœurs (les douze ICE et les deux IA) partagent un même cache de dernier niveau (de niveau 3 pour les cœurs IA, de niveau 1 pour les ICE), cohérent pour tous les cœurs (c’est-à-dire que chaque cœur voit toujours la dernière valeur stockée en mémoire, il n’y a aucun retard, ce qui nécessite des opérations de synchronisation pour chaque opération de lecture et d’écriture). Ce cache sert principalement à la communication entre les différents cœurs.

Chaque processeur peut consommer de dix à cinquante watts, selon l’application. Branché sur un port M.2, il sera limité à quinze watts (l’interface ne peut pas délivrer une puissance plus élevée), mais le processeur pourra monter plus haut en consommation… et donc en performance (entre quarante-huit et nonante-deux téraopérations par seconde en INT8).

Grâce à cette organisation, un coprocesseur NNP-I peut fonctionner assez indépendamment du processeur central : grâce à l’accès au bus PCIe (version 3.0, x4 ou x8), il peut directement lire les données en mémoire centrale, sans attendre (DMA). Intel fournira une pile logicielle pour gérer l’exécution des travaux d’inférence de manière asynchrone depuis le processeur principal (sans générer de trafic énorme sur le bus PCIe).


Chaque cœur ICE dispose d’une série de registres pour un total de quatre mégaoctets (SRAM) et est organisé sous la forme d’une grille. Celle-ci peut effectuer des opérations sur des nombres à précision réduite (FP16, INT8, INT4, INT2, INT1) ; les opérations habituelles des réseaux neuronaux sont implémentées en fonction fixe, notamment les MAC (multiply-accumulate), à raison de quatre mille opérations par cycles (INT8), des opérations non linéaires, et le pooling.


Au cas où les fonctions fixes ne sont pas suffisantes, chaque cœur dispose aussi d’un DSP, un Tensilica V6 qui peut traiter cinq cent douze bits d’un coup. La grille de calcul et le DSP peuvent communiquer par une mémoire de deux cent cinquante-six kilooctets.


En l’état, cette puce peut effectuer jusqu’à trois mille six cents inférences par seconde en consommant à peine dix watts sur un réseau convolutif de taille plus que raisonnable (ResNet 50), c’est-à-dire trois cent soixante inférences par seconde et par watt ou encore 4,8 téraopérations par seconde et par watt. En passant de deux à douze cœurs ICE, le nombre d’inférences est multiplié par 5,85 (l’accélération maximale étant d’un facteur 6). Ces chiffres de consommation ne concernent que le processeur, pas toute la carte (notamment, pas la mémoire).

Ces puces sont déjà en cours d’échantillonnage, la production en volume est attendue pour la fin de cette année. Facebook les utilise déjà, en tant que partenaire “de définition”. Le processeur NNP-I 1000 ne devrait pas être disponible à la vente à l’unité, mais serait réservé aux fournisseurs de services infonuagiques. Deux nouvelles générations sont d’ores et déjà en cours de développement.

Au niveau logiciel, Intel fournira un compilateur, Glo, qui adaptera un réseau neuronal pour utiliser au mieux les possibilités de la puce. Les outils traditionnels, comme PyTorch et TensorFlow, seront aussi gérés, avec extrêmement peu d’adaptations du code.

Sources et images : Hot Chips 31 Live Blogs: Intel 10nm Spring Hill NNP-I Inference Chip, 10nm Ice Lake CPU Meets M.2: The ‘Spring Hill’ Nervana NNP-I Deep Dive.

Une erreur dans cette actualité ? Signalez-le nous !