18 févr. 2019
Aujourd’hui, j’ai appris ce qu’est un ordinateur
Transformation numérique, Technologie
Nous venons tout juste de recevoir notre cadeau de Noël en retard, un ordinateur Lambda Quad (et un t-shirt… jaune fluo… 2XL… Merci Lambda Labs! Beaucoup trop grand… mais très confortable!). Il s’agit d’un cadeau (super cadeau) que l’équipe d’IA (intelligence artificielle) de Vooban pourra utiliser pour créer des algorithmes et des modèles de machine learning / deep learning.
Avez-vous déjà ressenti des papillons dans le ventre à la vue d’un simple ordinateur? Moi non plus. Mais plus maintenant! En voyant le Lambda pour la première fois, j’ai ressenti exactement la même chose que ce que je devrais ressentir lorsque j’entre dans une pièce remplie de chaussures (parce que je suis une femme sophistiquée… Une vraie femme.). Le Lambda ressemble à un ordinateur de gaming (boîtier blanc avec un design épuré, une grande fenêtre sur le côté qui permet de voir les pièces qui se trouvent à l’intérieur, pleins de ventilateurs partout, des lumières de différentes couleurs…). On parle d’une machine qui a assez de puissance pour résoudre tous les problèmes de mathématiques jamais vus, et ce, en l’espace de seulement quelques secondes.
Depuis que nous nous sommes lancés en intelligence artificielle, nous utilisons nos ordinateurs et un GPU externe sur le cloud pour entraîner nos algorithmes de machine learning. Cependant, nous avons rapidement atteint le point où nos outils n’étaient plus en mesure de gérer la complexité de notre code et le volume de nos fichiers de données. Avoir recours à un GPU sur le cloud sur de longues périodes de temps aurait été trop dispendieux à long terme, c’est pourquoi acquérir un ordinateur Lambda s’est avéré être une bien meilleure option.
Pour vous donner une idée de ce que cela représente, nous avons récemment entraîné des algorithmes qui ont nécessité 13 heures de calcul sur le Lambda. Si nous avions entraîné ces mêmes algorithmes sur le cloud, cela nous aurait nécessité beaucoup plus de temps. En fait, même si le Lambda coûte près de 20,000$, il est clair pour nous que cet investissement sera sans aucun doute rentable à court moyen terme.
Qu’est-ce qui rend le Lambda si extraordinaire
“Lambda est une entreprise qui offre des infrastructures en IA avec des puissances de calculs qui permettent d’accélérer le progrès humain.”
Depuis 2012, Lambda fournit des postes de travail, des serveurs ainsi que des services cloud pour les gens qui travaillent dans le domaine de l’intelligence artificielle. Parmi leurs clients, on retrouve Apple, Intel, Microsoft, Amazon Research et d’autres grandes entreprises de la sorte. Ça devrait être un ordinateur très puissant! Il sonne comme un ordinateur puissant! Il a les caractéristiques d’un ordinateur puissant!
OS: Ubuntu 18.04
GPUs: 4x NVIDIA RTX 2080 Ti
CPU: Intel Core i9–7920X — 12 cores
RAM: 128GB
SSD: 4TB
HDD: 8 TB
Si ces caractéristiques techniques ne vous disent rien, dites-vous que le Lambda peut atteindre 53 téraflops (donc capable de faire 53 trillions d’opérations seconde), comparativement à un ordinateur de bureau standard qui peut atteindre jusqu’à 22 téraflops (si vous achetez le dernier MAC pour la modique somme minimale de 6,000$…).
Fait intéressant, notre ordinateur Lambda est l’équivalent du ‘’Earth Simulator 2’’ (ES2), un superordinateur qui date de 2002.
machine learning et deep learning
L’intelligence artificielle (IA) est “l’ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l’intelligence humaine (John McCarthy, 1955).” Lorsqu’on parle d’apprentissage machine (machine learning), on parle d’un sous-domaine de l’IA, soit celui qui traite de la partie apprentissage des programmes. L’apprentissage profond (deep learning) est un sous-domaine du machine learning.
En fait, une simple définition du terme “machine learning” serait ‘’des algorithmes qui analysent des données, apprennent de ces données et appliquent ce qu’ils ont appris afin de prendre des décisions informées’’. Cela signifie que nous concevons des programmes et des modèles qui sont en mesure d’apprendre au moyen de traitement de données. On peut comparer cela à un enfant qui apprend à reconnaître des couleurs, des formes et des objets à force de lui montrer des images.
Le deep learning agit sensiblement de la même manière, mais de façon beaucoup plus complexe. Il utilise une structure d’algorithmes (des réseaux de neurones artificiels) qui agit sur plusieurs autres algorithmes (représentée souvent en couches) afin d’émettre des conclusions et prendre des décisions. Nous avons pu voir ce que le deep learning est en mesure de faire lorsque l’IA d’AlphaGo a battu Lee Sedol (18 fois champion du monde) en 2016. Pour ceux qui ne connaissent pas AlphaGo, c’est un programme informatique développé par Alphabet (Google) afin de jouer au jeu Go qui est reconnu pour constituer un défi de taille dans le domaine de l’intelligence artificielle. D’ailleurs, jusqu’en 2015, l’IA pouvait seulement atteindre le niveau amateur de ce jeu. https://deepmind.com/research/alphago/
La différence entre un CPU et GPU
Un CPU (Central Processing Unit ou Unité Centrale de Traitement) est le processeur principal de votre ordinateur conçu pour effectuer des calculs standards et faire fonctionner la majorité de votre matériel informatique. C’est un composant qu’on appelle “latence optimisée” (ou latency optimized). Cela signifie qu’il a la capacité de faire des calculs rapidement sur de petites quantités de données (c-a-d, aller chercher une petite quantité de mémoire dans la mémoire vive (RAM) rapidement), mais qu’il a de la difficulté à travailler avec de larges quantités de données.
Le GPU (Graphic Processing Unit ou Processeur Graphique) est un type de microprocesseur conçu pour rapidement effectuer le traitement d’images et le calcul d’instructions en parallèle (thread parallelism ou parallélisme). On dit qu’il est ‘’bande passante optimisée’’ (ou bandwidth optimized), ce qui veut dire qu’il peut utiliser une plus grosse quantité de mémoire provenant de la mémoire vive à la fois, mais à défaut d’être moins rapide que le CPU. Néanmoins, puisqu’il est conçu pour faire du parallélisme, le GPU peut supporter le traitement de multiples calculs en même temps. Il a la capacité d’utiliser des milliers de coeurs (ou cores) tandis que le CPU peut seulement utiliser un maximum de 48 coeurs pour un serveur ou un maximum de 8 coeurs s’il s’agit d’un CPU d’ordinateur standard destiné aux consommateurs.
Lorsque l’ordinateur nécessite la manipulation d’information numérique, le CPU répond aux instructions en prenant de petites quantités de mémoire dans la mémoire vive pour la ramener dans sa mémoire locale sur ses puces (ou chips), appelées registres (petites mémoires internes rapides). Tous les calculs ou les instructions se passent à cet endroit et sont directement liés à l’unité de contrôle qui se charge de gérer le processeur. En temps normal, la mémoire locale est assez proche de l’unité d’exécution ce qui signifie que peu de chemin est parcouru par le CPU. Demander une plus grande quantité de mémoire correspondrait à demander au CPU de franchir une plus grande distance, donc réduire son temps d’accès à la RAM. Ce qui est merveilleux avec le GPU, c’est qu’il contient de multiples registres pour chaque coeur qu’il utilise. Ainsi, plus un programme demande de mémoire d’exécution, plus les avantages de travailler avec un GPU deviennent significatifs.
À titre d’exemple, imaginez que je souhaite prendre plusieurs photos de ma poutine sans gluten, sans sel, sans sucre pour la montrer à mes amis. J’ai un appareil photo Polaroid (CPU) qui prend des photos et les imprime instantanément. J’ai aussi un appareil photo régulier (GPU) qui me permet de prendre plusieurs photos, mais dont je dois développer moi-même les films si je souhaite montrer les photos à mon entourage. J’aimerais avoir mille photos. Utiliser le Polaroid me prendrait beaucoup trop de temps étant donné que je ne peux imprimer qu’une seule photo à la fois. Par conséquent, utiliser un appareil photo standard serait beaucoup plus efficace puisque je peux développer plusieurs photos en même temps (au moins 24 photos à la fois!). Imaginez maintenant que j’ai plusieurs appareils photo et que je peux développer plusieurs films en même temps… C’est exactement le même principe qui s’applique au CPU versus le GPU.
Et pour un exemple plus visuel…
Pourquoi utiliser un GPU en deep learning ?
Parce que la structure d’un réseau de neurones profond (ou deep neural network) est constituée de couches par-dessus couches de milliers de neurones artificiels identiques qui effectuent des calculs matriciels. Nous pouvons résoudre nos opérations en parallèle ce qui signifie calculer nos matrices indépendamment, puis les rassembler par la suite. Dans certaines applications où nous travaillons avec des images (réseaux de neurones convolutifs), les processeurs graphiques du GPU accélèrent les calculs (effets lumineux, effets 3D, etc.).
Aussi, le deep learning nécessite beaucoup d’expérimentations puisqu’on doit tester différentes architectures et différents paramètres où un seul petit changement dans le code requiert de recommencer l’entraînement de nos algorithmes. C’est pourquoi le GPU est si intéressant pour les experts en intelligence artificielle, puisqu’il permet de littéralement sauver des semaines d’entraînement.
En gros, on peut dire que le machine learning ou le deep learning nécessite un ordinateur énormément puissant pour obtenir des résultats rapidement et travailler efficacement. Vooban s’est équipé d’un Lambda Quad (sans aucun doute l’ordinateur de rêve pour chaque inner ou outer geek de ce monde) dans le but de réaliser beaucoup de projets parfois conventionnels, parfois peu orthodoxes, mais toujours plus créatifs les uns que les autres.
Mais, en fin de compte, la vraie question que tout le monde se pose c’est,
peut-on jouer à Minecraft?
Oui.
Oui, on peut.
~(ツ)~
Si vous avez un projet d’intelligence artificielle, n’hésitez pas à nous écrire!