Serveurs : AMD présente ses accélérateurs MI300

Conçus pour concurrencer les H100 et GH200 de Nvidia, les MI300X et MI300A sont respectivement une carte GPU sur socle et une puce hybride comprenant un processeur plus un GPU.

AMD a officiellement annoncé sa nouvelle famille de super puces Instinct MI300, que HPE dévoilait fin novembre en avant-première dans sa lame de supercalcul Cray EX255a. Elles sont censées constituer une réponse aux puces que NVIDIA fournit aux clusters de supercalcul et de Machine learning.

HPE avait montré en avant-première la puce « APU » – pour Accelerated Processing Unit – MI300A, qui réunit à la fois des cœurs de processeurs Zen 4, des cœurs de GPU CDNA 3 et de la mémoire HBM 3. AMD lance maintenant une version MI300X qui, elle, ne contient que des cœurs de GPU CDNA 3 et de la mémoire HBM3.

L’APU MI300A doit servir à construire des lames de calcul avec un design plus dense que précédemment. La nouvelle Cray EX255a de HPE offrira ainsi 192 cœurs de processeurs Zen 4 et 1 824 cœurs de GPU CDNA 3 répartis sur huit sockets. Tandis que l’actuelle lame HPE Cray EX235a – qui est, entre autres, la brique de base de Frontier, le supercalculateur le plus puissant du monde – offre 128 cœurs de processeur Zen 3 et 1 760 cœurs de GPU CNDA 2, répartis sur deux sockets processeurs (AMD Epyc 7003) et huit sockets GPU (AMD MI250X).

L’APU MI300A vient concurrencer la super puce Grace Hopper GH200 que Nvidia a lancée quelques jours plus tôt et qui intègre elle aussi des cœurs de processeurs et des cœurs GPU. Les lames de calcul HPE Cray EX255a, EX225a et EX254n (celle à base de huit GH200) tiennent toutes dans un format compact d’à peine 2U de haut, grâce à un refroidissement à eau. La lame EX255a, celle à base de MI300A, va servir à construire le prochain supercalculateur El Capitan du Lawrence Livermore National Laboratories.

La puce MI300X est quant à elle plutôt une carte GPU qui se clipse sur un socle (comme un processeur) plutôt que dans un slot PCIe. Elle est destinée à apporter de la puissance de calcul aux serveurs x86 en rack que l’on trouve dans les datacenters. Ceux des entreprises, comme ceux des hyperscalers. La taille de ces serveurs est estimée à 8U.

Dans son design actuel, le GPU MI300X concurrence le GPU H100 SXM que Nvidia a conçu il y a un an comme le GPU le plus performant et qui équipe aujourd’hui ses serveurs de calcul DGX (ou HGX quand ils sont fabriqués par quelqu’un d’autre).

AMD accompagne par ailleurs ses composants d’une nouvelle version 6 de son kit de développement Open source ROCm. Utilisé depuis 2016 pour écrire des algorithmes de calcul accéléré à partir des cartes graphiques Radeon professionnelles, ROCm aurait été généreusement enrichi en bibliothèques de fonctions pour l’IA. On se doute néanmoins que les fonctions avancées récupérées du rachat de Nod.ai, en octobre dernier, n’ont pas encore été implémentées.

Selon AMD, une application d’IA générative basée sur le modèle Llama 2 serait environ huit fois plus rapide quand elle est recompilée avec ROCm 6 et exécutée sur une puce de type MI300, que lorsqu’elle est compilée et exécutée sur un GPU MI250X.

Concurrencer Nvidia

Le contexte dans lequel se font ces lancements est le suivant : selon Gartner, les dépenses mondiales en serveurs ont gentiment augmenté entre 2022 et 2023 de 4,7 % (de 227 milliards de dollars à 237,7 mds $), mais elles devraient faire un bond de 9,5 % en 2024 (260 mds $). Et le cabinet d’études croit savoir que cette augmentation sera essentiellement due à l’investissement dans des équipements pour l’intelligence artificielle, c’est-à-dire des GPU et autres puces accélératrices.

