Apple

Quel (s) GPU (s) obtenir pour un apprentissage en profondeur

Par Maximus , le 26 mai 2019 - 30 minutes de lecture

L'apprentissage en profondeur est un domaine avec des exigences de calcul intenses et le choix de votre GPU déterminera fondamentalement votre expérience d'apprentissage en profondeur. Mais quelles sont les fonctionnalités importantes si vous souhaitez acheter un nouveau GPU? RAM GPU, cœurs, cœurs de tenseurs? Comment faire un choix rentable? Cet article de blog approfondira ces questions et vous apportera des conseils qui vous aideront à faire un choix qui vous convient.
TL; DR
Avoir un GPU rapide est un aspect très important quand on commence à apprendre en profondeur, car cela permet de gagner rapidement en expérience pratique, ce qui est essentiel pour développer l'expertise avec laquelle vous pourrez appliquer l'apprentissage en profondeur à de nouveaux problèmes. Sans ce retour rapide, il faut trop de temps pour apprendre des erreurs commises et il peut être décourageant et frustrant de continuer avec un apprentissage en profondeur. Avec les GPU, j'ai rapidement appris comment appliquer l'apprentissage en profondeur à différentes compétitions Kaggle et j'ai réussi à gagner la deuxième place dans Partly Sunny avec une compétition Chance of Hashtags Kaggle en utilisant une approche d'apprentissage en profondeur, où il était de la tâche de prédire les cotes météorologiques. pour un tweet donné. Lors de la compétition, j’ai utilisé un réseau de neurones profonds assez large à deux couches avec des unités linéaires rectifiées et des décrocheurs pour la régularisation et ce réseau profond s’insérait à peine dans ma mémoire GPU de 6 Go. Les GPU GTX Titan qui m’ont propulsé dans la compétition ont été un facteur important dans ma quête de la 2e place de la compétition.

Vue d'ensemble

Cet article de blog est structuré de la manière suivante. Tout d'abord, je discute de l'utilité d'avoir plusieurs GPU, puis de toutes les options matérielles pertinentes telles que les GPU NVIDIA et AMD, Intel Xeon Phis, les TPU de Google et le nouveau matériel de démarrage. Ensuite, je discute de ce que les spécifications de GPU sont de bons indicateurs pour une performance d’apprentissage en profondeur. La partie principale traite d’une analyse des performances et de la rentabilité. Je conclus par des recommandations générales et plus spécifiques du GPU.

Est-ce que plusieurs GPU rendent ma formation plus rapide?

Lorsque j'ai commencé à utiliser plusieurs GPU, j'étais enthousiasmé par l'utilisation du parallélisme des données pour améliorer les performances d'exécution pour une compétition Kaggle. Cependant, j’ai trouvé qu’il était très difficile d’obtenir une accélération simple en utilisant plusieurs GPU. J'étais curieux de ce problème et c'est ainsi que j'ai commencé à faire des recherches sur le parallélisme dans l'apprentissage en profondeur. J'ai analysé la parallélisation dans les architectures d'apprentissage approfondi, développé une technique de quantification sur 8 bits pour augmenter les accélérations dans les grappes de GPU de 23x à 50x pour un système de 96 GPU et publié mes recherches à l'ICLR 2016.

L’idée principale était que la convolution et les réseaux récurrents sont plutôt faciles à mettre en parallèle, en particulier si vous utilisez un seul ordinateur ou 4 GPU. Cependant, les réseaux entièrement connectés, y compris les transformateurs, ne sont pas faciles à mettre en parallèle et nécessitent des algorithmes spécialisés pour fonctionner correctement.

<img data-attachment-id = "9" data-permalink = "https://timdettmers.com/2019/04/03/which-gpu-for-de-de-learning/gpu-pic/" data-orig-file = "https://i1.wp.com/timdettmers.com/wp-content/uploads/2014/08/gpu-pic.jpg?fit=2916%2C1524&ssl=1" data-orig-size = "2916,1524 "data-comments-open =" 1 "data-image-meta =" {"ouverture": "2.4", "crédit": "", "appareil photo": "U9200", "caption": "", "created_timestamp ":" 1407955348 "," copyright ":" "," focal_length ":" 4.13 "," iso ":" 64 "," shutter_speed ":" 0.033333 "," titre ":" "," orientation ":" 1 "}" data-image-title = "Image GPU" data-image-description = "

Configuration sur mon ordinateur principal: Vous pouvez voir trois cartes GXT Titan et une carte InfiniBand. Est-ce une bonne configuration pour apprendre en profondeur?

"data-medium-file =" https://i1.wp.com/timdettmers.com/wp-content/uploads/2014/08/gpu-pic.jpg?fit=300%2C157&ssl=1 "data-large- file = "https://i1.wp.com/timdettmers.com/wp-content/uploads/2014/08/gpu-pic.jpg?fit=1024%2C535&ssl=1" class = "wp-image-9 taille -large "src =" https://i1.wp.com/timdettmers.com/wp-content/uploads/2014/08/gpu-pic.jpg?resize=700%2C366 "alt =" Image du GPU "width = "700" height = "366" data-recalc-dims = "1" />

