Sortie du Movidius Myriad X, la nouvelle génération de processeur pour la vision par ordinateur

Movidius est une compagnie spécialisée dans la conception de processeurs de basse consommation prévus pour la vision par ordinateur et l’apprentissage profond. Elle a été rachetée fin 2016 par Intel. Leur nouveau produit, le Myriad X, annonce une performance dix fois supérieure à la génération précédente (Myriad 2) pour les réseaux neuronaux profonds, à consommation électrique égale (1 W).

Ce qui lui permet d’afficher de tels gains en performance, c’est une unité de calcul spécifique aux réseaux neuronaux, le NCE (neural compute engine), qui peut effectuer jusqu’à mille milliards d’opérations par seconde pour de l’inférence (comme Google, contrairement à Microsoft).

Ensuite, le Myriad X reprend des idées du Myriad 2, comme des processeurs vectoriels programmables : comme dans un FPGA, on peut implémenter ses propres instructions ; ici, les seize cœurs SHAVE (quatre de plus que le Myriad 2) sont forcément vectoriels, c’est-à-dire que la même opération est effectuée sur une série de nombres à la fois.

Également, quelques unités de calcul spécifiques à la vision sont disponibles (conversion de couleurs, convolutions, etc.) ; par rapport au Myriad 2, le X ajoute principalement du matériel pour l’encodage de vidéos en 4K (H.264, H.265 et M/JPEG à 60 Hz) et le calcul du flux optique. En plus, deux cœurs de calcul traditionnels (avec une architecture UltraSPARC) sont disponibles.

Au niveau connectique, un seul processeur peut recevoir jusque huit flux d’images en haute définition (700 Mpx/s) par ses seize lignes MIPI. Il peut aussi se connecter à d’autres Myriad X par PCIe 3.0. On compte aussi une interface USB 3.1 et une Ethernet 10 Gbps. Le contrôleur mémoire gère les puces LPDDR4 ; deux cartes SD peuvent être connectées. Au niveau bas niveau, on compte aussi un bus I²S et quatre bus SPI.

Movidius a été rachetée par Intel après le début de la conception du Myriad X, ce qui explique qu’il est fabriqué par TSMC (sur son processus 16 nm FFC). Le Myriad X ne remplacera pas le 2 dans un avenir proche : ce dernier est actuellement disponible pour moins de dix dollars pièce (alors que le modèle X n’est pas encore disponible en grands volumes).

Source et images : Intel Announces Movidius Myriad X VPU, Featuring ‘Neural Compute Engine’.

Voir aussi : Myriad™ X: Evolving low power VPUs for Deep Neural Networks.

Advertisements

Microsoft dévoile le projet Brainwave pour l’inférence dans les réseaux neuronaux

On ne peut pas dire que les réseaux neuronaux (de préférence profonds) ne soient pas à la mode en intelligence artificielle. Google en a même lancé des processeurs spécifiques pour leur utilisation. Microsoft suit une toute autre voie : utiliser des composants programmables pour gérer la partie inférence, plutôt que des processeurs très spécifiques. Il faut dire que, au vu des utilisations de ces réseaux neuronaux dans les technologies du groupe, il est nécessaire d’investir dans le domaine : Bing les exploite pour comprendre les images, Skype pour la traduction en temps réel, par exemple. Comme les autres grands groupes, Microsoft a aussi lancé son propre outil pour les réseaux neuronaux : Cognitive Toolkit (ex-CNTK).

Depuis 2011, Microsoft déploie, dans son infrastructure infonuagique Azure, des FPGA, c’est-à-dire des circuits logiques programmables (contrairement aux TPU de Google, programmés à l’usine). Contrairement aux processeurs habituels, on peut donc changer le jeu d’instructions de ces circuits à volonté et l’optimiser pour les tâches à effectuer — la contrepartie étant une fréquence plus faible, de l’ordre de 500 MHz pour des FPGA récents et de 700 MHz pour les TPU. Là où Google doit changer ses TPU pour gérer de nouvelles fonctionnalités, Microsoft se contente de reprogrammer ses FPGA.

Les derniers déploiements côté Azure se concentrent sur la dernière itération des FPGA d’Intel (développée avant l’absorption d’Altera) : les Stratix 10, utilisant les processus de fabrication les plus récents d’Intel (14 nm). Le gain de performance par rapport à la génération précédente devrait atteindre un facteur deux.

