Par Timothy O’Hear

L’apprentissage machine (Machine Learning ou ML) nécessite une très forte puissance de calcul. Le matériel existant des entreprises est rarement adapté à ce besoin et une évolution de l’infrastructure informatique sera nécessaire.

Pour la formation initiale d’un réseau neuronal il faut passer en boucle des dizaines de milliers (voir des millions) de données. A chaque boucle le réseau neuronal s’améliore jusqu’à à atteindre la performance souhaitée (ou à plafonner). Par exemple pour apprendre à un réseau neuronal à distinguer un chien d’un chat il faudra lui montrer 10’000 images de chien et 10’000 images de chat, et il devra voir chaque image des centaines voir des milliers de fois. Pour des cas « real-world » sur du matériel performant le temps de formation peut varier entre 1 heure et 3 mois (…).

Sur un nouveau problème on devra expérimenter avec des architectures de réseaux neuronaux différentes et à chaque fois attendre un certain temps de formation pour constater l’efficacité de la solution. On peut en revanche se faire une idée plus rapidement que pour une formation « totale ».

Une fois le réseau formé il peut être déployé en production. Dans cette situation le réseau reçoit une donnée à la fois, par exemple une image, et doit donner une réponse. On parle alors d’inférence. L’inférence
nécessite massivement moins de puissance de calcul. Cela bien entendu en fonction de la fréquence de sollicitation du réseau neuronal.

Enfin on sera certainement amené à re-entraîner le réseau, par exemple avec des cas en production où il s’est trompé. Cette reformation est typiquement 10 à 100x moins onéreuse que la formation initiale.

Ce cycle de vie : expérimentation – formation – inférence –re-formation nécessite du matériel adapté à chaque étape.

GPU de gamers

Paradoxalement une des plus grandes avancées de l’apprentissage machine est arrivée grâce aux gamers. Il s’avère que le type de calcul nécessaire pour animé un monde virtuel à 60 images par secondes est très proche de celui nécessaire à l’apprentissage machine. De plus, de même que les jeux vidéo, l’apprentissage machine n’a pas besoin de la très haute précision de processeurs de calcul scientifiques. La disponibilité ces dernières années de cartes graphiques 3D incroyablement performantes à des prix accessibles à été une incroyable aubaine pour les chercheurs en AI.

Aujourd’hui il est impensable de faire de l’apprentissage machine, même pour s’initier, sans une de ces cartes, appelées aussi GPUs (Graphical Processing Units). Un GPU sera 100x plus rapide qu’un processeur normal (CPU) pour la formation des réseaux et 10x plus rapide pour l’inférence.

Quels GPU ?

Un GPU oui, mais pas n’importe lequel : la marque Nvidia, grâce à sa librairie de calcul CUDA, domine totalement le marché des cartes d’apprentissage machine depuis des années. Si AMD et Intel tentent une
réplique ils sont encore loin du compte.

Nvidia propose 5 familles de cartes:

GeForce : jeux vidéos
Titan : chercheurs
Quadro : stations de travail
Tesla : serveurs
Jetson : systèmes embarqués / IOT

De véritables mini-ordinateurs au même titre qu’un Raspberry Pi

Ce sont les cartes de la gamme GeForce qui porté la révolution ML. A performance comparable les cartes Titan coûtent 2x plus, les Quadro 4x plus et les cartes Tesla 8x plus. Il y a de nombreuses raisons à ces différences de prix – certaines techniques, certaines plus arbitraires – mais pour l’expérimentation et la formation de systèmes d’apprentissage machine ce sont le plus souvent les GeForce qui sont utilisés.

Si l’argent est sans objet ou que la mémoire maximum de la carte est importante les Titan ou les Quadro peuvent aussi faire sens pour la formation. Enfin la performance de formation absolue est généralement
atteinte avec un multitude cartes Tesla dans un Data Center, mais les budgets sont tout autre.

L’inférence et la reformation en production se font généralement en data center et la donne change :

La licence de Nvidia prohibe désormais l’utilisation des cartes GeForce et Titan en data center (sauf pour le minage de bitcoin…)

