Un nouveau langage de programmation pour les développeurs d’Intelligence Artificielle vient de voir le jour : Mojo pour IA. Et figure-toi que c’est bien plus rapide que notre cher langage Python !
Je sais ce que tu penses – un nouveau langage de programmation à apprendre à partir de zéro… Eh bien, j’ai une bonne nouvelle, Mojo est conçu comme un superset de Python, donc si tu connais déjà Python, apprendre Mojo ne devrait pas être difficile.
Mais ce n’est pas tout. Mojo combine la facilité d’utilisation de Python avec la performance de C, obtenant une vitesse qui est jusqu’à 35000x plus rapide que Python.
Si tu es intéressé.e par l’IA et que tu connais déjà Python, Mojo vaut vraiment la peine d’être essayé. Voici tout ce que tu dois savoir sur Mojo.
Pourquoi avons-nous besoin de Mojo si nous avons déjà Python ?
La simplicité et la polyvalence de Python en ont fait le langage de prédilection dans des domaines tels que la Data Science, le Machine Learning et l’IA. Il possède des tonnes de paquets très utiles pour tous ceux qui travaillent avec des données, mais pour les bibliothèques qui nécessitent de grandes performances, Python agit seulement comme une couche de liaison de bas niveau avec C, C++ et d’autres langages plus performants.
Cela a permis le développement de bibliothèques telles que NumPy et TensorFlow. Cependant, cela présente un inconvénient : construire ces bibliothèques est très compliqué, cela nécessite une compréhension de bas niveau des internes de CPython, nécessite des connaissances en C/C++, etc.
Selon la documentation de Mojo, les problèmes posés par Python sont plus profonds et ont un impact particulier sur le domaine de l’IA.
Python seul n’est pas en mesure de répondre à tous les besoins des systèmes d’IA appliqués et c’est ainsi que Mojo est né. Mojo est un langage de programmation qui combine la facilité d’utilisation de Python avec la performance de C.
Le meilleur des deux mondes !
Mais Mojo n’est pas un projet aléatoire sorti de nulle part. En fait, Mojo vient d’une entreprise nommée Modular, cofondée par Chris Lattner, celui-là même qui a créé le langage de programmation Swift et LLVM.
C’est pourquoi je pense que ce projet mérite qu’on s’y intéresse. Voyons maintenant quelques-unes des meilleures fonctionnalités de Mojo.
Fonctionnalités de Mojo
Mojo est livré avec de nombreuses fonctionnalités intéressantes. En voici quelques-unes :
1. Mojo est conçu comme un superset de Python
Mojo vise à être totalement compatible avec l’écosystème Python.
Cela signifie que tu peux facilement travailler avec Mojo si tu es un programmeur Python car les deux langages de programmation ont de nombreuses fonctions, caractéristiques et bibliothèques en commun.
Des bibliothèques telles que NumPy, Pandas et Matplotlib sont également disponibles dans Mojo. Par exemple, voici comment créer un graphique avec Matplotlib en utilisant Mojo.
def make_plot(m: Matrix): plt = Python.import_module("matplotlib.pyplot") fig = plt.figure(1, [10, 10 * yn // xn], 64) ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], False, 1) plt.show(image) plt.show() make_plot(compute_madelbrot())
Cela dit, Mojo est très early-stage et il lui manque encore de nombreuses fonctionnalités de Python (par exemple, il ne prend pas encore en charge les classes).
Espérons que dans les prochaines mises à jour, Mojo sera entièrement compatible avec Python.
2. Vérification forte des types
Mojo s’appuie sur les types pour améliorer les performances et la vérification des erreurs.
def sort(v: ArraySlicew[Int]): for i in range(len(v)): for j in range(len(v) - i - 1): if v[j] > v[j + 1]: swap(v[j], v[j + 1])
Bien qu’on puisse toujours utiliser des types flexibles comme avec Python, Mojo nous permet d’utiliser une vérification stricte des types. Cela peut rendre notre code plus prévisible, plus facile à gérer et plus sûr.
3. Vérificateur de propriété et d’emprunt de mémoire
Mojo prend en charge une convention d’argument propriétaire (owned) qui est utilisée pour les fonctions qui veulent s’approprier exclusivement une valeur.
def reorder_and_process(owned x: HugeArray): sort(x) # Update give_away(x^) # Transfert de propriété print(x[0]) # Error : 'x' moved away !
Cela nous permettra de bénéficier de la sécurité de la mémoire sans les inconvénients.
4. Auto-tuning
Mojo dispose d’un auto-tuning intégré qui permet de trouver automatiquement les meilleures valeurs pour nos paramètres afin de tirer parti du matériel cible.
def exp_buffer[dt: DType](data: ArraySlice[dt]): # Recherche de la meilleure longueur de vecteur alias vector_len = autotune(1, 4, 8, 16, 32) # L'utiliser comme longueur de vectorisation vectorize[exp[dt, vector_len]](data)
5. Mojo s’appuie sur le MLIR
En utilisant toute la puissance de la représentation intermédiaire multiniveaux (MLIR), les développeurs Mojo peuvent tirer parti des vecteurs, des threads et des unités matérielles d’Intelligence Artificielle (IA).
Cela permet à Mojo d’obtenir d’excellentes performances car, contrairement à Python qui fonctionne avec une exécution à un seul thread, Mojo peut travailler avec un traitement parallèle sur plusieurs cœurs.
C’est l’une des raisons pour lesquelles Mojo est 35000 fois plus rapide que Python.
Comment commencer à utiliser Mojo ?
Mojo est encore un travail en cours, mais tu peux l’essayer dès aujourd’hui sur l’environnement basé sur JupyterHub. Pour essayer Mojo, rend-toi sur ce site web pour t’inscrire et n’oublie pas de cocher la case Mojo dans la section « Modular Product Interest ».
En attendant, tu peux apprendre le langage Python appliquée à la Data Science.