Dans les faits, un serveur équipé de huit GPUs coûte aujourd’hui dans les 375 000 dollars, soit 200 000 dollars de plus que la même configuration sans GPU.

Lisa Su, la PDG d’AMD, affirme que son entreprise est parmi les candidats les plus susceptibles de profiter de cette aubaine commerciale : « l’IA est l’avenir de l’informatique et AMD est idéalement positionné pour alimenter l’infrastructure de bout en bout qui définira l’ère de l’IA, des installations massives dans le cloud aux clusters d’entreprise », dit-elle, lors d’un point presse en marge de l’annonce de ses nouvelles puces.

En vérité, AMD peut se targuer d’équiper, avec ses processeurs et ses GPU, des supercalculateurs qui sont systématiquement plus performants dans le palmarès TOP500 que des configurations équivalentes à base de processeurs Intel et/ou de GPU Nvidia.

Cependant, le supercalcul cantonné aux instituts de recherche n’est pas nécessairement transposable à l’IA que veulent les entreprises. Et c’est Nvidia qui semble avoir le mieux réussi à surfer sur la nouvelle vague des services d’IA. Depuis cet été, il signe à tour de bras des contrats de livraison de ses machines DGX et/ou de ses GPU H100, avec tous les grands hébergeurs de cloud et tous les fabricants de serveurs.

La messe n’est pas encore dite. D’une part, il n’est pas certain que NVIDIA parvienne à honorer toutes ses commandes. D’autre part, LeMagIT a eu vent de la grogne de plusieurs clients de NVIDIA dans les datacenters envers des tarifs qui restent très élevés, faute de concurrence. Les solutions d’AMD sont attendues pour changer la donne.

AMD ne peut d’autant moins tarder à proposer une alternative, que d’autres vont chercher à s’imposer sur le segment des puces accélératrices. Intel doit commercialiser dans un futur proche des puces baptisées Xeon Max et GPU Max. Les grands hyperscalers parient aussi sur des composants maison. AWS a dévoilé fin novembre son processeur ARM Graviton 4 et son GPU Trainium 2. Azure a fait de même avec un processeur ARM Cobalt 100 et un GPU Maia 100. GCP, enfin, utilise ses propres GPU, appelés « Tensor Processing Unit » ou TPU, depuis 2021. Une nouvelle version TPU v5e doit entrer sous peu en production.

Physiquement, toutes ces puces ont une enveloppe thermique comprise entre 700 et 850 watts et sont installables en quatre ou huit exemplaires sur une carte d’interconnexion. Cette dernière est soit une carte mère autonome, dans le cas des APU MI300A et Grace Hopper GH200, soit une carte fille reliée au reste du serveur via un slot PCIe 5.0 en fond de panier, dans le cas des GPUs MI300X et H100 SXM.

On notera que, dans sa version actuelle, le GPU MI300X est le seul à s’installer sur un socket au format standardisé OAM, soit OCP Accelerator Module. OCP signifie Open Compute Project, une norme d’architecture physique pour les serveurs, initiée par Facebook en 2011 et qui s’est imposée depuis lors chez les hébergeurs de cloud.

Le socket de l’APU MI300A, dit SH5, est pour l’heure exclusif à AMD, mais le constructeur aurait l’intention d’en faire le prochain standard « Shared OAM » de l’architecture OCP. Les GH200 et H100 SXM, eux, s’installent chacun sur un socket propriétaire de Nvidia.

« AMD a bien compris que l’enjeu n’était pas seulement les performances. L’enjeu, pour être compétitif face à un Nvidia qui affiche une position dominante, est d’avoir des produits en stock, plus pérennes, plus ouverts », commente Daniel Newman, analyste du cabinet Futurum Research, au micro de nos confrères de TechTarget USA.

La super puce AMD MI300A a priori mieux intégrée que la Nvidia GH200

Photo de la puce AMD MI300A
La super puce MI300A d'AMD qui réunit des coeurs de processeurs Zen 4 et de GPU CDNA 3.