La fiabilité des cartes Geforce est en théorie moindre que les cartes Quadro et Tesla.

La performance nécessaire pour l’inférence est 10x plus basse que pour la formation. Une carte moins performante, voir un CPU, suffit.

Ainsi pour ces utilisations une carte Quadro ou Telsa est généralement préférée.

Jetson
La famille Jetson est un monde à part, ce sont des mini-ordinateurs complets – comparables à un Raspberry Pi – intégrants la technologie de calcul Nvidia. Les Jetson sont optimisés pour la robotique et les objets
intelligents (Internet-of-things ou IOT).

Nvidia
Les cartes Nvidia se déclinent sur 4 Générations technologiques nommées par ordre alphabétique chronologique d’après des scientifiques célèbres:

* Kepler (2014)
* Maxwell (2015)
* Pascal (2016)
* Turing / Volta (2017-2018)

Les cartes Turing et Volta introduisent les « tensor cores » qui optimisent les calculs 16-bit en « demi-précision », elles permettent ainsi des gains en performance très significatifs par rapport aux générations
précédentes.  Si à l’achat on ne trouve pratiquement plus que des cartes Turing/Volta, le choix sur les services cloud est bien plus varié. La différence entre une instance Maxwell et Volta est gigantesque et à prendre en compte en comparant les services.

Cloud ou matériel propre ? Expérimentation et Formation

Pour l’expérimentation et la formation il est préférable pour un ingénieur IA d’avoir accès à au moins 2 GPUs. D’une part les longues formations peuvent être réparties simplement sur plusieurs GPUs, d’autre
part il est pratique d’avoir un GPU libre pour expérimenter pendant que l’autre GPU forme.

Les cartes possédant moins de 8Gb de mémoire sont à éviter. Le 2080 ti est recommandé pour sa performance, mais aussi ses 11Gb de mémoire. En effet les modèles 1080 ti et 2080 ti sont les plus courants chez les chercheurs et certains travaux ne tournent pas en l’état sur des GPU avec moins de mémoire.  Le 2070 est à privilégier pour son prix moindre et son profile thermique plus frugal.

Il est aisé de construire soi-même une machine équipée 2x RTX 2080 ti pour 5’000.- (voir encadré), soit un coût d’environ 200.- par mois amorti sur 2 ans.