Figure 1: Installation sur mon ordinateur principal: vous pouvez voir trois GPU et une carte InfiniBand. Est-ce une bonne configuration pour apprendre en profondeur?

Les bibliothèques modernes telles que TensorFlow et PyTorch sont idéales pour la mise en parallèle des réseaux récurrents et convolutionnels. En ce qui concerne la convolution, vous pouvez vous attendre à une accélération d’environ 1,9x / 2,8x / 3,5x pour les GPU 2/3/4. Pour les réseaux récurrents, la longueur de séquence est le paramètre le plus important. Pour les problèmes de processeur non linéaire, on peut s'attendre à des accélérations similaires ou légèrement inférieures à celles des réseaux à convolution. Les réseaux entièrement connectés, y compris les transformateurs, ont généralement des performances médiocres pour le parallélisme des données et des algorithmes plus avancés sont nécessaires pour accélérer ces parties du réseau. Si vous exécutez des transformateurs sur plusieurs GPU, essayez de l’exécuter sur 1 GPU et vérifiez s’il est plus rapide ou non.

Utilisation de plusieurs GPU sans parallélisme

L'utilisation de plusieurs GPU présente un autre avantage, même si vous ne parallélisez pas les algorithmes, est que vous pouvez exécuter plusieurs algorithmes ou expériences séparément sur chaque GPU. La recherche hyperparamètre efficace est l’utilisation la plus courante de plusieurs GPU. Vous n'obtenez pas d'accélération, mais vous obtenez des informations plus rapides sur les performances de différents paramètres d'hyperparamètre ou d'architecture de réseau. Ceci est également très utile pour les novices, car vous pouvez rapidement acquérir des connaissances et une expérience sur la manière de former une architecture d'apprentissage en profondeur inconnue.

L'utilisation de plusieurs GPU de cette manière est généralement plus utile que l'exécution d'un seul réseau sur plusieurs GPU via le parallélisme des données. Gardez cela à l'esprit lorsque vous achetez plusieurs GPU: les qualités d'un meilleur parallélisme, comme le nombre de voies PCIe, ne sont pas très importantes lorsque vous achetez plusieurs GPU.

De plus, notez qu'un seul GPU devrait suffire à presque toutes les tâches. Ainsi, la gamme d'expériences que vous pouvez avoir avec 1 GPU ne sera pas différente de celle obtenue avec 4 GPU. La seule différence est que vous pouvez exécuter plusieurs expériences dans un temps donné avec plusieurs GPU.

Vos options: NVIDIA vs AMD vs Intel vs Google vs Amazon vs Microsoft vs Fancy Startup

NVIDIA: le leader

Les bibliothèques standard de NVIDIA ont rendu très facile l’établissement des premières bibliothèques d’apprentissage approfondi dans CUDA, alors qu’il n’existait pas de bibliothèques standard aussi puissantes pour OpenCL d’AMD. Cet avantage précoce, combiné au fort soutien de la communauté de NVIDIA, a rapidement augmenté la taille de la communauté CUDA. Cela signifie que si vous utilisez des GPU NVIDIA, vous pourrez facilement trouver de l’aide en cas de problème, du support et des conseils si vous programmez vous-même CUDA et vous constaterez que la plupart des bibliothèques d’apprentissage approfondi offrent le meilleur support pour les GPU NVIDIA. Au cours des derniers mois, NVIDIA a investi encore plus de ressources dans les logiciels. Par exemple, la bibliothèque Apex prend en charge la stabilisation des gradients 16 bits dans PyTorch et comprend également des optimiseurs rapides fondus tels que FusedAdam. Globalement, les logiciels constituent un point fort pour les GPU NVIDIA.

D'autre part, NVIDIA a désormais pour politique d'utiliser CUDA dans les centres de données uniquement pour les GPU Tesla et non pour les cartes GTX ou RTX. Ce que l'on entend par «centres de données» n'est pas clair, mais cela signifie que les organisations et les universités sont souvent obligées d'acheter les GPU Tesla, coûteux et peu rentables, par crainte de problèmes juridiques. Cependant, les cartes Tesla ne présentent aucun avantage réel par rapport aux cartes GTX et RTX et coûtent jusqu'à 10 fois plus.

Le fait que NVIDIA puisse le faire sans aucun obstacle majeur montre la puissance de son monopole – ils peuvent faire ce qu’ils veulent et nous devons accepter les conditions. Si vous choisissez les principaux avantages des GPU NVIDIA en termes de communauté et de support, vous devrez également accepter le fait que vous pouvez vous déplacer à volonté.