Dans le détail, l’APU MI300A se compose de trois circuits CCD qui comprennent chacun huit cœurs de processeurs Zen 4 (soit 24 en tout ; il s’agit des mêmes CCDs que ceux du dernier Epyc 9004), six circuits XCD qui totalisent 228 cœurs GPU CDNA 3 et huit circuits mémoire HBM 3 qui totalisent 128 Go de capacité. Tous ces circuits ont été gravés individuellement sur différentes chaînes de montage de TSMC et assemblés du mieux possible dans une seule puce.

Les cœurs CDNA 3 fonctionnent en 2,35 GHz, les cœurs Zen 4 à un maximum de 3,7 GHz et tous communiquent avec la mémoire HBM3 en se partageant un bus 8 192 bits à 2,1 GHz qui offre une bande passante totale de 5,3 To/s. A priori, les cœurs CPU et les cœurs GPU communiquent entre eux en passant par le bus de la mémoire HBM 3.

En face, la super puce GH200 de NVIDIA présente sur son socle deux parties distinctes qui semblent moins intégrées que dans le design d’AMD : chaque partie dispose de sa propre mémoire. D’un côté, il y a la partie processeur « Grace » qui comprend un circuit avec 72 cœurs de processeurs ARM Neoverse V2 et plusieurs circuits de RAM LPDDR5 qui peuvent totaliser 480 Go de capacité. De l’autre, on trouve le circuit d’un GPU H100 – découpé en 132 zones identiques, qui correspondent plus ou moins à des cœurs, chacune avec leur cache L1 de 192 Ko et leur bus mémoire 64 bits –, ainsi qu’un circuit de RAM HBM 3 de 96 ou 144 Go. L’ensemble fonctionne à moins de 1,8 GHz.

Le processeur Grace communique avec sa RAM LPDDR5 à un peu moins de 500 Go/s, tandis que le GPU Hopper H100 lit ou écrit des données dans sa RAM HBM à la vitesse de 4 ou 4,9 To/s (à répartir entre les 132 zones), selon la capacité embarquée. Aucun des deux circuits ne peut accéder à la mémoire de l’autre, mais ils communiquent via un lien NVLink-C2C dédié qui leur offre 900 Go/s de bande passante (450 Go/s dans un sens, 450 Go/s dans l’autre), à répartir entre tous les cœurs.

Précisons que les cœurs Zen 4 de l’APU MI300A sont multithread, c’est-à-dire que les 24 cœurs physiques correspondent en pratique à 48 cœurs utiles. Il faudra néanmoins attendre la publication de benchmarks pour savoir ce que ces 48 cœurs virtuels x86 valent par rapport aux 72 cœurs ARM Neoverse V2, en matière de performances brutes et de performances par watt, car les deux architectures (long pipeline pour les Zen 4, instructions à taille fixe pour les Neoverse) n’ont rien à voir.

Entrées-sorties : plus de débit sur le GH200 que sur le MI300A

En termes d’entrées-sorties, l’APU MI300A d’AMD communique avec ses congénères sur la même carte mère grâce à quatre liens Infinity Fabric qui offrent chacun une bande passante de 128 Go/s (soit 512 Go/s par puce). De plus, la puce dispose de son propre contrôleur Ethernet qui lui permet de communiquer avec les autres machines du réseau à la vitesse de 400 Gbit/s (environ 50 Go/s). AMD sous-entend dans ses documentations que cette connexion 400 Gbit/s pourrait aussi servir pour un réseau Infiniband.

Chez AMD, la carte mère sert juste à router les communications entre les APUs et vers des connecteurs réseau. Elle dispose par ailleurs d’un firmware et d’un contrôleur de stockage pour charger les applications et les données depuis une baie de disques en réseau.

En ce qui concerne le GH200 de NVIDIA, les entrées-sorties sont également morcelées en deux parties. Du côté du processeur Grace, un contrôleur gère quatre bus PCIe 5.0 de 16 canaux chacun. Comme chez AMD, ces quatre bus PCie 5.0 offrent chacun 128 Go/s de bande passante, soit un total 512 Go/s par puce.

Sachant qu’une puce GH200 ne dispose pas de contrôleur Ethernet, ces bus PCIe serviront à la relier à un fond de panier où pourront s’enficher des cartes réseau ou d’autres extensions PCIe (comme des SSD NVMe, par exemple). Il est probable que tous les processeurs Grace d’une même carte mère se servent également de ces bus PCIe pour communiquer entre eux.

