Construire sa propre machine de Deep Learning



Mis à jour le Oct. 3, 2022, 1:47 p.m.

Si vous voulez apprendre à construire votre propre machine de deep learning, vous êtes au bon endroit.

Le deep learning est très gourmand en calcul. Cependant avoir un processeur avec de nombreux coeur ne vous sera pas vraiment utile. Ici la pièce maîtresse sera le GPU. Mais il faudra choisir les autres pièces en conséquence. C'est parti :) !

 

Depuis 2016 j'ai construit un total de 8 machines de deep learning différentes et, malgré une recherche et un raisonnement minutieux, j'ai fait ma part d'erreurs au niveau matériel (dur à croire, je sais). Dans ce guide, je souhaite partager l'expérience que j'ai acquise au fil des ans afin que vous ne commettiez pas les mêmes erreurs que moi. Ne me remerciez pas, je suis un type sympas.

 

Le GPU:

Comme dit précédemment, si vous construisez ou mettez à niveau votre système pour le deep learning, un GPU est insdispensable et est la pièce maitresse de votre machine si vous voulez faire des choses interessantes.

Le choix de votre GPU est probablement le choix le plus critique pour votre système de deep learning. Il y a trois erreurs principales que vous pouvez faire en choisissant un GPU :

    - mauvais rapport puissance/prix
    - pas assez de mémoire (aïe aïe aïe)
    - mauvais refroidissement. Presque comme une station de minage de crypto xD.

 

Beaucoup se pose la question de la marque du GPU, AMD ou Nvidia. Nvidia domine le deep learning game pour l'instant, donc je vais dans cet article me pencher exclusivement sur cette marque.

Pour un bon rapport coût/performance, je recommande généralement une RTX 3060ti ou 3070 ou une RTX 3080 Ti, la reine restant la 3090 mais elle n'est clairement pas dans le budget de tout le monde. Sinon, les anciennes cartes telles que les GTX 1070, GTX 1080, GTX 1070 Ti et GTX 1080 Ti reste tout à fait correct. J'entraine toujours des modeles sur une 1080ti par exemple et ça fonctionne très bien. Bon, c'est sûr qu'une 3090 à coté la question ne se pose pas, si vous avez les moyens, foncez.

Faites attention à la mémoire requise lorsque vous choisissez votre GPU. Les cartes RTX, qui peuvent fonctionner en 16 bits, peuvent entraîner des modèles deux fois plus grands avec la même mémoire que les cartes GTX. Les cartes RTX ont donc un avantage en termes de mémoire. Choisir des cartes RTX et apprendre à utiliser efficacement les modèles 16 bits vous mènera loin. En général, les exigences en matière de mémoire sont à peu près les suivantes  (les GO ici representent la RAM de votre GPU):
    Recherche qui chasse les scores de pointe : >=11 GO
    Recherche d'architectures intéressantes : >=8 GO
    Kaggle : plus y en a mieux c'est :)

Un autre problème auquel il faut faire attention sont les problèmes de températures et de refroidissement. Si vous voulez placer des GPUs dans des emplacements PCIe situés les uns à côté des autres (en mode rack) , assurez-vous d'acheter des GPUs équipés d'un ventilateur de type souffleur, sinon vos GPUs, en plus de ne pas fonctionner correctement, ne tiendront pas longtemps.

Pour plus d'informations sur les refroidissements GPUs, je vous invite à vous sur cet article, qui explique bien les choses: https://www.thefastcode.com/fr-eur/article/what-s-the-difference-between-a-blower-and-an-open-air-gpu-cooler

 

 

Le Bloc d'alimentation (PSU)

En général, vous voulez un PSU qui soit suffisant pour accueillir tous vos futurs GPUs. Les GPUs deviennent généralement plus économes en énergie au fil du temps ; ainsi, alors que d'autres composants devront être remplacés, un PSU devrait durer longtemps ; un bon PSU est donc un bon investissement.

Vous pouvez calculer les watts nécessaires en additionnant les watts de votre CPU et de vos GPUs avec un supplément de 10% de watts pour les autres composants et comme tampon pour les pics de puissance. Par exemple, si vous avez 4 GPUs avec chacun 300 watts et un CPU avec 150 watts, alors vous aurez besoin d'un PSU avec un minimum de 4×300 + 150 + (4×300)*0.1 = 1485 watts. Donc j'acheterai un PSU de 1500w.

 

Si vous voulez calculer tout ça avec plus de précision, allez ici: https://www.newegg.com/tools/power-supply-calculator/