AMD: puissante mais manquant de soutien

HIP via ROCm unifie les GPU NVIDIA et AMD sous un langage de programmation commun compilé dans le langage GPU correspondant avant sa compilation dans l'assemblage GPU. Si nous avions tout notre code GPU dans HIP, ce serait un jalon important, mais c'est plutôt difficile car il est difficile de porter les bases de code TensorFlow et PyTorch. TensorFlow et PyTorch prennent en charge les GPU AMD et tous les principaux réseaux peuvent être exécutés sur des GPU AMD. Toutefois, si vous souhaitez développer de nouveaux réseaux, il se peut que certains détails manquent, ce qui peut vous empêcher de mettre en œuvre ce dont vous avez besoin. La communauté ROCm n’est pas non plus très nombreuse et il n’est donc pas simple de régler rapidement les problèmes. AMD investit peu dans son logiciel d’apprentissage en profondeur et ne peut donc pas s’attendre à ce que l’écart logiciel entre NVIDIA et AMD se résorbe.

Actuellement, les performances des GPU AMD sont correctes. Ils disposent désormais d’une capacité de calcul 16 bits, ce qui constitue un jalon important, mais les cœurs Tensor des GPU NVIDIA offrent des performances de calcul bien supérieures pour les transformateurs et les réseaux de convolution (mais pas tant pour les réseaux récurrents de niveau mot).

Globalement, je pense que je ne peux toujours pas recommander clairement les GPU AMD aux utilisateurs ordinaires qui souhaitent simplement que leurs GPU fonctionnent correctement. Les utilisateurs plus expérimentés devraient avoir moins de problèmes et, en prenant en charge les processeurs graphiques AMD et les développeurs ROCm / HIP, ils contribuent à la lutte contre le monopole de NVIDIA dans la mesure où cela profitera grandement à tous à long terme. Si vous êtes un développeur de GPU et souhaitez apporter une contribution importante à l'informatique GPU, un GPU AMD pourrait être le meilleur moyen d'avoir un impact positif à long terme. Pour tous les autres, les GPU NVIDIA pourraient constituer le choix le plus sûr.

Intel: essayer durement

Mon expérience personnelle avec les processeurs Intel Xeon Phis a été très décevante et je ne les considère pas comme un véritable concurrent des cartes NVIDIA ou AMD. Je vais donc rester concis: si vous décidez d’utiliser un Xeon Phi, sachez que vous risquez de rencontrer des problèmes support, problèmes informatiques rendant les sections de code plus lentes que les processeurs, difficultés à écrire du code optimisé, pas de prise en charge complète des fonctionnalités C ++ 11, pas de prise en charge de certains modèles de conception de GPU importants, compatibilité médiocre avec d’autres bibliothèques utilisant des routines BLAS (NumPy et SciPy) et probablement de nombreuses autres frustrations que je n’ai pas rencontrées.

Au-delà du Xeon Phi, j’attendais avec impatience le processeur de réseau neuronal Intel Nervana (NNP), car ses spécifications étaient extrêmement puissantes de la part d’un développeur de GPU et auraient permis de nouveaux algorithmes qui pourraient redéfinir la façon dont les réseaux de neurones sont utilisés, mais il a été retardé sans fin et il y a des rumeurs selon lesquelles une grande partie des personnes développées ont sauté du bateau. Le NNP est prévu pour les troisième et quatrième trimestres 2019. Si vous voulez attendre aussi longtemps, gardez à l’esprit qu’un bon matériel n’est pas tout ce que nous pouvons constater de la part d’AMD et de Xeon Phi d’Intel. Cela pourrait bien être en 2020 ou 2021 jusqu'à ce que le NNP soit compétitif avec les GPU ou les TPU.

Google: traitement à la demande puissant et économique

Le TPU de Google est devenu un produit basé sur le cloud, très mature et rentable. Le moyen le plus simple de donner un sens au TPU est de le voir comme plusieurs GPU spécialisés regroupés qui n'ont qu'un seul objectif: faire des multiplications matricielles rapides. Si nous examinons les mesures de performance du V100 compatible Tensor-Core par rapport au TPUv2, nous constatons que les performances des deux systèmes sont pratiquement identiques pour ResNet50. [source is lost, not on Wayback Machine]. Cependant, le TPU de Google est plus rentable. Étant donné que les TPU disposent d'une infrastructure de parallélisation sophistiquée, les TPU auront un avantage majeur en termes de vitesse par rapport aux GPU si vous utilisez plus d'un TPU en nuage (équivalent à 4 GPU).

PyTorch, bien qu’il soit encore expérimental, soutient désormais également les TPU, qui contribueront à renforcer la communauté et l’écosystème de TPU.

Les TPU ont encore quelques problèmes ici et là. Par exemple, un rapport de février 2018 a déclaré que le TPUv2 ne convergeait pas lorsque des LSTM étaient utilisés. Je n'ai pas pu trouver de source si le problème a été résolu pour l'instant.