La configuration de Microsoft sur ces nouveaux FPGA donne effectivement de bien meilleurs résultats que sur les précédents, avec un facteur d’accélération jusque vingt, selon la précision des nombres utilisés. Pour des nombres entiers sur seize bits, par carte, on passe ainsi de 1,4 à 12 Tflops ; sur huit bits, de 2 à 31 Tflops ; sur des nombres à virgule flottante (un encodage spécifique à Microsoft et non standardisé pour le moment, ms-fp8), de 4,5 à 90 Tflops. À titre de comparaison, les derniers processeurs graphiques de NVIDIA (génération Volta) peuvent atteindre 120 Tflops pour des nombres à virgule flottante de seize ou trente-deux bits ; les TPU de Google, 180 Tflops, mais avec une précision inconnue.

Microsoft prétend que sa solution dépasse toute forme de concurrence : leur matériel n’est pas spécifique à un type de réseau neuronal (la plupart des coprocesseurs spécifiques s’orientent vers les réseaux convolutionnels), mais a une performance qui se généralise à tout type de réseau (LSTM, GRU aussi bien que CNN). Il peut être utilisé tant avec leur propre outil (Cognitive Toolkit) que par celui de Google (TensorFlow). La flexibilité matérielle permettra cependant de s’ouvrir à n’importe quel outil (contrairement aux processeurs spécialisés).

L’objectif, “dans un futur proche”, est d’ouvrir cette puissance de calcul à tous les utilisateurs d’Azure pour leurs applications de l’apprentissage profond, même si aucune date précise n’a été donnée : Microsoft prend le temps d’encore améliorer sa solution.

Source et image : Microsoft Takes FPGA-Powered Deep Learning to the Next Level.

Voir aussi : Drilling Into Microsoft’s BrainWave Soft Deep Learning Chip.

Google revient sur les forces et faiblesses de ses TPU

Google investit énormément dans la recherche et le développement de produits basés sur des réseaux neuronaux artificiels profonds (souvent sous une appellation plus générique d'”intelligence artificielle” ou d'”apprentissage automatique”). Ces derniers existent depuis belle lurette (les premières traces d’un réseau neuronal comme modèle de calcul datent de 1959), mais ne sont réellement utilisés à grande échelle que depuis les années 2010, notamment avec l’introduction de la convolution dans la structure des réseaux.

Pour utiliser ces réseaux à très grande échelle, la performance de l’inférence (c’est-à-dire l’utilisation d’un réseau en pratique, par exemple pour déterminer les objets présents dans une image) devient extrêmement importante. C’est pourquoi, dès 2013, Google se lance dans le développement des TPU (tensor processing unit), tout d’abord pour accélérer l’inférence dans ces réseaux — un investissement dans l’avenir, le besoin n’étant pas encore pressant à l’époque.

Plus en détail, cette première génération est spécifiquement prévue pour un produit entre deux matrices de taille 256×256, avec des entiers de huit bits : il s’agit plus de coprocesseurs pour certaines opérations arithmétiques très précises (mais très utiles pour le contexte d’utilisation) que d’un vrai processeur à part entière. Le TPU fonctionne à une fréquence d’à peine 700 MHz, mais elle est largement suffisante pour écraser toute concurrence, avec un pic à 92 téraopérations par seconde. Ces processeurs disposent de deux canaux DDR3 pour l’accès à la mémoire, qui limitent bien souvent la performance du système.

Cependant, un TPU est extrêmement limité dans les opérations qu’il peut effectuer : il ne dispose que de onze instructions (à comparer aux centaines d’instructions disponibles en x86). Ainsi, il est incapable d’effectuer un branchement conditionnel (if), donc des boucles. L’exécution n’est jamais réordonnée (ce qui permet d’utiliser au mieux les circuits d’un processeur plus traditionnel). Beaucoup d’éléments du processeur sont gérés par un logiciel extérieur, celui qui contrôle le TPU.

Les premiers TPU sont arrivés dans les centres informatiques de Google vers 2015, selon les résultats de comparaisons effectuées en laboratoire dès 2013. Ils ont été évalués face aux CPU (Intel, de génération Haswell) et GPU (NVIDIA K80) de l’époque, du matériel de 2014. Les gains étaient nombreux : chaque puce était plus petite et consommait moins (trente fois moins qu’un GPU, quatre-vingts fois moins qu’un CPU : 40 W par TPU), on pouvait donc en mettre nettement plus par serveur. Par contre, les CPU et GPU sont nettement mieux équilibrés : un TPU pêche par manque de bande passante pour l’accès à la mémoire, qui interdit dans bon nombre d’applications d’utiliser l’entièreté de son potentiel de calcul. Cependant, même ainsi, ils dépassent la performance de processeurs plus classiques — mais uniquement pour l’inférence, ces processeurs étant trop rudimentaires pour l’entraînement de tels réseaux neuronaux.