De l’autre, le GPU Hopper H100 est connecté à dix-huit liens NVLink 4 de NVIDIA qui offrent individuellement 50 Go/s de bande passante (dans un sens ou dans l’autre, mais pas dans les deux à la fois), soit un total cumulé de 900 Go/s par puce. Ces liens ne sont pas cantonnés à la communication avec les autres GPU de la même carte mère. Ils peuvent être prolongés par fibres optiques vers les H100 (ou GH200) d’un autre nœud, de sorte à communiquer avec eux comme s’ils se trouvaient dans la même lame de calcul. Une option qui n’existe pas chez AMD.

Par ailleurs, il est aussi possible de cumuler plusieurs liens NVLink 4 pour augmenter la bande passante entre deux GPUs au détriment des autres GPUs présents. Cette possibilité n’existe pas non plus chez AMD (ni sur les bus PCIe 5.0 de Grace).

GPU : AMD pour le supercalcul, NVIDIA pour le Machine learning

Photo de la carte GPU MI300X de NVIDIA.
La carte GPU MI300X de NVIDIA.

Passons aux produits uniquement GPUs. Si la carte MI300X est amputée des cœurs de processeur Zen 4, elle les remplace par un plus grand nombre de cœurs GPU et une quantité plus importante de mémoire HBM3. On trouve à présent huit circuits XCD qui totalisent 304 cœurs GPU CDNA 3, mais aussi douze circuits de mémoire HBM 3 pour grimper à 192 Go de capacité.

De son côté, le GPU H100 de NVIDIA ayant été conçu un an avant le GH200, ses caractéristiques sont inférieures. Dans sa version autonome, le GPU dispose d’une mémoire HBM3 réduite à 80 Go de RAM et, diminution du nombre de circuits HBM 3 oblige, la bande passante à répartir entre les 132 zones tombe à 3,35 To/s. NVIDIA a récemment annoncé une carte GPU H200 qui sera un H100 équipé comme le GH200, avec 144 Go de RAM HBM 3e. Il faut cependant considérer qu’il se passe souvent un semestre entre une annonce de NVIDIA et la mise sur le marché du produit.

AMD et NVIDIA se battent sur les chiffres de performances de leurs GPUs, qu’ils jurent avoir fait évaluer par des cabinets indépendants, mais chacun avec leurs propres outils.

Un GPU MI300X atteindrait 2,6 PetaOPS sur les traitements 8 bits, 1,3 PetaFLOPS sur ceux en 16 bits et 163,4 TeraFLOPS sur les traitements 32 et 64 bits.

À titre de comparaison, le GPU intégré au MI300A, c’est-à-dire avec moins de cœurs CDNA 3 et moins de mémoire HBM 3, atteindrait 1,96 PetaFLOPS en 8 bits, 980 TeraFLOPS en 16 bits et 122 TeraFLOPS en 32 comme en 64 bits.

Un GPU H100 grimperait quant à lui à 3,96 PetaOPS en 8 bits, 1,98 PetaFLOPS en 16 bits, 67 TeraFLOPS en 32 bits et 34 TeraFLOPS en 64 bits. Bizarrement, NVIDIA donne exactement les mêmes chiffres pour la version autonome de son GPU et pour la version intégrée au GH200.

Ce qu’il faut comprendre dans ses chiffres, c’est que les traitements du Machine learning préfèrent les opérations sur de petites données (8 ou 16 bits) pour augmenter la granularité de leur précision, alors que les traitements en supercalcul privilégient les traitements sur de grandes données (32 ou 64 bits) pour générer des simulations en considérant un maximum de paramètres. On pourrait ainsi conclure que les MI300X et MI300A sont un meilleur choix pour le supercalcul, tandis que les H100 et GH200 sont plus adaptés au Machine learning.

Intégration des GPUs dans un serveur : AMD plus puissant, NVIDIA plus versatile

Phot d'une carte AMD Infinity Fabric.
La carte GPU MI300X est conçue pour s'installer en huit exemplaires sur une carte Infinity Fabric, elle-même reliée en PCIe au serveur.