Très peu de fabricants vendent des machines multi-GPU à base de GeForce (www.lambdalabs.com <http://www.lambdalabs.com>  est une exception notoire) et le surcoût par rapport à une fabrication propre peut être important.

Si l’on considère l’achat d’une machine dans les gammes « station de travail » équipée de plusieurs GPUs Quadro le coût est 2-3x plus élevé qu’une fabrication Geforce à performance égale.

Au mois les services Cloud sont entre 4 et 12x plus chères qu’une machine fabriquée, selon que l’on prend une solution à base de Geforce chez LeaderGPU ou à base de Tesla chez les principaux fournisseurs Cloud. Bien entendu cela inclut tout une grand nombre d’autres services, mais ils ne sont pas particulièrement utiles pour la formation.

Cela dit il est rare qu’une machine de formation tourne 24/7/365 et une machine Cloud peut être louée à la minute (chez les fournisseurs Cloud principaux). Toutefois même si elle ne tourne que pendant les heures
ouvrables le coût reste d’environ 2-3x celui d’une machine propre.

Certains fournisseurs cloud proposent des machines « sans garantie de disponibilité » à des tarifs nettement plus bas (Google Preemptibleinstances, Amazon Spot instances, Azure Low Priority VM). L’accès à ces
machines peut être coupée à tout moment mais cela n’est pas nécessairement un problème pour une formation de longue durée. Choisir d’utiliser ce typede machines demande toutefois la mise en place d’une  architecture appropriée et serait une distraction malvenue pour les premiers projets.

En conclusion le montage d’une machine est généralement préférable pour la formation et l’expérimentation. A surveiller toutefois l’offre des fabricants spécialisés qui pourrait s’approcher du prix des composants.

S’il faut effectuer une grosse formation avec un délai court une solution Cloud louée quelques jours est idéale.

Cloud ou matériel propre ? Inférence et reformation

Pour l’inférence à la reformation : un serveur avec le niveau de redondance souhaité coutera entre 10’000.- et 50’000.- selon qu’il est équipé de cartes Quadro ou Tesla, pour un amortissement mensuel entre 400.-
et 2’000.-/mois.

Astuce : Parfois les modèles les plus intéressants sont dans lagamme « Stations de Travail Rackables » plutôt que « Serveurs »

Si cela reste 2-3x moins chers que les tarifs des fournisseurs Cloud, cette fois-ci la maintenance, redondance, disponibilité et évolutivité incluse avec les systèmes cloud amène une vraie plus-value.

De plus pour la reformation il est possible d’utiliser un serveur Cloud que pendant quelques heures par jour/semaine.

La politique de protection des données doit aussi être prise en considération. A notre connaissance Exoscale est le seul service Cloud suisse à offrir des GPU et uniquement des Tesla P100/V100. Si Google a un datacenter à Zurich ils n’y proposent pas d’instances GPU. Microsoft lance cette année des datacenters Azure à Zurich et Genève soumis au droit suisse, mais reste à voir si des instances GPU y seront proposées.

En théorie il est préférable d’utiliser des GPUs cloud pour l’inférence et la reformation plutôt que de déployer sur ses propres serveurs. Cependant l’offre actuelle en suisse est limitée. Une stratégie initiale peut être d’effectuer l’inférence sur les CPUs d’un serveur traditionnel et d’effectuer le reformation sur le même matériel que la formation.

Linux ou Windows ?
Pour l’expérimentation une machine physique sous Linux ou Windows est plus ou moins équivalente, avec une préférence pour Linux car c’est le système d’exploitation le plus utilisé par les chercheurs dans ce domaine.

Pour la formation une machine Linux ou Windows auront sensiblement la même performance.

Pour le déploiement sur des serveurs  il y a de fortes limitations avec des serveurs Hyper-V Windows et un hyperviseur Linux est fortement
recommandé :
Seuls les containers Docker Linux de Nvidia tournant sur un hôte Linux ont accès au GPU

Un hyper-V Windows ne pourra donner accès à ses machines virtuelles qu’à des cartes Tesla via le système DDA

En revanche un hyperviseur Xen ou KVM sur un hôte linux pourra donner accès à tout GPU à une machine virtuelle Windows

Sur Linux le système vGPU de nvidia permet de diviser une carte physique Tesla ou Quadro RTX 6000/8000 en plusieurs GPUs virtuels et de les répartir sur plusieurs machines hôtes

Conclusion

Le deep learning est la pointe de la technologie informatique et cela se ressent dès que l’on veut s’équiper correctement. Que ce soit pour le matériel interne ou le data center nous sommes loin de solutions «off-the-shelf » faciles, évidents et abordables. Le matériel existant en entreprise est rarement adapté et un investissement est nécessaire pour intégrer correctement ce type de projet. Avec un important budget à disposition il est possible de s’appuyer sur les fournisseurs traditionnels, dans le cas contraire il faut sortir de la zone de confort pour obtenir la même puissance de calcul pour un investissement 4x plus bas. Dans tous les cas ce domaine demande une veille technologique et une évaluation régulière de l’offre matériel et des services Cloud.

Les TPUs de Google

Face à l’importance stratégique de l’AI et l’hégémonie de Nvidia Google a développé aes propres accélérateurs de calcul ML. Appelés « TPU » pour « Tensor Processing Unit » ces cartes sont totalement optimisées pour l’apprentissage machine moderne.

Un TPUv2 est un peu plus rapide qu’un Tesla V100, Un TPUv3 est bien plus rapide qu’un V100. Toutefois les prix sont aussi bien plus élevés qu’un V100.

L’utilisation d’un TPU limite les librairies utilisables. Les TPUs sont principalement conçus pour Tensorflow (la librairire ML de Google) et dans tous les cas il faut s’attendre à adapter le code.

Comment s’initier à coût raisonnable ?

* Construire une version mono-GPU de notre compact box : 1’800.-
* Ajouter un GPU Nvidia a un ordinateur existant : 550.-
* Louer un système GTX 1080 chez Hetzner pour 120.-/mois
* Travailler uniquement sur des notebooks Python dans Google

Colaboratory : un Tesla K80 ou un TPUv2 est mise à disposition gratuitement

Ce n’est pas pratique pour du travail sérieux, mais pour apprendre c’est une performance incroyable qui est offerte.

OpenCV et l’inférence sur CPU

La librairie OpenCV, focalisée sur la Vision depuis des années a une fonctionnalité méconnue : elle permet d’importer les réseaux neuronaux dans les formats standards et d’en exécuter l’inférence sur un CPU avec d’excellentes performances.

En effet cette librairie est largement soutenue par Intel qui a fait de la performance sur CPU sa priorité, alors que dans les autres librairies ML la priorité d’optimisation est le GPU.

Do it yourself
Nous avons dimensionné 3 machines idéales pour le deep learning en s’appuyant sur les tarifs en vigueur chez les revendeurs habituels en suisse

Big Box

* 4 x RTX 2080 ti
* Intel i9-9900X (10 cœurs, 3.5Ghz)
* 128 Gb RAM
Total = 9’110.-

Workstation

* 2 x RTX 2080 ti
* Intel i7-9700K (8 cœurs, 3.6 Ghz)
* 64 Gb RAM
Total = 4’654.-

Compact Box

* 2 x RTX 2070
* Intel i7-8700 (6 coeurs, 3.2 Ghz)
* 32 Gb RAM
Total = 2’437.-

Considérations particulières

Lorsque les GPUs sont collés les uns aux autres il faut utiliser une ventilation de type blower, mais avec un espace entre deux GPUs une ventilation classique fonctionne mieux.

La capacité du bloc d’alimentation doit être correctement dimensionnée car les GPUs consomment énormément

Le nombre de voies PCI-E x16/x8 est important pour du multi-GPU, cela affecte le choix de la carte mère et du processeur pour du 4 x GPUs. Le refroidissement est une considération majeure

Big Box

* 4x2080ti : 1’343.- x 4

https://www.digitec.ch/fr/s1/product/gigabyte-geforce-rtx-2080-ti-turbo-11g-
11go-haut-de-gamme-cartes-graphiques-10398619

https://www.digitec.ch/fr/s1/product/asus-geforce-rtx-2080-ti-turbo-11go-hau
t-de-gamme-cartes-graphiques-9423669

https://www.digitec.ch/fr/s1/product/pny-geforce-rtx-2080-ti-cartes-graphiqu
es-10112453

https://www.digitec.ch/fr/s1/product/zotac-gaming-rtx-2080-ti-blower-11go-ha
ut-de-gamme-cartes-graphiques-10042976

https://www.digitec.ch/fr/s1/product/gigabyte-geforce-aorus-rtx-2080-ti-turb
o-11g-11go-haut-de-gamme-cartes-graphiques-10355668

Case : Corsair Carbide Air 540 : 128.-

https://www.digitec.ch/fr/s1/product/corsair-carbide-air-540-cube-boitiers-p
c-452863

https://www.digitec.ch/fr/s1/product/corsair-carbide-air-740-midi-tower-boit
iers-pc-5895318

Alimentation Enermax EPM1700EGT (1700W) : 319.-

https://www.digitec.ch/fr/s1/product/enermax-epm1700egt-1700w-alimentations-
pc-5814481

https://www.digitec.ch/fr/s1/product/corsair-ax1600i-1600w-alimentations-pc-
7194615#cm-bar

Stockage Principal : Samsung 970 EVO Plus 2Tb : 499.-

<https://www.digitec.ch/fr/s1/product/samsung-970-evo-plus-2000go-m2-2280-ss
d-10339167?tagIds=76-535>
https://www.digitec.ch/fr/s1/product/samsung-970-evo-plus-2000go-m2-2280-ssd
-10339167?tagIds=76-535

Carte mère: Asus WS X299 Sage : 631.-

https://www.digitec.ch/fr/s1/product/asus-ws-x299-sage10g-lga-2066-intel-x29
9-ssi-ceb-cartes-meres-9104875

Processeur : Intel i9-9900X (10 cœurs 9th gen, 3.50GHz, 165W) :
1’022.-

<https://www.digitec.ch/fr/s1/product/intel-i9-9900x-lga-2066-350ghz-process
eurs-10051124>
https://www.digitec.ch/fr/s1/product/intel-i9-9900x-lga-2066-350ghz-processe
urs-10051124

<https://www.digitec.ch/fr/s1/product/intel-i9-9820x-lga-2066-330ghz-process
eurs-10051125>
https://www.digitec.ch/fr/s1/product/intel-i9-9820x-lga-2066-330ghz-processe
urs-10051125

RAM : 128Gb Corsair Vengeance LPX (4x, 16Go, DDR4-2666, DIMM 288):
730.-

https://www.digitec.ch/fr/s1/product/corsair-vengeance-lpx-4x-16go-ddr4-2666
-dimm-288-memoires-vives-5834585

2nd Hard drive : Seagate BarraCuda Pro 8Tb: 260.-

https://www.digitec.ch/fr/s1/product/seagate-barracudapro-8to-35-ordinateur-
de-bureau-disques-durs-8587264

CPU Cooler : Corsair Hydro Series H115i: 149.-

<https://www.digitec.ch/fr/s1/product/corsair-h115i-rgb-platinum-ventirads-p
rocesseurs-9923490>
https://www.digitec.ch/fr/s1/product/corsair-h115i-rgb-platinum-ventirads-pr
ocesseurs-9923490

TOTAL: 9’110.-

Workstation

* 2x2080ti : 1’259.- x 2 (non-blower)

https://www.digitec.ch/fr/s1/product/asus-geforce-rtx-2080-ti-dual-o11g-11go
-haut-de-gamme-cartes-graphiques-9423668

* Case : Corsair Carbide Air 540 : 128.-

https://www.digitec.ch/fr/s1/product/corsair-carbide-air-540-cube-boitiers-p
c-452863

* Alimentation : Corsair HX1000i (1000W) : 199.-

https://www.digitec.ch/fr/s1/product/corsair-hx1000i-1000w-alimentations-pc-
5618665

https://www.digitec.ch/fr/s1/product/corsair-hx1000-1000w-alimentations-pc-6
145647

* Stockage Principal : Samsung 970 EVO Plus 1Tb : 239.-

<https://www.digitec.ch/fr/s1/product/samsung-970-evo-plus-1000go-m2-2280-ss
d-10339166?tagIds=76-535>
https://www.digitec.ch/fr/s1/product/samsung-970-evo-plus-1000go-m2-2280-ssd
-10339166?tagIds=76-535

* Carte mère: ASUS WS Z390 Pro (LGA 1151, Intel Z390, ATX) : 422.-

https://www.digitec.ch/fr/s1/product/asus-ws-z390-pro-lga-1151-intel-z390-at
x-cartes-meres-10211160

* Processeur : Intel Core i7-9700K (9th gen, 8 cores, 3.6GHz, 95W) : 449.-

<https://www.digitec.ch/fr/s1/product/intel-core-i7-9700k-lga-1151-360ghz-un
locked-processeurs-9598352>
https://www.digitec.ch/fr/s1/product/intel-core-i7-9700k-lga-1151-360ghz-unl
ocked-processeurs-9598352

* RAM: 64Gb: Corsair Vengeance LPX (4x, 16Go, DDR4-2666, DIMM 288): 365.-

https://www.digitec.ch/fr/s1/product/corsair-vengeance-lpx-4x-16go-ddr4-2666
-dimm-288-memoires-vives-5834585

* 2nd Hard drive : Seagate BarraCuda Pro 4Tb: 185.-

<https://www.digitec.ch/fr/s1/product/seagate-barracuda-pro-4to-35-ordinateu
r-de-bureau-disques-durs-6888028>
https://www.digitec.ch/fr/s1/product/seagate-barracuda-pro-4to-35-ordinateur
-de-bureau-disques-durs-6888028

* CPU Cooler : Corsair Hydro Series H115i: 149.-

<https://www.digitec.ch/fr/s1/product/corsair-h115i-rgb-platinum-ventirads-p
rocesseurs-9923490>
https://www.digitec.ch/fr/s1/product/corsair-h115i-rgb-platinum-ventirads-pr
ocesseurs-9923490

TOTAL : 4’654.-

La carte mère supporte 4 GPUs, si un upgrade est envisagé il faudrait utiliser des cartes blower (Comme le big box) et une alimentation
de 1’500W+

Compact Box

* 2×2070 : 559.- x 2

https://www.digitec.ch/fr/s1/product/zotac-geforce-rtx-2070-blower-8go-haut-
de-gamme-cartes-graphiques-9891496

https://www.digitec.ch/fr/s1/product/asus-geforce-rtx-2070-turbo-8go-haut-de
-gamme-cartes-graphiques-9851175

https://www.digitec.ch/fr/s1/product/pny-gf-rtx-2070-8gb-blower-gddr6-cartes
-graphiques-10211533

* Case : Corsair Carbide Air 240 : 118.-

https://www.digitec.ch/fr/s1/product/corsair-carbide-air-240-cube-boitiers-p
c-2754725

* Alimentation : Corsair HX850i (850W) : 169.-

https://www.digitec.ch/fr/s1/product/corsair-hx850i-850w-alimentations-pc-34
57984

https://www.digitec.ch/fr/s1/product/corsair-rm850x-2018-rm850x-2018-850w-al
imentations-pc-7678691

https://www.digitec.ch/fr/s1/product/corsair-vs650-2018-650w-alimentations-p
c-7776802 (59.- 650w for 1 2070)

* Stockage Principal : Samsung 970 EVO Plus 512Gb: 125.-

<https://www.digitec.ch/fr/s1/product/samsung-970-evo-plus-500go-m2-2280-ssd
-10339165?tagIds=76-535>
https://www.digitec.ch/fr/s1/product/samsung-970-evo-plus-500go-m2-2280-ssd-
10339165?tagIds=76-535

* Carte mère: ASUS TUF Z390M-Pro Gaming (LGA 1151, Intel Z390): 175.-

<https://www.digitec.ch/fr/s1/product/asus-tuf-z390m-pro-gaming-wifi-lga-115
1-intel-z390-matx-cartes-meres-9853836>
https://www.digitec.ch/fr/s1/product/asus-tuf-z390m-pro-gaming-wifi-lga-1151
-intel-z390-matx-cartes-meres-9853836

* Processeur: Intel Core i7-8700 (6 coeurs 3.2Ghz, Coffee Lake 8th gen – 65W): 337.-

<https://www.digitec.ch/fr/s1/product/intel-core-i7-8700-lga-1151-320ghz-pro
cesseurs-6448575>
https://www.digitec.ch/fr/s1/product/intel-core-i7-8700-lga-1151-320ghz-proc
esseurs-6448575

* RAM: 32Gb: Corsair Vengeance LPX (2x, 16Go, DDR4-2666, DIMM 288): 187.-

https://www.digitec.ch/fr/s1/product/corsair-vengeance-lpx-2x-16go-ddr4-2666
-dimm-288-memoires-vives-5342954

* 2nd Hard drive : Seagate BarraCuda (2To, 2.5″): 89.-

<https://www.digitec.ch/fr/s1/product/seagate-barracuda-2to-25-ordinateur-po
rtable-disques-durs-5961129>
https://www.digitec.ch/fr/s1/product/seagate-barracuda-2to-25-ordinateur-por
table-disques-durs-5961129

* CPU Cooler : Corsair Hydro Series H100i Pro : 119.-

<https://www.digitec.ch/fr/s1/product/corsair-h100i-pro-520cm-ventirads-proc
esseurs-9064012?utm_content=9064012&utm_medium=cpc&utm_campaign=preisverglei
ch&utm_source=toppreise&pcscpId=1>
https://www.digitec.ch/fr/s1/product/corsair-h100i-pro-520cm-ventirads-proce
sseurs-9064012

TOTAL: 2’437.-

Il serait aussi possible d’utiliser 2×2080 ti dans ce cas prévoir une alimentation de 1000W

Pour démarrer avec un seul GPU et sans 2ème disque : 1’789.-