D'autre part, il existe une grande réussite pour la formation de gros transformateurs sur des TPU. Les modèles GPT-2, BERT et de traduction automatique peuvent être formés de manière très efficace sur les TPU. Selon mes estimations, d'après mon article sur le blog TPU vs GPU, les TPU sont environ 56% plus rapides que les GPU et, grâce à leur prix plus bas comparé aux GPU en nuage, ils constituent un excellent choix pour les grands projets de transformation.

Un problème lié à la formation de modèles volumineux sur des TPU peut toutefois être le coût cumulé. Les TPU sont très performants et s’utilisent mieux en phase d’entraînement. Dans la phase de prototypage et d'inférence, vous devez utiliser des options autres que le cloud pour réduire les coûts. Par conséquent, une formation sur les TPU, mais le prototypage et la déduction sur votre GPU personnel est le meilleur choix.

En conclusion, actuellement, les TPU semblent être mieux utilisés pour la formation de réseaux de convolution ou de grands transformateurs et devraient être complétés par d'autres ressources de calcul plutôt que par une ressource d'apprentissage en profondeur principale.

Amazon AWS et Microsoft Azure: fiables mais coûteux

Les instances de GPU d'Amazon AWS et Microsoft Azure sont très attractives, car elles peuvent facilement être agrandies et réduites en fonction des besoins. Ceci est très utile pour les délais papier ou pour des projets ponctuels plus importants. Cependant, comme pour les TPU, les coûts bruts s’additionnent rapidement. Actuellement, les instances de cloud GPU sont trop chères pour être utilisées isolément et je recommande de disposer de GPU bon marché dédiés au prototypage avant de lancer les derniers travaux de formation dans le cloud.

Fantaisie de démarrage: Concept matériel révolutionnaire sans logiciel

Toute une gamme de startups ont pour objectif de produire la prochaine génération de matériel d'apprentissage en profondeur. Ces sociétés ont généralement un excellent concept théorique et sont ensuite achetées par Google / Intel ou d’autres entreprises pour obtenir le financement nécessaire à la conception complète et à la production de la puce. Pour la prochaine génération de puces (3 nm), cela coûte environ un milliard de dollars avant de pouvoir produire une puce. Une fois cette étape terminée (aucune entreprise n’a encore réussi à le faire), le principal problème est le logiciel. Aucune entreprise n'a réussi à produire un logiciel qui fonctionnera dans la pile d'apprentissage en profondeur actuelle. Une suite logicielle complète doit être développée pour être compétitive, ce qui ressort clairement de l'exemple AMD vs NVIDIA: AMD a un matériel de qualité, mais seulement 90% du logiciel – cela ne suffit pas pour être compétitif avec NVIDIA.

À l'heure actuelle, aucune entreprise n'est sur le point d'achever les étapes matérielles et logicielles. Intel NNP est peut-être le plus proche, mais de tout cela, on ne peut pas s'attendre à un produit compétitif avant 2020 ou 2021. Nous devons donc nous en tenir aux GPU et aux TPU.

Ainsi, les nouveaux matériels fantaisistes de votre startup préférée peuvent être ignorés en toute sécurité pour le moment.

Qu'est-ce qui rend un GPU plus rapide qu'un autre?

TL; DR

Votre première question pourrait être quelle est la fonctionnalité la plus importante pour une performance GPU rapide pour un apprentissage en profondeur: s'agit-il de cœurs CUDA? Vitesse de l'horloge? Taille de la RAM?

En 2019, le choix d'un GPU est plus compliqué que jamais: informatique 16 bits, cœurs Tensor, GPU 16 bits sans cœurs Tensor, plusieurs générations de GPU toujours viables (Turning, Volta, Maxwell). Mais il existe toujours des indicateurs de performance fiables que les gens peuvent utiliser en règle générale. Voici quelques directives de priorisation pour différentes architectures d’apprentissage en profondeur:

Réseaux de convolution et transformateurs: Cœurs de tenseurs> FLOP> Bande passante mémoire> Capacité 16 bits
Réseaux récurrents: Bande passante mémoire> Capacité 16 bits> Cœurs de tenseur> FLOP

Cela se lit comme suit: Si je veux utiliser, par exemple, des réseaux convolutifs, je dois d'abord donner la priorité à un GPU doté de cœurs de tenseur, puis à un nombre élevé de FLOP, puis à une bande passante mémoire élevée, puis à un GPU ayant une capacité 16 bits . Lors de la définition des priorités, il est important de choisir un GPU disposant de suffisamment de mémoire GPU pour exécuter les modèles qui vous intéressent.

Pourquoi ces priorités?

Pour approfondir votre compréhension et faire un choix éclairé, vous devez savoir quelles sont les parties du matériel qui permettent aux GPU de fonctionner rapidement pour les deux opérations de tenseur les plus importantes: la multiplication matricielle et la convolution.

