NVIDIA interdit l’utilisation de ses cartes graphiques GeForce dans les centres informatiques

Dans bon nombre de domaines, les cartes graphiques sont devenues d’extrêmement précieuses alliées pour effectuer les calculs lourds : le rendu graphique (comme les films d’animation), bien évidemment, mais aussi les simulations physiques, le cassage de chiffrements, les cryptomonnaies, ainsi que l’apprentissage profond. Pour tous ces usages loin de l’utilité première des cartes graphiques (afficher des images à l’écran et offrir une puissance de calcul adaptée pour les calculer), NVIDIA propose plusieurs gammes de produits, les Tesla et les Quadro.

Cependant, bon nombre de grands consommateurs de ces cartes graphiques préfèrent s’orienter vers les modèles grand public GeForce, nettement moins chers : par exemple, Ultra Render ou Redstation. Ils possèdent certes certaines fonctionnalités en moins (comme le calcul sur des nombres à virgule flottante sur soixante-quatre bits), ainsi que du support, mais cela ne les rend pas inutiles pour autant.

Évidemment, la situation ne plaît guère à NVIDIA, car ce genre de comportement limite ses marges. Depuis Noël, les conditions de téléchargement des pilotes GeForce ont été mises à jour pour interdire cette utilisation :

No Datacenter Deployment. The SOFTWARE is not licensed for datacenter deployment, except that blockchain processing in a datacenter is permitted.

On peut remarquer l’exception faite des cryptomonnaies, étant donné que, pour cette application précise, les cartes GeForce ont un avantage non négligeable en termes de performance par coût, à un point tel que le minage a été une des raisons des pénuries de GPU : ces clients sont extrêmement sensibles à la question du coût et se détourneraient immédiatement de produits non concurrentiels.

La formulation de NVIDIA est cependant très vague : qu’est-ce qu’un déploiement en centre informatique ? Quelques machines utilisées dans un laboratoire de recherche pourraient-elles être considérées comme telles ? Ou bien cette clause n’est-elle prévue que pour limiter les trop grosses commandes de cartes ?

Source : Nvidia untersagt Geforces in Rechenzentren.

Advertisements

Les premiers serveurs IBM avec processeur POWER9

Les premières annonces, en 2016, donnaient déjà l’eau à la bouche : les nouveaux processeurs d’IBM, c’est-à-dire la génération POWER9, se mettent à concurrencer sérieusement les Intel Xeon haut de gamme pour toute une série de segments. En quelques mots, un processeur POWER9 embarque de douze à vingt-quatre cœurs (comme la nouvelle génération de Xeon), chacun pouvant exécuter quatre fils d’exécution (contre deux chez Intel). Au niveau de la bande passante en mémoire, les POWER9 disposent de huit canaux DDR4 pour un débit total de cent vingt gigaoctets par seconde, bien au-delà de la concurrence.

Dernière caractéristique intéressante, la variété de bus pour connecter des extensions : PCI Express 4, CAPI 2.0, OpenCAPI (les deux derniers étant spécifiques à la plateforme POWER) et NVLink 2.0 (uniquement pour les GPU NVIDIA). Ce dernier permet une bande passante de cent cinquante gigaoctets par seconde, mais aussi d’accéder directement à la mémoire centrale : l’impact en termes de performance pourrait être énorme. Côté PCIe 4, les extensions les plus utiles seront probablement des cartes réseau InfiniBand à deux cents gigabits par seconde (Mellanox ConnectX-6) et des FPGA de Xilinx (Ultrascale). Peu d’informations circulent sur les utilisations potentielle de CAPI et OpenCAPI, mais bon nombre d’entreprises font partie du consortium OpenCAPI (Mellanox, Google, AMD, NVIDIA, Xilinx, Western Digital ou encore Micron), ce qui laisse entendre un intérêt non négligeable.

