Transcript
00:00:00Mojo, le langage de programmation, vient de passer en version 1.0, et le timing est un peu bizarre.
00:00:05Il a été lancé avec un compilateur fermé, et sept jours plus tard, il est devenu open source,
00:00:09et Qualcomm venait tout juste de racheter l'entreprise.
00:00:12Mais oublions tout cela une seconde.
00:00:14Le vrai point fort de Mojo, c'est d'offrir du code semblable à Python sans sacrifier la vitesse du C++ ou de CUDA.
00:00:20Voyons donc si c'est vraiment à la hauteur.
00:00:27Tout l'intérêt de Mojo tient en une question.
00:00:30Et si vous pouviez écrire du code qui ressemble et se lit exactement comme Python,
00:00:34mais en exécutant les parties cruciales sans abandonner le C++ ou CUDA ?
00:00:39Un seul langage lisible à la fois sur CPU et GPU.
00:00:42C'est tout l'enjeu ici.
00:00:43Et maintenant que Mojo est enfin en 1.0, je voulais voir quelle part de tout cela est bien réelle.
00:00:49Alors avant de parler de Qualcomm, d'open source ou autre, passons directement à la pratique.
00:00:53Si vous aimez les outils de code pour accélérer votre flux de travail, n'hésitez pas à vous abonner.
00:00:57Nous publions des vidéos en continu.
00:00:59Je vais faire ça sur ma machine, mais ce ne sera pas un tutoriel complet sur Mojo.
00:01:03Si vous ne l'avez jamais vu, oui, ça ressemble effectivement à Python,
00:01:07mais vous allez voir quelques différences majeures.
00:01:10Sur le côté gauche, c'est du Python.
00:01:12Sur le côté droit, c'est du Mojo.
00:01:13C'est la même boucle, la même grille, la même limite d'itérations.
00:01:17Je ne vais pas entrer dans les détails mathématiques.
00:01:20Regardez les deux boucles while.
00:01:21Elles font exactement la même chose.
00:01:23Nous allons d'abord exécuter Python.
00:01:26Bon, très bien.
00:01:27Ça a tourné.
00:01:28Ça s'est exécuté.
00:01:28Maintenant, voyons le même programme compilé avec Mojo.
00:01:32Encore une fois, exécutons-le.
00:01:35Et boum.
00:01:35Voilà.
00:01:36Les sommes de contrôle ne correspondent pas au dernier chiffre près.
00:01:39Elles diffèrent de quelques centaines sur un quart de million.
00:01:43Python fait une multiplication puis une addition.
00:01:45La compilation Mojo peut fusionner cela en une seule instruction.
00:01:49Quelques pixels demandent une itération supplémentaire.
00:01:51Considérez les secondes ici comme le vrai chiffre.
00:01:54Et ce n'est pas du NumPy.
00:01:55Ce n'est pas un modèle.
00:01:56La performance ne se résume pas à une boucle CPU plus rapide.
00:02:00Vous pouvez commencer par Python parce que c'est simple.
00:02:03Ensuite, on passe au C++ ou à CUDA.
00:02:06Et là, vous vous retrouvez avec deux fichiers qui finissent par diverger.
00:02:09C'est donc toute la question que soulève Mojo.
00:02:12Le fichier que vous lisez peut-il être exactement celui qui s'exécute sur le GPU ?
00:02:17Cette fonction est le noyau.
00:02:18Chaque thread du GPU additionne une paire de nombres.
00:02:20C'est tout.
00:02:21Je n'ai pas eu besoin de passer à Metal, Swift ou CUDA.
00:02:24Compilez-le.
00:02:26Et voilà, notre code tourne.
00:02:28Alors, oui.
00:02:30Mojo permet de faire des choses assez intéressantes.
00:02:32Je viens de compiler un noyau GPU fonctionnel sur un MacBook en utilisant le même langage
00:02:38que pour mon code classique : Python.
00:02:40Votre code de machine learning commence en Python parce que c'est un langage accessible.
00:02:44Nous le savons tous.
00:02:45Puis, par la suite, les performances commencent à compter.
00:02:48Les parties critiques sont alors réécrites en C++ ou CUDA.
00:02:52Et soudain, nous maintenons deux versions du même système.
00:02:55Avec le temps, cela ne fait qu'ajouter de la confusion.
00:02:58La promesse de Mojo, c'est que le fichier lisible et le fichier ultra rapide ne font qu'un.
00:03:03Derrière tout cela se trouve Chris Lattner.
00:03:06Il a créé LLVM, puis Clang, et enfin Swift.
00:03:10Mais faire tourner un noyau GPU, c'est une chose.
00:03:14Qualifier le langage de version 1.0, c'est encore autre chose.
00:03:18Alors, que signifie réellement ce 1.0 ?
00:03:21Pas que Mojo soit achevé.
00:03:23Cela signifie plutôt qu'il y a de la stabilité.
00:03:25C'est la garantie que le code écrit aujourd'hui ne va pas casser.
00:03:29C'est l'essence d'une telle version majeure.
00:03:30Mais c'est là qu'intervient le premier détail étrange.
00:03:32Mojo a atteint la version 1.1 avant même que son compilateur ne devienne open source.
00:03:37La bibliothèque standard était déjà passée en open source en mars 2024.
00:03:40Les noyaux max ont suivi en 2025.
00:03:43Mais le compilateur, l'élément central qui effectue la compilation, est resté propriétaire jusqu'au 18 août de cette année.
00:03:50Sous licence Apache 2.0, ce qui est marquant puisque sept jours plus tôt, lors de la sortie de Mojo 1.0, il était encore fermé.
00:03:57Cela répond directement à l'une des critiques les plus fréquentes faites à Mojo ces trois dernières années.
00:04:02On pouvait toujours objecter : certes, mais le compilateur est fermé.
00:04:05On ne peut plus vraiment dire cela, ce qui semble aller dans la bonne direction.
00:04:10C'est possible.
00:04:10Jusqu'à ce qu'on regarde ce qui s'est passé trois semaines plus tôt.
00:04:14Le rachat par Qualcomm a été finalisé le 29 juillet.
00:04:16Mojo 1.0 est sorti le 11 août.
00:04:19Le compilateur est passé en open source le 18 août.
00:04:21Le plus grand événement d'ouverture de l'histoire de Mojo s'est donc produit moins de trois semaines après que Modular a cessé d'être indépendant.
00:04:29Cela permet d'analyser la situation de deux manières complètement différentes.
00:04:33Premièrement : Qualcomm a acheté Modular parce qu'ils veulent du Mojo partout.
00:04:37Probablement pas.
00:04:37Ou alors, Qualcomm a acheté Modular, et tout cela finira par être absorbé par un groupe beaucoup plus grand.
00:04:44Qualcomm fabrique des puces.
00:04:45Un langage qui compile efficacement pour ces puces devient immédiatement beaucoup plus précieux.
00:04:49Nous pouvons désormais l'utiliser librement.
00:04:50Le virage open source est donc logique.
00:04:53Mais le succès de Mojo ne dépendra probablement pas de Qualcomm.
00:04:57Il dépendra de la capacité du langage à justifier un tel changement de cap.
00:05:02Et c'est précisément là que tout commence à se compliquer.
00:05:05Mojo a un problème avec ses benchmarks.
00:05:07En 2023, on affichait un chiffre fou : Mojo serait 68 000 fois plus rapide que Python.
00:05:13C'est insensé.
00:05:14Il y a aussi un article en ligne affirmant que Mojo surpasse Rust de 50 % sur l'analyse d'ADN.
00:05:19Ce benchmark a été démonté.
00:05:21Il a été prouvé qu'il ne mesurait pas du tout ce qu'il prétendait mesurer.
00:05:25Et pourtant, on voit encore le chiffre de 35 000 fois plus rapide circuler.
00:05:29Cela provient de la multiplication de matrices.
00:05:31Mais ce qu'ils comparent, c'est...
00:05:34d'un côté, une implémentation Mojo entièrement vectorisée, parallélisée et tuilée.
00:05:40De l'autre, une triple boucle en pur Python.
00:05:44Oui, une triple boucle.
00:05:45Pas du NumPy, juste une boucle imbriquée que personne sur Terre n'utiliserait en pratique.
00:05:49Je ne me soucie donc pas vraiment de cette histoire de 35 000 fois plus rapide.
00:05:52Je voulais des chiffres sur ma propre machine.
00:05:54Je suis sur une puce M4 Pro face au Python pur.
00:05:57Face au Python pur, c'est 26 fois et demie plus rapide.
00:06:00Face à NumPy, par opération, c'est environ deux fois plus rapide.
00:06:05Évidemment, 26, ce n'est pas 68 000.
00:06:08Mais 26 fois, c'est déjà un bon score, sachant que NumPy repose déjà sur du C en interne.
00:06:14À ce stade, vous ne battez plus vraiment Python.
00:06:16Vous battez le C grâce à une meilleure gestion de la mémoire.
00:06:19Et c'est bien cela qui est frustrant avec Mojo.
00:06:21Mais les performances ne constituent pas la raison principale pour laquelle j'hésiterais à l'adopter aujourd'hui.
00:06:25J'ai déjà testé le langage.
00:06:27Je l'exécute en ce moment même.
00:06:28La vraie question, c'est la stabilité.
00:06:30À quel point est-ce stable ?
00:06:32Puisque Mojo 1.0 sort avec 41 avertissements d'API instables, incluant des fonctions fondamentales comme int, print et len.
00:06:40Elles ont été qualifiées d'instables au sein d'une version prétendument axée sur la stabilité.
00:06:45Et le jour même où Mojo promet que votre code ne plantera pas, la suppression du mot-clé fn a brisé environ 39 paquets de l'écosystème.
00:06:52Or, le mot-clé fn était central dans le fonctionnement de Mojo, et il a complètement disparu.
00:06:58Adieu le processus FC.
00:06:59Et même si le compilateur est désormais open source, les contributions ne sont pas encore acceptées.
00:07:04Donc Mojo 1.0 est stable, je suppose.
00:07:07Mais peut-être pas autant qu'ils le prétendent.
00:07:09Ce qui nous amène à la seule question qui compte vraiment.
00:07:12Devriez-vous l'utiliser ?
00:07:13Si vous écrivez des noyaux GPU, du CUDA, du Triton ou que vous évoluez dans ce milieu, Mojo mérite largement d'y passer un jour ou deux.
00:07:21Un seul langage pour le CPU et le GPU, et j'ai pu compiler un noyau GPU opérationnel sur un ordinateur portable.
00:07:27Il n'y a pas grand-chose d'autre qui permette de faire cela.
00:07:29Mais le projet a encore une grande marge de progression.
00:07:31Je ne lui donnerais donc pas la priorité absolue pour l'instant.
00:07:35Il y a trois ans, l'argument contre Mojo était assez simple.
00:07:38Sympathique nouveau langage, mais qui va l'utiliser ?
00:07:40C'était un langage fermé issu d'une startup demandant aux développeurs de miser tout leur avenir dessus.
00:07:44Aujourd'hui, le compilateur est sous licence Apache 2.0.
00:07:47Le langage est en version 1.0.
00:07:48Et cette startup fait désormais partie de Qualcomm.
00:07:51Je suis Josh de BetterStack.
00:07:53Si vous aimez ce genre de conseils et astuces de code, abonnez-vous.
00:07:56On se retrouve dans une prochaine vidéo.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video