Un moyen simple et efficace d’envisager la multiplication matricielle A * B = C est qu’il est lié à la bande passante de la mémoire: Copier la mémoire de A, B sur la puce coûte plus cher que de faire les calculs de A * B. Cela signifie que la bande passante mémoire est la fonctionnalité la plus importante d'un GPU si vous souhaitez utiliser des LSTM et d'autres réseaux récurrents qui effectuent de nombreuses multiplications de petites matrices. Plus la multiplication de matrice est petite, plus la bande passante mémoire est importante.

Au contraire, la convolution est liée à la vitesse de calcul. Ainsi, les TFLOPs sur un GPU constituent le meilleur indicateur des performances de ResNets et d’autres architectures de convolution. Les noyaux de tenseurs peuvent augmenter considérablement les FLOP.

La multiplication à grande matrice utilisée dans les transformateurs se situe entre la convolution et la multiplication à petite matrice des RNN. Les multiplications de grandes matrices bénéficient énormément du stockage 16 bits, des cœurs Tensor et des FLOP, mais elles nécessitent toujours une bande passante mémoire importante.

Notez que pour utiliser les avantages des cœurs Tensor, vous devez utiliser des données et des poids 16 bits – évitez d’utiliser des cartes 32 bits avec RTX! Si vous rencontrez des problèmes avec une formation 16 bits avec PyTorch, vous devez utiliser la mise à l'échelle dynamique des pertes fournie par la bibliothèque Apex. Si vous utilisez TensorFlow, vous pouvez implémenter vous-même l’échelle de perte: (1) multipliez votre perte par un grand nombre, (2) calculez le gradient, (3) divisez par le grand nombre, (4) mettez à jour vos poids. Habituellement, une formation en 16 bits devrait suffire, mais si vous rencontrez des difficultés pour répliquer les résultats avec une réduction de perte en 16 bits, le problème sera généralement résolu.

<img data-attachment-id = "763" data-permalink = "https://timdettmers.com/performance_rtx/" data-orig-file = "https://i1.wp.com/timdettmers.com/wp- content / uploads / 2019/04 / performance_RTX.png? fit = 1573% 2C918 & ssl = 1 "data-orig-size =" 1573,918 "data-comments-open =" 1 "data-image-meta =" {"ouverture ":" 0 "," credit ":" "," camera ":" "," caption ":" "," created_timestamp ":" 0 "," copyright ":" "," focal_length ":" 0 ", "iso": "0", "shutter_speed": "0", "title": "", "orientation": "0"} "data-image-title =" performance_RTX "data-image-description =" "data -medium-file = "https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png?fit=300%2C175&ssl=1" data-large-file = "https : //i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png? fit = 1024% 2C598 & ssl = 1 "class =" wp-image-763 size-full "src =" https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png?resize=1573%2C918 "alt =" Figure 2: Données de performances normalisées des GPU et des TPU. Les cartes RTX prennent en charge les calculs sur 16 bits. Les mots RNN du mot se réfèrent à la performance biLSTM pour de courtes séquences de longueur <100. Benchmarking was done using PyTorch 1.0.1 and CUDA 10." width="1573" height="918" srcset="https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png?w=1573&ssl=1 1573w, https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png?resize=300%2C175&ssl=1 300w, https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png?resize=768%2C448&ssl=1 768w, https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_RTX.png?resize=1024%2C598&ssl=1 1024w" sizes="(max-width: 1000px) 100vw, 1000px" data-recalc-dims="1"/>
Figure 2: Données de performances normalisées des GPU et des TPU. Plus c'est haut, mieux c'est. Les cartes RTX supposent un calcul 16 bits. Les mots RNN désignent les performances biLSTM pour les séquences courtes de longueur <100. L'analyse comparative a été effectuée à l'aide de PyTorch 1.0.1 et CUDA 10.

Analyse coût-efficacité

La rentabilité d'un GPU est probablement le critère le plus important pour la sélection d'un GPU. L'analyse des performances pour cette mise à jour de blog a été réalisée comme suit:
(1) Pour les transformateurs, j'ai comparé Transformer-XL et BERT.
(2) Pour les RNN au format word et char, j’ai référencé des modèles biLSTM à la pointe de la technologie.
(3) L'analyse comparative dans (1) et (2) a été effectuée pour Titan Xp, Titan RTX et RTX 2080 Ti. Pour les autres cartes, j'ai réduit les différences de performances de manière linéaire.
(4) J'ai utilisé le repère existant pour les CNN: (1, 2, 3, 4, 5, 6, 7).
(5) J'ai utilisé le coût moyen d'Amazon et d'eBay comme coût de référence pour un GPU.