Cette expérience acquise a permis d’améliorer le principe des TPU, afin d’en déployer la deuxième génération cette année. Notamment, pour la mémoire, les deux canaux de mémoire DDR3 ont été remplacés par de la mémoire HBM, comme bon nombre d’accélérateurs actuels. Également, cette nouvelle édition s’oriente vers les nombres à virgule flottante plutôt qu’uniquement des entiers, ce qui permet de l’utiliser pour l’entraînement plutôt qu’uniquement l’inférence. Google n’a pas donné énormément de détails au sujet de la nouvelle itération, notamment pour la comparer au matériel sorti cette année (on pense surtout aux nouveaux GPU NVIDIA, qui incluent un module de calcul spécifiquement prévu pour l’apprentissage profond), ni sur ses pistes pour la troisième génération.

Source et images : Hot Chips: Google TPU Performance Analysis.

Voir aussi : une introduction détaillée au TPU, une analyse poussée des serveurs à base de TPU2.

IBM détaille les améliorations de son z14

Les ordinateurs centraux (mainframes) sont loin d’être morts. Notamment, ils sont souvent utilisés par certaines grandes entreprises pour des transactions à l’échelle mondiale, comme les systèmes des cartes de crédit ou de réservation dans l’aviation. S’ils représentaient la majorité des ordinateurs dans les années 1960, ils sont maintenant relégués à quelques applications de niche et sont de plus en plus optimisés pour ces traitements spécifiques.

C’est dans ce contexte qu’IBM a annoncé, en juillet, sa nouvelle génération de processeurs et machines prévus pour cette utilisation, les z14. Ces derniers ne sont utilisables que dans ce contexte, dans des machines entièrement fabriquées et vendues par IBM. De manière générale, cette nouvelle génération s’oriente sur l’amélioration de la performance, de manière générale, mais aussi pour les applications COBOL (très présentes dans ce type d’environnement), la cryptographie et la compression.

Plus en détail, un tiroir utilise deux types de processeurs différents : les CP (central processor), qui contiennent les cœurs de calcul et les caches jusqu’au troisième niveau, puis le SC, qui contient le quatrième niveau de cache (six cent septante deux mégaoctets !) et l’interconnexion avec les autres tiroirs. Chaque CP contient un total de dix cœurs de calcul (avec SMT), fonctionnant à une fréquence de plus de cinq gigahertz. Chaque tiroir peut contenir jusque huit téraoctets de mémoire. Ces deux types de puces sont complexes à fabriquer. Elles utilisent un processus à 14 nm, mais sur dix-sept couches. Un CP compte sept milliards de transistors, contre dix pour un SC.

Au niveau des améliorations matérielle, IBM a agrandi les caches de chaque CP : chaque cœur aura ainsi un cache L2 pour les instructions de deux mégaoctets, le double pour les données ; le cache L3 est partagé à l’échelle du CP et a une capacité de cent vingt-huit mégaoctets. L’implémentation de ces caches a aussi été profondément retravaillée, principalement pour réduire la latence d’accès et l’espace occupé sur la puce : pour accéder au cache L2, il ne faut plus que huit cycles, c’est-à-dire une nanoseconde et demi.

L’architecture du processeur a également été retravaillée en profondeur, notamment pour offrir un ramasse-miette sans pause à la machine virtuelle Java. Le pipeline a été approfondi, avec une prédiction de branchement asynchrone. COBOL a tendance à effectuer un grand nombre d’opérations arithmétiques en BCD (des nombres décimaux écrits en binaire, chaque chiffre décimal correspondant à quatre bits), ces opérations disposent maintenant d’un jeu d’instructions spécifique.

Côté cryptographique, un accélérateur pour le chiffrement (AES) et le hachage (SHA-3) est intégré, sous le nom de CPCAF. Par rapport au z13, le chiffrement va quatre fois plus vite ; ce rapport monte à six pour SHA-3. Plus précisément, en AES, chaque cœur peut chiffrer des données à un débit de 13,2 Go/s. Un mécanisme spécifique est prévu pour protéger les clés de chiffrement, qui ne seront pas vues par le processeur principal, mais uniquement par le coprocesseur cryptographique : un attaquant ne peut donc pas y accéder facilement.

De même, un accélérateur de compression est intégré, il se focalise sur les algorithmes à base de dictionnaire, plus particulièrement sur des données en quantité réduite (comme des enregistrements dans une base de données). DB2 sera prochainement mis à jour pour en profiter.