IBM vient de dévoiler ses premiers serveurs utilisant ces puces POWER9, la gamme AC922 (deux processeurs par machine). Le marketing la destine principalement pour l'”intelligence artificielle” dans l’entreprise (un seul serveur pouvant héberger jusqu’à six cartes graphiques). D’ailleurs, IBM travaille sur des bibliothèques spécialement optimisées pour ses machines POWER9 avec processeur graphique NVIDIA connecté par NVLink, sous le nom de PowerAI : notamment, TensorFlow, Caffe et Chainer sont intégrés. Néanmoins, ces serveurs s’en sortiront pour toutes les applications qui doivent traiter de grosses quantités de données ou effectuer de très lourds calculs. IBM cite Kinetica comme application qui bénéficierait largement de cette plateforme : il s’agit d’une base de données accélérée par GPU.

Le premier déploiement de grande ampleur sera probablement Summit, un supercalculateur commandé par le Département américain de l’Énergie de deux cents pétaflops. Sa construction devrait être achevée l’année prochaine. Pour la génération POWER8, IBM prévoyait des serveurs spécifiques pour les superordinateurs, ce qui ne semble plus être le cas : de fait, les besoins en intelligence artificielle se rapprochent de plus en plus de l’évolution du marché des superordinateurs.

Source : IBM Launches Power9 Servers, Initial Offering Takes Aim at Enterprise AI.

Sortie de CUDA 9.1

NVIDIA veut rester à la pointe de la performance pour tout ce qui concerne l’apprentissage profond et investit donc massivement dans le développement de CUDA, sa solution pour exécuter du code sur ses processeurs graphiques. Un peu plus de six mois après la version 9.0, voici que CUDA 9.1 est disponible.

Cette nouvelle mouture se concentre sur des améliorations de performance, notamment au niveau des pilotes. Ainsi, lancer un noyau peut être jusque douze fois plus rapide que précédemment. Toujours au niveau du cœur de CUDA, le compilateur est maintenant plus rapide et est compatible avec de nouvelles versions d’autres compilateurs : XLC 13.1.6 pour AIX, Clang 4 sur Linux et Intel C++ 17.0 (pour ce dernier, toutes les fonctionnalités C++14 sont maintenant disponibles). Une petite restriction a été apportée au niveau du langage : les opérateurs ne peuvent plus être marqués __global__ ; en réalité, précédemment, cette annotation était tolérée dans le langage, mais ne fonctionnait pas à tous les coups et pouvait occasionner des plantages à l’exécution.

Les bibliothèques standard CUDA ont vu plus de modifications. Pour les calculs de FFT, cuFFT est nettement plus efficace sur plusieurs GPU grâce à une série d’heuristiques qui diminuent la consommation de mémoire. En algèbre linéaire, cuBLAS dispose de deux nouvelles fonctions de multiplication entre matrices en spécifiant les précisions données et voulues : ainsi, on peut exploiter au mieux les cœurs tensoriels des nouveaux GPU Volta ; ces deux fonctions seront surtout utiles pour les applications de traduction et de modélisation de séquences avec des réseaux neuronaux profonds. Les NPP (NVIDIA Performance Primitive) reçoivent plus de nouvelles fonctionnalités, de nouvelles routines d’augmentation des images. Celles-ci incluent un bon nombre d’opérations morphologiques, mais aussi d’étiquetage de composantes connectées.

Télécharger CUDA 9.1.

Sources : What’s New in CUDA, notes de version.

Les Intel Xeon Phi tirent leur révérence

Ils sentaient déjà le sapin depuis août : après avoir arrêté la production de cartes d’extension Xeon Phi, Intel annule la génération Knights Hill, pourtant déjà annoncée en grande pompe. Cela fait suite à une nouvelle stratégie pour atteindre l’échelle de l’exaflops pour les superordinateurs. Les Xeon Phi Knights Hill seront remplacés par “une nouvelle plateforme, une nouvelle microarchitecture spécifiquement prévues pour l’exaflops”.