<img data-attachment-id = "762" data-permalink = "https://timdettmers.com/performance_per_dollar_rtx/" data-orig-file = "https://i1.wp.com/timdettmers.com/wp- content / uploads / 2019/04 / performance_per_dollar_RTX.png? fit = 1573% 2C918 & ssl = 1 "data-orig-size =" 1573,918 "data-comments-open =" 1 "data-image-meta =" {"aperture ":" 0 "," credit ":" "," camera ":" "," caption ":" "," created_timestamp ":" 0 "," copyright ":" "," focal_length ":" 0 ", "iso": "0", "shutter_speed": "0", "title": "", "orientation": "0"} "data-image-title =" performance_per_dollar_RTX "data-image-description =" "data -medium-file = "https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png?fit=300%2C175&ssl=1" data-large-file = "https : //i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png? fit = 1024% 2C598 & ssl = 1 "class =" wp-image-762 size-full "src =" https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png?resize=1573%2C918 "alt =" Figure 3: Performances / coûts normalisés pour les réseaux convolutionnels (CNN), les réseaux récurrents (RNN) et les transformateurs. Plus c'est haut, mieux c'est. Un RTX 2060 est plus de 5 fois plus économique qu'un Tesla V100. Les numéros de mots RNN font référence aux performances biLSTM pour des séquences courtes de longueur <100. Benchmarking was done using PyTorch 1.0.1 and CUDA 10." width="1573" height="918" srcset="https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png?w=1573&ssl=1 1573w, https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png?resize=300%2C175&ssl=1 300w, https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png?resize=768%2C448&ssl=1 768w, https://i1.wp.com/timdettmers.com/wp-content/uploads/2019/04/performance_per_dollar_RTX.png?resize=1024%2C598&ssl=1 1024w" sizes="(max-width: 1000px) 100vw, 1000px" data-recalc-dims="1"/>
Figure 3: Performances / coûts normalisés pour les réseaux de convolution (CNN), les réseaux récurrents (RNN) et les transformateurs. Plus c'est haut, mieux c'est. Un RTX 2060 est plus de 5 fois plus économique qu'un Tesla V100. Les mots RNN désignent les performances biLSTM pour les séquences courtes de longueur <100. L'analyse comparative a été effectuée à l'aide de PyTorch 1.0.1 et CUDA 10.

À partir de ces données, nous voyons que le RTX 2060 est plus rentable que le RTX 2070, le RTX 2080 ou le RTX 2080 Ti. Pourquoi cela est-il ainsi? La possibilité d'effectuer des calculs 16 bits avec des cœurs Tensor est beaucoup plus utile que d'avoir simplement un navire plus grand avec plus de cœurs Tensor. Avec la RTX 2060, vous bénéficiez de ces fonctionnalités au meilleur prix.

Cependant, cette analyse comporte certains biais qui doivent être pris en compte:
(1) Cette analyse est fortement biaisée en faveur des cartes plus petites. Les GPU plus petits et économiques risquent de ne pas disposer de suffisamment de mémoire pour exécuter les modèles qui vous intéressent!
(2) Prix excessif des cartes GTX 10xx: À l’heure actuelle, les cartes GTX 10XX semblent être trop chères, car les joueurs n’aiment pas les cartes RTX.
(3) Biais mono-GPU: un ordinateur avec 4 cartes peu onéreuses (4x RTX 2080 Ti) est beaucoup plus rentable que 2 ordinateurs avec les cartes les plus économiques (8x RTX 2060).

Avertissement: problèmes de chaleur multi-GPU RTX

Il existe des problèmes avec le RTX 2080 Ti et d'autres GPU RTX avec le double ventilateur standard si vous utilisez plusieurs GPU côte à côte. Cela est particulièrement vrai pour plusieurs RTX 2080 Ti sur un ordinateur, mais plusieurs RTX 2080 et RTX 2070 peuvent également être affectés. Le ventilateur de certaines des cartes RTX est une nouvelle conception développée par NVIDIA pour améliorer l'expérience des joueurs utilisant un seul processeur graphique (silencieux et à chaleur réduite pour un processeur graphique). Cependant, la conception est terrible si vous utilisez plusieurs GPU dotés de cette conception ouverte à double ventilateur. Si vous souhaitez utiliser plusieurs cartes RTX côte à côte (directement dans le prochain emplacement PCIe), vous devez vous procurer la version dotée d'un design à ventilateur unique de type «ventilateur». Cela est particulièrement vrai pour les cartes RTX 2080 Ti. ASUS et PNY ont actuellement des modèles RTX 2080 Ti sur le marché avec un ventilateur de type soufflante. Si vous utilisez deux RTX 2070, tous les ventilateurs devraient vous convenir. Cependant, je choisirais également un ventilateur de type souffleur si vous utilisiez plus de 2 RTX 2070 l'un à côté de l'autre.

Taille de mémoire requise et formation 16 bits