ou encore ici si vous préférez: https://www.bequiet.com/en/psucalculator

 

Erreur de débutant: la puissance seule ne suffit pas.
Une chose importante à savoir est que même si une alimentation a la puissance requise, elle peut ne pas avoir assez de connecteurs PCIe (à 8 ou 6 broches). Assurez-vous d'avoir suffisamment de connecteurs sur votre alimentation pour qu'elle puisse supporter tous vos GPUs ! C'est une erreur fréquente et que j'ai moi-même faite. J'aurais aimé qu'une bonne âme (telle que moi-même) me vienne en aide XD.

Prenez le temps de vous assurez l'achat d'une alimentation avec un haut niveau d'efficacité énergétique, surtout si vous utilisez de nombreux GPUs et si vous comptez les faire fonctionner plus longtemps. Comment connaitre cette efficacité énergétique? En regardant le niveau de certification. Vous pouvez aller sur ce cours article qui explique ça très bien: https://www.config-gamer.fr/guide-achat/guides-achat-alimentations-pc.html

Pour faire simple, faites attention à la consommation, sinon l'entraînement de votre CNN
Faire tourner un système de 4 GPUs à pleine puissance (1000-1500 watts) pour entraîner un réseau convolutif (vous savez, pour apprendre la classification d'images) avec une alim mal choisie vous allez sentir votre facture d'électricité passer.

Le disque dur:
Je vous recommande un SSD pour votre OS et un disque dur plus classique pour stocker vos jeux de données (souvent volumineux). Un SSD  de 500Go minimum et 2 bon gros tera minimum sur un HDD classique pour le stockage, voilà qui me semble sage.

 

La RAM:

Je vous conseille d'avoir au minimum 32 Go de RAM.

Achetez la RAM la moins chère.
Achetez au moins autant de RAM que pour votre plus grand GPU. Mettez > 32GO
Plus de RAM peut être utile si vous travaillez fréquemment avec de grands ensembles de données. J'ai pour ma part en fonction de mes machines 32Go minimum et 256 Go pr la plus grosse.

 

Le processeur:

Il faut en prendre un suffisamment puissant. 1 à 2 cœurs par GPU, selon la façon dont vous pré-traitez les données. Le processeur doit pouvoir supporter le nombre de GPUs que vous souhaitez utiliser, sinon vous ne pourrez tous les faire tourner en même temps.



Carte mère :
Nous n'avons pas parlé de l'évidente carte mère qui doit bien sûr posséder le nombre d'emplacement GPUs adéquat! Attention tout de même, un GPU occupe généralement 2 slots.

 

Si vous débutez:

Une 3060ti semble être un très bon rapport qualité/prix/performance pour vos débuts. Commencez tranquillement, c'est une très bonne carte. 32 Go de RAM, carte mère avec plusieurs slot pour pouvoir rajouter une deuxieme cartes. Voilà qui sera efficace. :)

 

 

N'achetez pas ces GPUs:

Je ne recommande pas d'acheter plusieurs RTX Founders Editions (n'importe lesquelles) ou RTX Titans à moins que vous n'ayez des extensions PCIe pour résoudre leurs problèmes de refroidissement. Ils seront tout simplement trop chauds, et leurs performances seront bien inférieures à ce que je rapporte dans les tableaux ci-dessus. Les GPU 4x RTX 2080 Ti Founders Editions dépasseront facilement 90C et fonctionneront plus lentement que les GPU RTX 2070 correctement refroidis.

En règle générale, je vous recommande pas les versions Nvidia 20xx

Je ne recommande pas d'acheter des Tesla V100 ou A100 à moins d'y être contraint (besoin d'un GPU virtualisable par exemple) ou à moins de vouloir entraîner de très grands réseaux sur un énorme cluster de GPUs - ces GPUs ne sont tout simplement pas très efficaces à l'heure actuelle.

 

 

 

 

Voilà, nous avons vu une bonne dose de prérequis hardware pour le deep learning et la data science en général.
A bientôt pour un prochain article!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    Construire sa propre machine de Deep Learning

    Installer jupyter notebook

    Comment créer un environnement virtuel sur Ubuntu avec Pipenv

    Comment créer un environnement virtuel sur W10?

    Comment installer SublimeText sur Ubuntu?

    Comment installer Pytorch sur Ubuntu?

    Comment installer OpenCV sur Windows10?

    Comment installer OpenCV sur Ubuntu?