Cette annonce suit de peu le retard du projet Aurora, un superordinateur du Département de l’Énergie américain qui devait montrer la voie vers l’exaflops à la fin 2018, à grands renforts de Xeon Phi. En octobre, le projet a été retardé à 2021 sans détail autre que la puissance cible passe de cent quatre-vingts pétaflops à mille pétaflops (c’est-à-dire un exaflops). Les explications vont bon train. Peut-être Intel aurait du mal à développer la troisième génération des Xeon Phi, surtout dans l’optique d’atteindre l’exaflops. Peut-être serait-ce la concurrence d’AMD et de ses EPYC. Peut-être le processus de fabrication 10 nm (pour lequel devait être prévus les Knights Hill) a-t-il encore du retard, avec peut-être une intervention du gouvernement américain face à cette annonce de retard. Officiellement, il s’agit de “changements dans la dynamique du marché”, afin d’atteindre dès que possible l’exaflops.

Ceux qui envisageaient de passer aux Xeon Phi sont invités à plutôt regarder du côté des Xeon plus traditionnels. Ils ne correspondent pas du tout au même besoin, toutefois : les Xeon Phi avaient cette particularité d’offrir un très haut niveau de parallélisme (même si les opérations sur chaque cœur sont plutôt lentes). Certains pourraient toutefois lorgner du côté des puces Xeon hybrides Nervana,

La nouvelle plateforme arrivera pour 2021, exactement pour Aurora. Elle inclura probablement des éléments de Nervana pour l’apprentissage profond, puisqu’elle sera prévue pour les applications des mégadonnées et de l’intelligence artificielle.

Source : Intel Dumps Knights Hill, Future of Xeon Phi Product Line Uncertain.

Sortie d’Intel Parallel Studio XE 2018

Intel est surtout connu pour ses processeurs, mais aussi pour ses outils de développement, notamment pour le calcul de haute performance avec sa suite Parallel Studio XE, dont la version 2018 vient de sortir. Ces logiciels visent le développement d’applications hautement parallèles, afin d’exploiter tous les cœurs des processeurs modernes à leur plus haut potentiel, mais aussi l’entièreté des nœuds de calcul d’un superordinateur. La suite contient notamment des compilateurs C++ et Fortran, des bibliothèques de haute performance (MKL, IPP, DAAL, etc.), ainsi que des outils d’analyse de performance et de débogage.

Les points principaux de cette nouvelle version concernent l’utilisation des instructions AVX-512, disponibles uniquement sur certaines gammes de processeurs (certains Xeon de dernière génération et les Xeon Phi). Les outils d’analyse sont plus poussés, comme chaque génération. Les compilateurs respectent les normes plus récentes de manière complète : C++14 au complet (C++17 en partie, officiellement finalisée depuis peu), Fortran 2008 au complet (Fortran 2015 en partie, toujours en cours de développement), OpenMP 5.0 en partie.

Langages

Le compilateur C++ se met au goût du jour avec la norme C++14. Parmi les fonctionnalités de C++17 déjà implémentée, on compte l’implémentation parallèle de la STL — ce qui se comprend, vu que l’objectif est d’avoir un code aussi parallèle que possible. L’idée est d’exécuter les différents algorithmes de la STL en parallèle, en changeant un seul paramètre. Bien évidemment, l’implémentation repose sur TBB, la bibliothèque d’Intel pour le calcul multifil. Malgré leur statut d’avant-gardistes en ce qui concerne les évolutions de C++, ni GCC ni Clang ne disposent de cette fonctionnalité. D’autres apports de C++17 sont aussi implémentés. À un niveau proche, la norme C11 est également gérée.

L’optimisation exploitant les profils (PGO) pointe également le bout de son nez. Elle exploite une trace d’exécution récupérée par VTune Amplifier (en utilisant les compteurs matériels des processeurs) pour décider les parties du code qui bénéficieront le plus des efforts d’optimisation, mais aussi pour déterminer certaines statistiques sur l’exécution du code (comme les branchements) pour certaines décisions d’optimisation.