La mémoire d'un GPU peut être critique pour certaines applications telles que la vision par ordinateur, la traduction automatique et certaines autres applications de la PNL. Vous pourriez penser que le RTX 2070 est rentable, mais sa mémoire est trop petite avec 8 Go. Toutefois, notez que grâce à la formation 16 bits, vous disposez pratiquement de 16 Go de mémoire et que tout modèle standard doit pouvoir s'intégrer facilement dans votre RTX 2070 si vous utilisez une résolution 16 bits. Il en va de même pour les RTX 2080 et RTX 2080 Ti. Notez cependant que dans la plupart des frameworks logiciels, vous ne sauvegarderez pas automatiquement la moitié de la mémoire en utilisant 16 bits, car certains frameworks stockent des poids en 32 bits pour effectuer des mises à jour plus précises des dégradés, etc. En règle générale, supposons 50% de mémoire supplémentaire pour un calcul 16 bits. Ainsi, une mémoire de 8 Go de 16 bits équivaut à peu près à une mémoire de 32 Go de 12 Go.

Recommandations générales du GPU

Actuellement, ma principale recommandation est d’obtenir un processeur graphique RTX 2070 et d’utiliser la formation 16 bits. Je ne recommanderais jamais d'acheter un XP Titan, un Titan V, des cartes Quadro ou des GPU Founders Edition. Cependant, il existe des GPU spécifiques qui ont également leur place:
(1) Pour plus de mémoire, je recommanderais un RTX 2080 Ti. Si vous avez vraiment besoin de beaucoup de mémoire supplémentaire, RTX Titan est la meilleure option – mais assurez-vous que vous en avez vraiment besoin!
(2) Pour des performances supplémentaires, je recommanderais un RTX 2080 Ti.
(3) Si vous êtes à court d'argent, je vous recommanderais une carte GTX 10XX bon marché d'eBay (selon la quantité de mémoire dont vous avez besoin) ou un RTX 2060. Si c'est trop cher, jetez un coup d'œil à Colab.
(4) Si vous souhaitez simplement apprendre en profondeur, une GTX 1060 (6 Go) est une excellente option.
(5) Si vous avez déjà une GTX 1070 ou supérieure: attendez. Une mise à niveau ne vaut pas la peine si vous ne travaillez pas avec de gros transformateurs.
(6) Vous souhaitez apprendre rapidement à effectuer un apprentissage en profondeur: Multiple GTX 1060 (6 Go).

Apprendre en profondeur dans le nuage

Les deux instances GPU sur AWS / Azure et les TPU dans Google Cloud sont des options viables pour un apprentissage en profondeur. Bien que le TPU soit un peu moins cher, il manque la polyvalence et la flexibilité des GPU en nuage. Les TPU peuvent être l'arme de choix pour la reconnaissance d'objets d'entraînement ou les modèles de transformateurs. Pour les autres charges de travail, les GPU en nuage sont un choix plus sûr. L'avantage des instances en nuage est que vous pouvez basculer entre les GPU et les TPU à tout moment, voire utiliser les deux en même temps.

Cependant, gardez à l'esprit le coût d'opportunité ici: si vous apprenez les compétences nécessaires pour bien fonctionner avec AWS / Azure, vous perdez du temps qui pourrait être consacré à la création d'un GPU personnel et vous n'aurez pas non plus acquis les compétences requises pour utiliser TPU. Si vous utilisez un GPU personnel, vous ne pourrez pas développer davantage de GPU / TPU via le cloud. Si vous utilisez des TPU, vous risquez de rester bloqué avec TensorFlow pendant un certain temps si vous voulez des fonctionnalités complètes et qu'il ne sera pas simple de passer de la base de code à PyTorch. L'apprentissage d'un flux de travail fluide sur les GPU / TPU en nuage est un coût d'opportunité coûteux et vous devez en tenir compte si vous choisissez les TPU, les GPU en nuage ou les GPU personnels.

Une autre question concerne également le moment d'utilisation des services cloud. Si vous essayez d’apprendre en profondeur ou si vous avez besoin de prototyper, un GPU personnel pourrait être la meilleure option, car les instances de cloud peuvent être coûteuses. Cependant, une fois que vous avez trouvé une bonne configuration réseau approfondie et que vous souhaitez simplement former un modèle à l'aide du parallélisme des données, l'utilisation d'instances de cloud constitue une approche solide. Cela signifie qu'un petit GPU suffira pour le prototypage et que vous pourrez compter sur la puissance du cloud computing pour passer à la vitesse supérieure.

Si vous manquez d’argent, les instances de cloud computing peuvent également constituer une bonne solution: protégez un processeur, puis déployez-le sur des instances GPU / TPU pour une formation rapide. Ce n'est pas le meilleur flux de travail, car le prototypage sur un processeur peut être un gros problème, mais il peut être une alternative rentable.

Conclusion