Pour communiquer avec l’extérieur, la carte MI300X dispose de huit liens à 128 Go/s chacun, soit 1 To/s par carte, soit le double de l’APU MI300A. En l’occurrence, sept liens servent à communiquer avec les sept autres GPU présents sur une carte d’interconnexion Infinity Fabric et un est utilisé pour communiquer avec le serveur hôte via un slot PCIe 5.0 de seize canaux. Il est peu probable que les huit GPUs d’une même carte Infinity Fabric puissent lire/écrire en même temps sur cet unique bus PCIe.

La carte H100 de NVIDIA conserve ses dix-huit liens NVLink 4 qui lui offrent une bande passante cumulée de 900 Go/s pour communiquer avec l’extérieur. Soit avec d’autres H100 (ou GH200) qui sont (ou pas) dans le même serveur, soit avec le bus PCIe 5.0 à 128 Go/s du serveur hôte.

La carte GPU H100 de NVIDIA existe en deux versions. La version mezzanine SXM est physiquement la plus proche du MI300X, dans le sens où elle s’enfiche elle aussi sur une carte d’interconnexion (NVSwitch) qui supporte huit sockets et sert à router les communications entre les GPUs, comme celles en provenance du serveur hôte.

Là aussi, il faudra attendre la publication de benchmarks pour savoir ce que valent vraiment les 2 432 cœurs CDNA 3 accolés à 1,5 To de RAM HBM 3 qu’AMD cumule sur une carte d’interconnexion Infinity Fabric, par rapport aux 1 056 « cœurs » H100 accolés à 640 To de RAM HBM3 que NVIDIA met sur une carte d’interconnexion NVSwitch.

L’autre version autonome du GPU H100 que propose Nvidia est la carte CNX. Il s’agit d’une carte PCIe 5.0 d’appoint – qui n’embarque qu’un seul GPU donc –, qui s’enfiche directement dans le slot PCIe d’un serveur pour communiquer avec lui à la vitesse de 128 Go/s. Format oblige, cette carte est sous-cadencée par rapport à la version SXM afin de limiter la consommation électrique et l’enveloppe thermique du serveur.

Par conséquent, la bande passante des cœurs GPU vers la mémoire HBM 3 tombe à 2 To/s. Les performances de cette carte H100 CNX sont de 3 PetaFLOPs en 8 bits, 1,51 PetaFLOPS en 16 bits, 51 TeraFLOPS en 32 bits et 26 TeraFLOPS en 64 bits. En revanche, l’enveloppe thermique d’une carte H100 CNX plafonne à 350W, quand celle d’une carte H100 SXM posée à plat dans son socle atteint 700W.

À terme, NVIDIA doit proposer une carte PCIe H100 NVL qui comprendra deux GPU H100 et une mémoire HBM 3 de 188 Go. Il est probable que celle-ci soit renommée H200 NVL d’ici à sa sortie effective.

AMD n’a pas encore dit clairement comment il comptait décliner son MI300X en une carte PCIe. Il a toutefois lancé cette année des cartes graphiques Radeon RX 7000 basées sur les mêmes cœurs CDNA 3. Mais le modèle le plus puissant, la carte RX 7900 XTX, ne possède que 92 cœurs CDNA 3 et son enveloppe thermique est handicapée par la présence de circuits générant des pixels qui sont inutiles dans des serveurs de calcul. De plus, elle n’intègre pas de mémoire HBM 3, mais juste 24 Go de mémoire GDDR6, avec une bande passante qui tombe à 960 Go/s.

Cela dit, NVIDIA présente une carte équivalente à la RX 7900 XTX, la carte GPU L40S, comme une solution idéale pour exécuter des applications d’IA générative (à partir de modèles déjà entraînés) sur les serveurs d’appoint des entreprises. La L40S affiche en ce sens les performances suivantes : 733 TeraOPS en 4 bits et 8 bits, 362 TeraFLOPS en 16 bits et 91,6 TeraFLOPS en 32 bits. Elle dispose de 48 Go de mémoire GDDR6 avec une bande passante de 864 Go/s.