Source et images : Hot Chips: IBM’s Next Generation z14 CPU Mainframe.

Voir aussi : IBM z14 Technical Introduction.

PCI Express 5.0 déjà annoncé pour 2019

À peine quelques mois après l’annonce de la fin des travaux sur PCI Express 4.0, voici donc les premières communications sur la version 5.0 du protocole et du bus… dont la version finale est attendue pour 2019 (alors qu’on attend l’arrivée sur le marché de PCIe 4.0 pour la fin 2017) ! Ainsi, la version 4.0 aura eu énormément de retard (deux ans) et ne vivra pas très longtemps. Elle se montrera cependant très utile à de nombreuses applications industrielles (PCI SIG, le groupe de normalisation derrière PCIe, compte pas moins de sept cent cinquante membres), pour lesquelles PCIe 3.0 est une limite — et PCIe 4.0 le sera déjà dans certains cas.

Le retard de PCIe 3.0 peut s’expliquer par une certaine stagnation des besoins : cette version était très adaptée aux besoins de 2010 et des années qui ont suivi. Ce n’est que depuis 2015 que l’on commence à vraiment en sentir les limites : la bande passante disponible n’est plus suffisante. En effet, l’apprentissage profond nécessite de faire transiter de grandes quantités de données vers le processeur graphique ; les SSD sont de plus en plus connectés au processeur par le bus PCIe (grâce au protocole NVMe) au lieu de SATA, ils consomment donc des lignes supplémentaires ; aussi, le réseau est de plus en plus sollicité avec des applications. De nouvelles applications se développent, comme les cartes graphiques externes, qui seront également connectées en PCIe.

PCIe 4.0 est très proche de l’utilisation réelle. Des contrôleurs existent déjà, des cartes d’extension sont d’ores et déjà prévues pour la nouvelle norme : une mise à jour logicielle devrait suffire (à moins d’un changement important de la couche physique qui interviendrait d’ici à la publication définitive de la norme PCIe 4.0).

La nouvelle version doublera à nouveau les débits, pour atteindre les quatre gigaoctets par seconde et par ligne. Ainsi, pour une carte réseau Ethernet à quatre cents gigabits par seconde, les seize lignes pourront fournir un débit maximum suffisant qui ne bridera pas la carte réseau.

Les produits compatibles ne tarderont pas à venir sur le marché : PCIe 4.0 devrait utiliser une fréquence de bus de trente-deux gigahertz, bon nombre de fabricants peuvent déjà fonctionner à vingt-huit gigahertz. La révision 0.3 de la norme est maintenant disponible, la 0.5 devrait faire ses premiers pas à la fin de l’année.

Source : Hot Chips 2017: We’ll See PCIe 4.0 This Year, PCIe 5.0 In 2019.

Nimbus dévoile son ExaDrive, un SSD de 50 To

Le dernier gros avantage des disques durs mécaniques par rapport au disques électroniques (SSD) était la densité : sur quelques centimètres cubes, on peut stocker des téraoctets d’information (de l’ordre de 0,2 téraoctet par centimètre carré, en ignorant l’épaisseur, c’est-à-dire un téraoctet par pouce carré), alors que les SSD ne peuvent atteindre ces densités qu’en laboratoire depuis 2016.

Début de ce mois, cependant, Nimbus a annoncé son ExaDrive : un SSD de vingt-cinq ou cinquante téraoctets dans le volume d’un disque dur traditionnel, d’une diagonale de trois pouces et demi (la concurrence se focalise sur un format légèrement plus petit, de deux pouces et demi). En d’autres termes, ces SSD atteignent une densité de 0,35 téraoctet par centimètre carré, tandis que les disques durs au format trois pouces et demi n’atteignent qu’une quinzaine de téraoctets. Les disques durs n’atteignent qu’une quinzaine de téraoctets sur la même surface. La consommation énergétique de ces SSD est annoncée comme équivalente à des disques durs de dix téraoctets.

 

Architecturalement, la différence avec les SSD classiques est la présence de plusieurs contrôleurs. Cette conception est relativement monolithique, mais s’adapte relativement bien à des SSD de quelques téraoctets. Par contre, avec une quantité stockée bien plus grande, la gestion de l’espace devient délicate. Pour des débits importants, l’application des codes correcteurs d’erreur prend un temps non négligeable. Ainsi, Nimbus est parti sur l’idée de plusieurs contrôleurs : certains s’occupent des codes correcteurs, d’autres du niveau d’usure de la mémoire flash.