Avec les informations contenues dans cet article de blog, vous devriez être en mesure de déterminer quel GPU vous convient. En général, je vois trois stratégies principales (1) rester avec votre GPU GTX 1070 ou supérieur, (2) acheter un GPU RTX, (3) utiliser une sorte de GPU pour le prototypage, puis former votre modèle sur des TPU ou des GPU en nuage en parallèle .

Conseils TL; DR

Meilleur GPU global: RTX 2070
GPU à éviter: Toute carte Tesla; toute carte Quadro; toute carte Founders Edition; Titan RTX, Titan V, Titan XP
Rentable mais cher: RTX 2070
Rentable et pas cher: RTX 2060, GTX 1060 (6 Go).
J'ai peu d'argent: GTX 1060 (6 Go)
Je n'ai presque pas d'argent: GTX 1050 Ti (4 Go). Alternativement: CPU (prototypage) + AWS / TPU (formation); ou Colab.
Je fais du Kaggle: RTX 2070. Si vous n'avez pas assez d'argent, optez pour une GTX 1060 (6 Go) ou une GTX Titan (Pascal) d'eBay pour le prototypage et AWS pour la formation finale. Utilisez la bibliothèque fastai.
Je suis un chercheur en vision par ordinateur ou en traduction automatique: GTX 2080 Ti avec la conception du ventilateur. Si vous entraînez de très grands réseaux, obtenez RTX Titans.
Je suis un chercheur en PNL: RTX 2080 Ti utilise 16 bits.
Je veux construire un cluster GPU: C’est vraiment compliqué, vous pouvez trouver quelques idées dans mon billet de blog multi-GPU.
J'ai commencé l'apprentissage en profondeur et je suis sérieux à ce sujet: Commencez avec un RTX 2070. Achetez plus de RTX 2070 après 6 à 9 mois et vous souhaitez toujours investir plus de temps dans l’apprentissage en profondeur. Selon le domaine que vous choisirez ensuite (startup, Kaggle, recherche, apprentissage approfondi appliqué), vendez votre GPU et achetez-en un autre plus approprié après environ deux ans.
Je veux essayer l'apprentissage en profondeur, mais je ne suis pas sérieux à ce sujet: GTX 1050 Ti (4 ou 2 Go). Cela s’intègre souvent dans votre bureau standard et ne nécessite pas de nouveau bloc d’alimentation. Si cela vous convient, n'achetez pas un nouvel ordinateur!

Mise à jour 2019-04-03: Ajout de RTX Titan et GTX 1660 Ti. Mise à jour de la section TPU. Ajout de la discussion sur le matériel de démarrage.
Mise à jour 2018-11-26: ajout d'une discussion sur les problèmes de surchauffe des cartes RTX.
Mise à jour 2018-11-05: Ajout de RTX 2070 et des recommandations mises à jour. Graphiques mis à jour avec des données de performance difficiles. Mise à jour de la section TPU.
Mise à jour 2018-08-21: ajout des RTX 2080 et RTX 2080 Ti; analyse de performance retravaillée
Mise à jour 2017-04-09: Ajout d'une analyse de rentabilité; recommandation mise à jour avec NVIDIA Titan Xp
Mise à jour du 19-03-2017: article de blog épuré; GTX 1080 Ti ajouté
Mise à jour du 23 juillet 2016: ajout de Titan X Pascal et de GTX 1060; recommandations mises à jour
Mise à jour 2016-06-25: section multi-GPU retravaillée; suppression de la section de mémoire de réseau neuronal simple, qui n'est plus pertinente; section de mémoire convolutionnelle étendue; section AWS tronquée pour ne plus être efficace; ajouté mon opinion sur le Xeon Phi; ajout de mises à jour pour la série GTX 1000
Mise à jour 2015-08-20: Ajout d'une section pour les instances AWS GPU; ajouté GTX 980 Ti à la relation de comparaison
Mise à jour 2015-04-22: GTX 580 n'est plus recommandé; ajout de relations de performance entre les cartes
Update 2015-03-16: Recommandations de GPU mises à jour: GTX 970 et GTX 580
Mise à jour 2015-02-23: Recommandations de GPU et calculs de mémoire mis à jour
Mise à jour 2014-09-28: ajout d'une emphase sur l'exigence de mémoire des CNN

Remerciements

je veux remercier Mat Kelcey pour m'aider à déboguer et à tester du code personnalisé pour la GTX 970; Je tiens à remercier Sander Dieleman de m'avoir fait prendre conscience des lacunes de mon conseil en matière de mémoire GPU pour les réseaux convolutionnels; Je tiens à remercier Hannes Bretschneider d’avoir signalé les problèmes de dépendance logicielle du GTX 580; et je tiens à remercier Oliver Griesel d'avoir signalé les solutions de bloc-notes pour les instances AWS. Je tiens à remercier Brad Nemire de m'avoir fourni un Titan RTX à des fins d'analyse comparative.

<! –

->

Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.