L’intelligence artificielle et l’apprentissage en profondeur font constamment la une des journaux ces jours-ci, qu’il s’agisse de ChatGPT générant de mauvais conseils, de voitures autonomes, d’artistes accusés d’utiliser l’IA, de conseils médicaux de l’IA, etc. La plupart de ces outils reposent sur des serveurs complexes avec beaucoup de matériel pour la formation, mais l’utilisation du réseau formé via l’inférence peut se faire sur votre PC, en utilisant sa carte graphique. Mais à quelle vitesse les GPU grand public font-ils de l’inférence IA ?
Nous avons comparé Stable Diffusion, un créateur d’images AI populaire, sur les derniers GPU Nvidia, AMD et même Intel pour voir comment ils se superposent. Si vous avez par hasard essayé de faire fonctionner Stable Diffusion sur votre propre PC, vous avez peut-être une idée de la complexité – ou de la simplicité ! — ça peut être. Le bref résumé est que les GPU de Nvidia font la loi, la plupart des logiciels étant conçus à l’aide de CUDA et d’autres outils Nvidia. Mais cela ne signifie pas que vous ne pouvez pas faire fonctionner Stable Diffusion sur les autres GPU.
Nous avons fini par utiliser trois projets Stable Diffusion différents pour nos tests, principalement parce qu’aucun package ne fonctionnait sur tous les GPU. Pour Nvidia, nous avons opté pour la version webui d’Automatic 1111 (s’ouvre dans un nouvel onglet). Les GPU AMD ont été testés avec la version Shark de Nod.ai (s’ouvre dans un nouvel onglet)tandis que pour les GPU Arc d’Intel, nous avons utilisé Stable Diffusion OpenVINO (s’ouvre dans un nouvel onglet). Les clauses de non-responsabilité sont de mise. Nous n’avons codé aucun de ces outils, mais nous avons recherché des éléments faciles à faire fonctionner (sous Windows) qui semblaient également raisonnablement optimisés.
Nous sommes relativement convaincus que les tests de la série Nvidia 30 réussissent à extraire des performances proches de l’optimum, en particulier lorsque xformers est activé, ce qui offre une augmentation supplémentaire d’environ 20 % des performances. Les résultats de la série RTX 40 sont quant à eux un peu inférieurs aux attentes, peut-être en raison du manque d’optimisations pour la nouvelle architecture Ada Lovelace.
Les résultats d’AMD sont également un peu mitigés, mais ils sont à l’inverse de la situation de Nvidia : les GPU RDNA 3 fonctionnent assez bien tandis que les GPU RDNA 2 semblent plutôt médiocres. Enfin, sur les GPU Intel, même si les performances ultimes semblent s’aligner correctement sur les options AMD, en pratique, le temps de rendu est considérablement plus long – il se passe probablement beaucoup de choses en arrière-plan supplémentaires qui le ralentissent.
Nous utilisons également des modèles Stable Diffusion 1.4, plutôt que les nouveaux SD 2.0 ou 2.1, principalement parce que faire fonctionner SD2.1 sur du matériel non Nvidia aurait nécessité beaucoup plus de travail (c’est-à-dire apprendre à écrire du code pour activer le support). Cependant, si vous avez une connaissance approfondie de Stable Diffusion et que vous souhaitez recommander différents projets open source qui peuvent fonctionner mieux que ce que nous avons utilisé, faites-le nous savoir dans les commentaires (ou envoyez simplement un e-mail à Jarred (s’ouvre dans un nouvel onglet)).
Nos paramètres de test sont les mêmes pour tous les GPU, bien qu’il n’y ait pas d’options pour une option d’invite négative sur la version Intel (du moins, pas que nous ayons pu trouver). La galerie ci-dessus a été générée à l’aide de la version Nvidia, avec des sorties de résolution plus élevée (qui prennent beaucoup, beaucoup plus long à remplir). Ce sont les mêmes invites mais ciblant 2048×1152 au lieu du 512×512 que nous avons utilisé pour nos benchmarks. Voici les paramètres pertinents :
Invite positive :
ville steampunk postapocalyptique, exploration, cinématographique, réaliste, hyper détaillé, détail maximal photoréaliste, lumière volumétrique, (((focus))), grand-angle, (((brillamment éclairé))), (((végétation))), foudre , vignes, destruction, dévastation, wartorn, ruines
Invite négative :
(((flou))), ((brouillard)), (((sombre))), ((monochrome)), soleil, (((profondeur de champ)))
Pas:
100
Guide gratuit du classificateur :
15,0
Algorithme d’échantillonnage :
Quelques variantes d’Euler (Ancestral, Discrete)
L’algorithme d’échantillonnage ne semble pas affecter considérablement les performances, bien qu’il puisse affecter la sortie. Automatic 1111 offre le plus d’options, tandis que la version Intel OpenVINO ne vous donne aucun choix.
Voici les résultats de nos tests des GPU AMD RX séries 7000/6000, Nvidia RTX séries 40/30 et Intel Arc série A. Notez que chaque GPU Nvidia a deux résultats, un utilisant le modèle de calcul par défaut (plus lent et en noir) et un second utilisant la bibliothèque « xformers » plus rapide de Facebook (s’ouvre dans un nouvel onglet) (plus rapide et en vert).
Comme prévu, les GPU de Nvidia offrent des performances supérieures – parfois avec des marges énormes – à celles d’AMD ou d’Intel. Cependant, il y a clairement des anomalies. Le GPU le plus rapide de nos tests initiaux est le RTX 3090 Ti, atteignant près de 20 itérations par seconde, soit environ cinq secondes par image en utilisant les paramètres configurés. Les choses tombent à partir de là, mais même le RTX 3080 lie essentiellement le nouveau RX 7900 XTX d’AMD, et le RTX 3050 surpasse le RX 6950 XT. Mais parlons des bizarreries.
Premièrement, nous nous attendions à ce que le RTX 4090 écrase la concurrence, et cela ne s’est manifestement pas produit. En fait, il est plus lent que le 7900 XT d’AMD, et également plus lent que le RTX 3080. De même, le RTX 4080 se situe entre le 3070 et le 3060 Ti, tandis que le RTX 4070 Ti se situe entre le 3060 et le 3060 Ti.
Des optimisations appropriées pourraient facilement doubler les performances des cartes de la série RTX 40. De même, compte tenu de l’écart de performances important entre le RX 7900 XT et le RX 6950 XT, ses optimisations pourraient également doubler les performances des GPU RDNA 2. Ce n’est qu’une supposition approximative basée sur ce que nous avons vu dans notre hiérarchie de benchmarks GPU, mais il y a certainement quelque chose d’étrange avec ces premiers résultats.
Les GPU Arc d’Intel fournissent actuellement des résultats très décevants, d’autant plus qu’ils prennent en charge les opérations XMX (matrice) qui devraient fournir jusqu’à 4 fois le débit des calculs FP32 réguliers. Nous soupçonnons que le projet Stable Diffusion OpenVINO actuel que nous avons utilisé laisse également beaucoup de place à l’amélioration. Incidemment, si vous voulez essayer d’exécuter SD sur un GPU Arc, notez que vous devez éditer le fichier ‘stable_diffusion_engine.py’ et changer « CPU » en « GPU » – sinon il n’utilisera pas les cartes graphiques pour les calculs et prend beaucoup plus de temps.
Retour aux résultats. En utilisant les versions spécifiées, les cartes de la série RTX 30 de Nvidia fonctionnent très bien, les cartes de la série RX 7000 d’AMD fonctionnent très bien, la série RTX 40 est sous-performante, la série RX 6000 est vraiment sous-performante et les GPU Arc semblent généralement médiocres. Les choses pourraient changer radicalement avec un logiciel mis à jour, et compte tenu de la popularité de l’IA, nous pensons que ce n’est qu’une question de temps avant de voir un meilleur réglage (ou de trouver le bon projet qui est déjà réglé pour offrir de meilleures performances).
Encore une fois, on ne sait pas exactement à quel point l’un de ces projets est optimisé, mais il pourrait être intéressant d’examiner les performances théoriques maximales (TFLOPS) des différents GPU. Le graphique suivant montre les performances théoriques du FP16 pour chaque GPU, en utilisant des cœurs de tenseur/matrice, le cas échéant.
Ces cœurs Tensor sur Nvidia ont clairement du punch, du moins en théorie, bien que nos tests de diffusion stable ne correspondent évidemment pas exactement à ces chiffres. Par exemple, sur le papier, le RTX 4090 (utilisant FP16) est jusqu’à 106 % plus rapide que le RTX 3090 Ti, alors que dans nos tests, il était 35 % plus lent. Notez également que nous supposons que le projet Stable Diffusion que nous avons utilisé (Automatic 1111) n’essaie même pas de tirer parti des nouvelles instructions FP8 sur les GPU Ada Lovelace, ce qui pourrait potentiellement doubler à nouveau les performances sur la série RTX 40.
Pendant ce temps, regardez les GPU Arc. Leurs cœurs matriciels devraient fournir des performances similaires à celles des RTX 3060 Ti et RX 7900 XTX, plus ou moins, avec l’A380 autour du RX 6800. En pratique, les GPU Arc sont loin de ces marques. Les GPU A770 les plus rapides atterrissent entre le RX 6600 et le RX 6600 XT, l’A750 se situe juste derrière le RX 6600 et l’A380 est à environ un quart de la vitesse de l’A750. Ils représentent donc tous environ un quart des performances attendues, ce qui aurait du sens si les cœurs XMX ne sont pas utilisés.
Les ratios sur Arc semblent cependant corrects. Les performances de calcul théoriques sur l’A380 sont environ un quart de celles de l’A750. Très probablement, ils utilisent des shaders pour les calculs, en mode FP32 de précision totale, et manquent certaines optimisations supplémentaires.
L’autre chose à noter est que le calcul théorique sur le RX 7900 XTX / XT d’AMD s’est beaucoup amélioré par rapport à la série RX 6000, et la bande passante mémoire n’est pas un facteur critique – les modèles 3080 10 Go et 12 Go atterrissent relativement proches les uns des autres. Donc, peut-être que les résultats AMD ci-dessus ne sont pas complètement hors de question, car le 7900 XTX effectue presque le triple de calcul brut par rapport au 6950 XT. Sauf que le 7900 XT fonctionne presque aussi bien que le XTX, où le calcul brut devrait favoriser le XTX d’environ 19 % au lieu des 3 % que nous avons mesurés.
En fin de compte, il s’agit plus d’un instantané dans le temps des performances de diffusion stable sur les GPU AMD, Intel et Nvidia que d’une véritable déclaration de performances. Avec des optimisations complètes, les performances devraient ressembler davantage au graphique théorique TFLOPS, et les nouvelles cartes de la série RTX 40 ne devraient certainement pas prendre du retard sur les pièces existantes de la série RTX 30.
Ce qui nous amène à un dernier graphique, où nous avons effectué des tests à plus haute résolution. Nous n’avons pas encore testé tous les nouveaux GPU et nous avons utilisé Linux sur les cartes AMD RX série 6000 que nous avons testées. Mais il semble que la résolution cible plus complexe de 2048×1152 ait commencé à mieux tirer parti du RTX 4090 au moins. Nous verrons comment revenir sur ce sujet plus dans l’année à venir.