Cœurs CDNA 3 : les quelques ruses d’AMD

Qu’il s’agisse du MI300A, comme du MI300X, chaque circuit XCD comprend en vérité 40 cœurs CDNA 3, chacun accompagné d’un cache L1 de 32 Ko, mais seuls 38 cœurs sont actifs.

AMD n’explique pas clairement ce choix. On sait cependant que le constructeur est un habitué de ce type d’approche : pour rentabiliser ses chaînes de production (en l’occurrence celles de TSMC) et proposer des prix agressifs, il recycle les circuits gravés avec un certain d’erreurs en circuits avec simplement moins de cœurs actifs. Il est de fait probable que des APU MI300A et des GPU MI300X avec moins de cœurs CDNA 3 arrivent plus tard sur le marché au prétexte de modèles avec tarifs cassés et enveloppes thermiques inférieures.

On trouve également sur chaque circuit XCD un cache L2 de 4 Mo partagé entre tous les cœurs, ainsi que quatre cœurs ACE (Asynchronous Compute Engines) qui se chargent de router les traitements entre tous les cœurs. Les cœurs CDNA 3 sont, comme tous les GPUs, des processeurs dont les instructions sont spécialisées dans les opérations mathématiques sur les vecteurs et sur les matrices.

Comparativement aux précédents cœurs CDNA2 que l’on trouvait dans les GPUs MI250X, les cœurs CDNA 3 gèrent mieux leurs caches. En l’occurrence ils sont cumulables en pair pour atteindre 64 Ko et fournir à deux cœurs exactement les mêmes données, ce qui ne serait pas un problème puisque, dans un GPU, les unités de traitement en parallèle travaillent généralement sur des données communes. En pratique cela doublerait la vitesse de lecture. Pour mémoire les « zones » qui constituent en quelque sorte les vrais cœurs sur un H100 de Nvidia ont chacune 192 Ko de cache L1.

Concernant les unités de traitement, elles seraient plus rapides de 1,7 à 6,8 fois selon le type de données. On l’aura compris, pour mieux rivaliser avec NVIDIA sur le Machine learning, AMD a surtout accéléré les unités de traitement qui travaillent sur des données 8 ou 16 bits et moins celles qui travaillent sur les données 32 ou 64 bits. En vérité, le passage des cœurs CDNA 2 aux cœurs CDNA 3 semble plus reposer sur un nouvel agencement, plus optimal, des circuits, que sur une croissance des unités de traitements.

Il existe à présent sept types de données utilisables : FP64, FP32, TF32, FP16, BF16, FP8, INT8, exactement comme sur le H100, alors que les anciens cœurs CDNA 2 ne géraient pas les types TF32 ni FP8.

Les chiffres correspondent ici à la taille des registres en bits et les lettres expriment la répartition fonctionnelle de ces bits. Par exemple, un type FP32 signifie une donnée 32 bits qui comprend 8 bits d’exposant, 23 bits de partie entière et 1 bit de signe. Tandis qu’une donnée FP8 a 4 bits d’exposant, 3 bits de partie entière et 1 bit de signe. Dans les registres d’un GPU, la position de chaque bit est directement câblée avec une unité de traitement, au contraire des processeurs classiques. Cela explique en partie pourquoi les GPUs sont plus rapides que les processeurs pour exécuter les fonctions mathématiques.

On notera que, contrairement à ce que son nom suggère, le nouveau type de données TF32 ne contient pas 32 bits, mais 19. NVIDIA a fait la même chose. Ce type de données est appelé ainsi, car il contient 8 bits d’exposant, comme le FP32.

À l’instar de Nvidia, AMD utilise dans son jeu d’instruction des astuces qui lui permettent de pallier la chute des performances sur les données 32 et 64 bits. Ainsi, selon les fonctions mathématiques à appliquer et la quantité de 0 dans les bits d’une valeur numérique, les deux constructeurs présentent aux développeurs des instructions 64, 32 ou 16 bits (« Tensor core » chez NVIDIA, « Vector » chez AMD) qui vont plutôt exécuter deux fonctions 32, 16 ou 8 bits.

Pour approfondir sur Processeurs et composants