Au niveau de la fiabilité, ces disques sont vendus comme supérieurs aux disques magnétiques classiques. Nimbus offre d’ailleurs une garantie de dix ans (contre cinq habituellement pour les disques durs). Les vitesses ne sont pas exceptionnelles : de l’ordre de cinq cents mégaoctets par seconde en lecture séquentielle, trois cent cinquante en écriture séquentielle.

À l’horizon 2020, Nimbus s’attend à des SSD de cinq cents téraoctets, avec son architecture multicontrôleur. Ainsi, un seul serveur pourrait stocker jusqu’à six cents pétaoctets de données. Ces performances pourraient intéresser des applications infonuagiques, d’imagerie digitale, de calcul de haute performance ou encore d’intelligence artificielle.

Sources : Flash memory’s density surpasses hard drives for first time, Nimbus Data Unveils 50TB Flash Drive, on Path to 500TB.

Intel Xeon Phi Knights Mill : un processeur prévu pour l’apprentissage profond

Les premières annonces datent déjà, mais voilà seulement qu’Intel lâche les premiers détails techniques sur la déclinaison de ses processeurs Xeon Phi pour l’apprentissage profond, sous le nom de code Knights Mill. Il ne s’agit pas d’une nouvelle génération, mais bien d’une variation des cœurs existants (Knights Landing), avec l’intégration d’instructions supplémentaires spécifiques.

En quelques mots, ce coprocesseur devrait être disponible pendant le quatrième trimestre de cette année. La performance devrait être améliorée d’un facteur quatre par rapport à Knights Landing dans le cadre très particulier de l’apprentissage profond. Intel résume ces améliorations par l’exploitation d’une “nouvelle” forme de parallélisme. Trois sources de parallélisme sont exploitées depuis des années : plusieurs fils d’exécution par cœur (TLP, avec quatre fils par cœur), plusieurs instructions en parallèle dans un même fil (ILP), une instruction travaillant sur plusieurs valeurs (DLP, avec les instructions AVX-512).

Avec Knights Mill, Intel ajoute un parallélisme au niveau de chaque pipeline d’exécution (PLP), avec des instructions qui effectuent quatre opérations de type FMA (fused multiply and add) consécutives en même temps. Contrairement au jeu d’instructions AVX, qui travaille sur des données différentes (chaque opération est effectuée indépendamment des autres), ces instructions QuadFMA effectuent leur somme sur le résultat de l’instruction FMA précédente.

Ce genre de construction est souvent évitée sur les processeurs “modernes”, car elle ajoute une latence non négligeable : au vu de la fréquence des processeurs, le temps de transfert de l’information entre deux transistors ne peut pas être ignoré ! Cette lenteur certaine (une instruction QuadFMA prend trois cycles par opération FMA effectuée, c’est-à-dire un total de douze cycles) est cachée par un degré de parallélisme entre instructions suffisamment grand.

L’utilité apparaît assez rapidement : ces instructions FMA correspondent aux opérations de produit matriciel, extrêmement utilisées notamment pour l’apprentissage profond.

Une autre nouveauté de ces cœurs est la précision variable avec certaines instructions : les entrées et les sorties n’ont pas toujours la même précision. Ainsi, il est possible de mélanger des entiers sur seize bits et d’obtenir une somme sur trente-deux bits, par exemple. Selon Intel, ce stratagème permet d’obtenir le meilleur des deux mondes : les opérations avec une précision moindre s’effectuent plus rapidement, mais la sortie avec une plus grande précision facilite la convergence.

Ces opérations ne sont disponibles que sur des entiers. En effet, ils fournissent un niveau de précision similaire aux nombres à virgule flottante, mais sans les complexités d’implémentation (surtout la norme IEEE 754) : ces derniers n’ont pas vraiment d’avantages par rapport aux entiers dans le contexte de l’apprentissage profond.

Un troisième élément de Knights Mill est la partie logicielle, prévue pour exploiter les nouvelles possibilités du matériel. La MKL aura droit à ses mises à jour pour exploiter au mieux ces nouveaux processeurs. De plus, Intel met aussi à disposition MKL-DNN, une extension à la MKL avec une API similaire (mais incompatible) ; la différence est que MKL-DNN est disponible sous une licence libre.

Il est ainsi intéressant de voir qu’Intel poursuit la même piste que NVIDIA pour encore accélérer l’apprentissage profond : ajouter des composants extrêmement spécifiques qui effectuent quelques opérations sur des opérandes très précises (avec une faible précision) avec une très haute vitesse (et une consommation énergétique en baisse).

Source et images : Hot Chips: Intel Knights Mill Live Blog.