Pour OpenMP, de nouvelles clauses sont implémentées, en suivant les développements de la version 5.0 de la norme, plus spécifiquement pour la gestion des tâches (TASK_REDUCTION, REDUCTION, IN_REDUCTION). Plus de constructions d’OpenMP 4 sont disponibles.

Bibliothèques de calcul

La MKL (math kernel library) s’oriente historiquement vers les opérations souvent requises par le calcul scientifique : algèbre linéaire, notamment creuse, transformée de Fourier, etc. Cette nouvelle version apporte un lot de fonctionnalités pour les réseaux neuronaux profonds (un sujet relativement à la mode), plus spécifiquement les opérations de convolution (pour les réseaux convolutionnels) et de produit scalaire. Les opérations BLAS entre entiers sont aussi développées, notamment de par leur utilité dans l’apprentissage profond (les nombres à virgule flottante sont remplacés par des entiers pour faciliter certains calculs).

Les IPP (integrated performance primitives) sont à l’opposé de la MKL : il s’agit d’algorithmes de bien plus haut niveau (compression, cryptographie, traitement d’images, etc.). Ainsi, la nouvelle version apporte une implémentation de l’algorithme de compression LZ4. L’API de GraphicsMagick a été répliquée pour de nouvelles fonctions pour redimensionner et flouter les images. Côté cryptographique, de nouvelles fonctions sont disponibles pour les courbes elliptiques.

La DAAL (data analytics acceleration library) est la dernière arrivée du lot. Elle est prévue pour l’exploitation des données, notamment l’apprentissage automatique. La version 2018 s’ouvre aux arbres de décision, ainsi qu’aux forêts, tant en classification que régression. Les couches disponibles pour les réseaux neuronaux s’enrichissent d’une addition membre à membre. Une série de nouveaux exemples montre l’intégration avec Spark MLib. La distribution Python d’Intel utilise notamment la DAAL pour accélérer une série d’opérations de scikit-learn.

De manière générale, les instructions AVX-512 sont utilisées très régulièrement. Aussi, les processeurs trop anciens ne sont plus gérés (comme les Pentium III, d’avant l’an 2000) — étonnement, la première génération de Xeon Phi n’est plus au goût du jour, entièrement remplacée par la seconde.

Outils d’analyse et de débogage

Advisor a été le plus retravaillé de tous les outils de la suite Intel. Il montre une série d’optimisations possibles du code, notamment au niveau de la vectorisation. La simulation des caches est arrivée en préversion. En effet, une mauvaise utilisation des caches d’un processeur peut faire s’écrouler la performance d’une application : le processeur doit alors chercher régulièrement des données en mémoire, plutôt que de réutiliser son cache. Quand cette fonction est activée, elle montre, dans les rapports, pour chaque boucle, le nombre d’opérations effectuées en mémoire et celles qui ne peuvent se faire depuis le cache.

Une nouveauté arrivée entre les versions 2017 et 2018 est l’analyse “sous les combles”. Il s’agit d’une visualisation de la performance d’une application selon les limitations matérielles, notamment la bande passante disponible vers la mémoire. Ce graphique présente la performance (en opérations effectuées par seconde) par rapport à l’intensité arithmétique (le nombre d’opérations effectuées par octet de données). Selon le niveau de cache utilisé, on peut déterminer un maximum d’opérations que l’on peut effectuer par seconde, étant donné la bande passante disponible pour se niveau de cache : si l’application est très proche de la limite pour le premier niveau de cache (le plus rapide), c’est qu’elle utilise le processeur au mieux. L’idée est donc de voir facilement où se situent les points faibles.

Sources : notes de version de la suite, du compilateur C++, du compilateur Fortran, de la MKL, des IPP, de la DAAL, de la distribution Python, d’Advisor ; Intel Advisor Roofline.

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.