Le domaine de la technologie est en perpétuelle évolution. La dernière innovation en date est le langage de programmation Mojo. Celui-ci arrive pour optimiser les vitesses d’exécution des projets basés sur Python, en fournissant aux développeurs des performances comparables à celles du langage C.
Python est un langage de programmation de premier plan. Il se distingue par sa polyvalence et sa facilité d’apprentissage, ce qui en fait une excellente porte d’entrée pour les novices en programmation et en informatique.
De plus, il s’agit d’un langage de programmation adapté aux développeurs expérimentés, qui peuvent l’utiliser pour concevoir des applications complexes. Cependant, un des points faibles majeurs de Python est sa vitesse d’exécution, et c’est ici que Mojo entre en scène.
Cet article explore Mojo et sa relation avec l’écosystème Python. Entrons dans le vif du sujet.
Qu’est-ce que Mojo ?
Mojo est un langage de programmation de haut niveau, moderne, doté d’une conception intuitive qui facilite la création rapide d’applications pour les développeurs. Son objectif est de rapprocher la recherche et la production en permettant aux utilisateurs de bénéficier de fonctionnalités de métaprogrammation et de programmation système, tout en conservant la syntaxe et l’écosystème de Python.
Il s’inspire fortement de Rust et apporte des vitesses d’exécution accrues à l’écosystème Python. Techniquement, Mojo est un surensemble de Python, offrant un accès étendu.
L’équipe à l’origine de Mojo est issue de Modular, une entreprise spécialisée dans l’infrastructure d’IA. Il est donc logique que ce langage de programmation soit destiné aux développeurs d’IA. En complément de Mojo, ils ont également introduit l’Inference Engine, qui permet aux développeurs d’optimiser leur flux de travail, de mettre à l’échelle les produits d’IA et de diminuer la latence d’inférence (nous y reviendrons plus loin).
Selon Chris Lattner, PDG de Modular, Mojo est 35 000 fois plus rapide que Python. Cette performance est également un facteur de développement rapide pour ce langage. Les gains de vitesse sont obtenus grâce à l’utilisation par Mojo de la chaîne d’outils du compilateur LLVM et de l’infrastructure du compilateur MILR (Multi-level Intermediate Representation Overview).
Les objectifs du langage de programmation Mojo incluent :
- Assurer une compatibilité complète avec l’écosystème Python.
- Permettre aux développeurs de déployer des sous-ensembles de code sur des accélérateurs.
- Offrir un contrôle de bas niveau pour garantir des performances prévisibles.
- Éviter la fragmentation de l’écosystème.
Pour tester Mojo, il faut utiliser l’environnement hébergé basé sur le cloud, Mojo Playground. Une connexion sera nécessaire pour accéder à un environnement de travail.
Pourquoi avons-nous besoin de Mojo ?
L’idée fondamentale derrière Mojo est d’unifier l’infrastructure d’apprentissage machine (ML) et d’intelligence artificielle (IA) en proposant un langage de programmation qui fonctionne à tous les niveaux de la pile. De plus, il vise la facilité d’utilisation en supprimant la nécessité d’écrire du code MLIR.
D’après Modular, Mojo offrira un modèle de programmation évolutif et novateur. Par conséquent, les spécialistes de l’IA pourront travailler plus facilement avec des accélérateurs et des systèmes hétérogènes.
Techniquement, Mojo est un langage de programmation qui prend en charge la métaprogrammation lors de la compilation. Il inclut également d’autres fonctionnalités telles que la mise en cache pendant le flux de compilation, des techniques de compilation adaptative, etc. Ces fonctionnalités ne se retrouvent pas dans d’autres langages de programmation.
Si vous désirez en savoir plus sur la philosophie de Mojo, consultez la documentation de Modular : Pourquoi Mojo🔥
Caractéristiques du langage de programmation Mojo
Dans cette section, nous allons étudier les principales fonctionnalités du langage de programmation Mojo.
#1. Compatibilité totale avec Python
Mojo a été conçu pour travailler en synergie avec l’écosystème Python, et non pas contre lui. Ceci est démontré par l’utilisation des mêmes fonctions, bibliothèques et fonctionnalités que celles proposées par Python. Ainsi, il est possible d’utiliser n’importe quelle bibliothèque Python dans Mojo.
Pour importer, il faut utiliser le code suivant :
from PythonInterface import Python
Ensuite, vous pouvez utiliser Python.import_module() pour importer n’importe quelle bibliothèque Python.
Par exemple, pour importer numpy, voici la ligne de code à utiliser :
let np = Python.import_module(“numpy”)
En Python, vous devriez écrire « import numpy as np ».
Une fois importé, vous pouvez l’utiliser pour créer des tableaux, effectuer des calculs, etc.
array = np.array([1, 2, 3]) print(array)
De la même manière, vous pouvez importer matplotlib.pyplot pour créer un graphique dans Mojo.
Voici à quoi cela ressemble lors de l’exécution du code dans Mojo Playground.
Si vous voulez tester ce code, copiez-le et collez-le ci-dessous.
from PythonInterface import Python let np = Python.import_module("numpy") array = np.array([1, 2, 3, 4, 5]) print(array)
#2. MILR
MILR, ou représentation intermédiaire à plusieurs niveaux, est pris en charge par Mojo. Cela permet aux développeurs de bénéficier d’une gamme de nouvelles fonctionnalités avancées. Celles-ci comprennent les unités matérielles d’IA, les threads et les vecteurs.
MILR améliore les performances grâce à la concurrence, ce qui rend Mojo plus rapide que Python. De plus, il permet aux développeurs d’exploiter plusieurs cœurs de processeur.
#3. Vérificateur de propriété et d’emprunteur
La gestion de la mémoire de Python est sûre. Elle utilise un ramasse-miettes, ce qui oblige les programmeurs à veiller à ce que leur code ne provoque pas de conditions de concurrence.
Mojo, à l’instar de Rust, implémente un modèle strict de vérification de la propriété et de l’emprunteur. Actuellement, celui-ci est partiellement mis en œuvre. L’idée derrière l’utilisation de ce modèle est d’améliorer la simultanéité et de fournir une gestion optimale de la mémoire.
Le modèle de propriété assure également une approche sûre en matière de threads, ce qui est idéal pour une prise en charge efficace de la simultanéité. De cette manière, les programmes ne sont pas confrontés à des conditions de concurrence. De plus, le vérificateur d’emprunteur assure que les variables sont toujours vérifiées durant l’exécution.
#4. Abstraction à coût nul
Mojo offre des abstractions à coût nul, donnant aux développeurs un contrôle total sur le stockage. Ici, les programmeurs ont la possibilité d’allouer des valeurs en ligne aux structures.
#5. Réglage automatique
Mojo intègre également le réglage automatique. Cela permet d’assurer que les meilleures valeurs sont définies automatiquement pour les paramètres, en fonction du matériel cible.
Le réglage automatique évite de devoir optimiser manuellement votre code en fonction du matériel cible.
Vitesse : quelle est la vitesse du langage Mojo ?
Python est un langage de programmation de haut niveau dont l’objectif est de faciliter l’utilisation et la maintenabilité. Malheureusement, cela le rend plus lent que d’autres solutions ou langages de programmation.
Lors de tests effectués par Modular, il a été constaté que Mojo était 35 000 fois plus rapide. L’algorithme de Mandelbrot a été utilisé et exécuté sur une instance AWS équipée d’un processeur Intel Xeon. Les langages testés étaient PYPY, SCALAR C++, MOJO, ainsi que Python. Les résultats ont été extrêmement rapides, et vous pouvez les consulter ci-dessous.
Source : modular.com
Pour plus d’informations sur la vitesse de Mojo, consultez cet article sur la communauté Julialang.
Moteur d’inférence modulaire : exécuter des modèles d’IA à moindre coût
Modular développe également un moteur d’inférence modulaire qui rend l’exécution de modèles d’IA en production moins coûteuse. Mojo prend en charge ce moteur d’inférence modulaire par défaut. Il permet aux équipes de simplifier leur flux de travail. Il permet également aux développeurs de réduire la latence d’inférence, ce qui facilite la mise à l’échelle des produits d’IA.
De plus, les développeurs n’ont pas à modifier leur modèle pour utiliser ce moteur. Une fois chargé, il peut améliorer les performances des modèles PyTorch et TensorFlow, avec une prise en charge matérielle étendue.
Va-t-il remplacer Python ?
Mojo est un nouveau langage. Il semble prometteur. Il faudra donc du temps pour qu’il atteigne ses publics cibles, tels que les data scientists ou les développeurs de langages de programmation. Et, oui, il résout des problèmes spécifiques pour les passionnés et les apprenants en IA. Cependant, il existe de nombreuses solutions similaires pour améliorer la vitesse du langage Python. Par exemple, on trouve Jax, Codon et Julia, un langage orienté science des données.
Ainsi, deux scénarios sont possibles. Tout d’abord, il pourrait connaître une croissance exponentielle en termes de fonctionnalités et être adopté par la communauté. Autre option, il pourrait devenir un langage de programmation ad hoc qui exploite les bibliothèques Python et le moteur d’inférence modulaire.
Alors, Mojo remplacera-t-il Python ? Seul l’avenir nous le dira.
Ensuite, consultez les solutions Python en une ligne pour simplifier les tâches courantes.