Accéder au contenu principal
Intelligence artificielle
Python

Mojo Lang : le nouveau langage de programmation pour l'IA

Présentation d'un nouveau langage de programmation aussi simple que Python et aussi rapide que Rust.
Abid Ali Awan's photo
Abid Ali Awan
Actualisé · 9 min lire

Explorez l'IA

ChatGPTClaudePerplexity

Créez votre compte gratuit

S'entraîner et cursus vos progrès.

Continuer Avec Google
En continuant, vous acceptez nos Conditions d'utilisation, notre Politique de confidentialité et le fait que vos données seront hébergées aux États-Unis.

Mojo est un langage de programmation qui combine la facilité d'utilisation et la flexibilité des langages dynamiques, comme Python, avec les performances et le contrôle des langages système, tels que C++ et Rust.

Il atteint de hautes performances grâce à des innovations côté compilateur, comme le cache intégré, le multithreading et la distribution cloud, tandis que l'autotuning et la métaprogammation permettent d'optimiser le code pour divers matériels.

Parmi les principales caractéristiques de Mojo :

  • Une syntaxe proche de Python et un typage dynamique qui facilitent la prise en main pour les développeurs Python, Python étant le langage phare des développements IA/ML modernes.
  • Avec Mojo, vous pouvez importer et utiliser n'importe quelle bibliothèque Python, garantissant une interopérabilité totale avec Python.
  • Il prend en charge la compilation just-in-time (JIT) et ahead-of-time (AOT). Le compilateur Mojo applique des optimisations avancées et génère même du code pour GPU/TPU.
  • Mojo offre un contrôle total sur l'agencement mémoire, la concurrence et d'autres détails bas niveau.
  • En combinant les capacités des langages dynamiques et système, Mojo adopte un modèle de programmation unifié, à la fois accessible aux débutants et adaptable à de multiples cas d'usage sur accélérateurs.

Mojo est actuellement un langage incomplet et n'est pas disponible au public. La documentation s'adresse aux développeurs ayant de l'expérience en programmation système.

Cependant, à mesure que le langage évolue, l'objectif est de le rendre plus convivial et accessible aux débutants.

Bien démarrer avec Mojo Lang

Mojo n'est pas accessible publiquement, mais vous pouvez utiliser Mojo Playground en vous inscrivant aux produits Modular. Lors de l'inscription, assurez-vous d'avoir sélectionné Mojo dans les centres d'intérêt produits.

Image de Modular : commencez aujourd'hui

Image issue de Modular : commencez aujourd'hui

Après votre inscription, vous recevrez sous une heure un e-mail vous donnant accès à Mojo Playground. Mojo Playground est un environnement JupyterHub où les utilisateurs accèdent à la même bibliothèque standard Mojo. Chaque utilisateur dispose toutefois d'un espace privé pour écrire et enregistrer ses programmes Mojo.

Image de Mojo Playground

Image de Mojo Playground

Lorsque Mojo deviendra open source et publiquement disponible, vous pourrez exécuter un programme Mojo depuis un terminal. Il peut être à la fois interprété ou compilé.

Vous pouvez enregistrer le fichier test.mojo ou test.🔥.

Oui, vous pouvez enregistrer votre fichier avec l'émoji feu. Comme vous pouvez le voir, nous avons créé un simple fichier Mojo test.🔥 et l'avons exécuté dans le terminal.

def main():
    print("Hello Mojo!")
$ mojo test.🔥
Hello Mojo!

Mojo Lang et Python

Mojo est un sur-ensemble de Python et sa syntaxe est presque identique à celle de Python. Il introduit aussi de nouvelles fonctionnalités comme let, var, struct et fn pour définir des variables, des structures et des fonctions afin de gagner en performances.

Déclarations let et var

En écrivant du code Mojo, vous pouvez déclarer des variables spécifiques avec les mots-clés let et var. C'est similaire à Rust.

Le mot-clé let indique qu'une variable est immuable, tandis que var signifie qu'elle peut être modifiée. Cela améliore les performances en imposant des contraintes à la compilation.

Types struct

Mojo utilise le mot-clé struct similaire au class de Python. Les classes en Python sont dynamiques et lentes ; les types struct se rapprochent de C/C++ et Rust. Ils ont des dispositions mémoire fixes déterminées à la compilation, optimisées pour des performances proches du matériel.

Définitions fn

Utiliser def pour définir une fonction crée une fonction Python, avec tout le dynamisme et la flexibilité associés. Le mot-clé fn, en revanche, définit une fonction Mojo plus contrainte. Par défaut, les arguments y sont immuables et nécessitent un typage explicite ainsi que des déclarations de variables locales, entre autres.

Exemple de comparaison de syntaxe

Dans l'exemple, nous allons créer une fonction Mojo qui additionne deux arguments.

Pour exécuter la fonction Mojo :

  • Vous devez spécifier un type pour les arguments de la fonction.
  • Vous devez déclarer le type de retour avec une flèche.
fn add(x: Int, y: Int) -> Int:
    return x + y

z = add(3, 5)
print(z)
>>> 8

En Python, nous pouvons définir des fonctions sans préciser explicitement le type des arguments ni de la sortie. Le processus est ainsi plus dynamique et direct. En comparaison toutefois, la fonction fn de Mojo est plus rapide que def.

def add(x, y):
    return x + y

z = add(3, 5)
print(z)
>>> 8

Matplotlib dans Mojo

Mojo n'améliore pas seulement les performances ; il permet aussi d'importer n'importe quelle bibliothèque Python et de l'intégrer à des fonctions Mojo. En s'appuyant sur l'interpréteur CPython, Mojo prend en charge sans couture tous les modules Python disponibles aujourd'hui.

Dans l'exemple suivant, nous avons importé matplotlib.pyplot et visualisé une courbe. Pour des exemples avancés, consultez Mandelbrot in Mojo.

from PythonInterface import Python

let plt = Python.import_module("matplotlib.pyplot")

x = [1, 2, 3, 4]
y = [30, 20, 50, 60]
plt.plot(x, y)
plt.show()

Graphique généré par Mojo

Il est largement admis que Python est le langage le plus populaire pour l'IA/ML. Suivre le parcours Machine Learning Scientist with Python vous dotera des compétences Python nécessaires pour décrocher un poste de spécialiste en machine learning.

Programmer avec Mojo Lang

Mojo est un sur-ensemble de Python, comme TypeScript l'est de JavaScript. Au-delà de nouveaux mots-clés et fonctions, tout développeur Python peut le comprendre et l'utiliser pour construire des programmes.

Dans cette partie, nous allons passer en revue les aspects de Mojo qui le rendent performant et sûr.

Programmation bas niveau

Mojo est un langage de haut niveau qui donne accès à des primitives bas niveau via MLIR (Multi-Level Intermediate Representation), un format intermédiaire extensible. Cela permet d'implémenter des abstractions à coût nul tout en profitant d'optimisations puissantes côté compilateur.

Optimisation par dallage et autotuning

Mojo intègre un outil d'optimisation par dallage qui améliore la localité du cache et les schémas d'accès mémoire en divisant les calculs en petits blocs adaptés à la mémoire cache rapide.

Le module Autotune de Mojo propose des interfaces pour la compilation adaptative. Il vous aide à trouver les meilleurs paramètres pour votre matériel cible en ajustant automatiquement votre code.

Propriété et emprunt

Mojo utilise un système de propriété et d'emprunt pour gérer la mémoire, ce qui évite le recours à un ramasse-miettes et garantit des performances d'exécution régulières. Le compilateur analyse statiquement la durée de vie des variables et libère les données dès qu'elles ne sont plus utilisées.

Gestion manuelle de la mémoire

Mojo propose également une gestion manuelle via des pointeurs, à la manière de C++ et Rust.

Multiplication de matrices dans Mojo

Dans l'exemple Matrix multiplication, nous avons constaté qu'importer du code Python dans Mojo se traduisait par un gain de performance de 17,5 fois.

En ajoutant des types à l'implémentation Python, les performances ont encore été améliorées, atteignant un impressionnant 1866,8 fois.

Ils ont également utilisé des techniques comme la vectorisation, le parallélisme, le dallage et l'autotuning pour obtenir une accélération de 14050,5 fois. C'est remarquable. Même Julia et Rust n'offrent pas ce niveau d'optimisation.

Exemple de code Mojo Lang

Dans cet exemple automobile, nous allons créer une classe CAR avec la syntaxe Mojo.

  1. Nous allons créer une classe CAR avec struct.
  2. Initialiser une variable mutable avec var.
  3. Définir les types de variables. « speed » est un Float32 et « model » est un String. String n'est pas un type natif, il faut donc l'importer.
  4. Nous créerons deux fonctions d'initialisation similaires à Python mais avec fn : l'une prenant uniquement la vitesse, l'autre la vitesse et le modèle.
  5. Ensuite, créer un objet CAR avec une vitesse de 300.
  6. Afficher le modèle de la voiture.
from String import String

struct CAR:
    var speed: Float32
    var model: String

    fn __init__(inout self, x: Float32):
        """Car with only speed"""
        self.speed = x
        self.model = 'Base'

    fn __init__(inout self, r: Float32, i: String):
        """Car with Speed and model"""
        self.speed = r
        self.model = i

my_car=CAR(300)
print(my_car.model)
Base

Comme vous pouvez le constater, le style de programmation et les fonctionnalités de Mojo ressemblent à ceux de Python. Mojo agit comme une extension de Python, tout en boostant les performances et la gestion mémoire. Avec Mojo, vous pouvez entraîner rapidement vos modèles, accélérer l'inférence (même sur CPU), analyser des jeux de données massifs en quelques secondes et simuler en temps réel.

Vous pouvez consulter tous les exemples de code sur la documentation Modular et les exécuter dans un notebook Jupyter sur le playground.

Mojo remplacera-t-il Python ?

Pour l'heure, il est difficile d'évaluer le potentiel de Mojo en tant que langage généraliste, car il est encore très jeune et certaines fonctionnalités manquent. Il pourrait toutefois surpasser Python pour les applications de machine learning et d'IA où la performance est cruciale.

Néanmoins, il est peu probable que Mojo remplace complètement le rôle de premier plan de Python en data science et dans d'autres domaines du développement logiciel dans un avenir proche.

Mojo est spécifiquement conçu pour les applications de machine learning et n'a pas vocation à couvrir d'autres domaines comme les backends web, l'automatisation de processus ou le web design. Même si ses capacités pourront évoluer, l'accent actuel est mis sur l'optimisation pour le machine learning.

Par ailleurs, il faut noter que l'écosystème de modules et bibliothèques de Mojo reste limité par rapport à Python, qui bénéficie d'une vaste communauté alimentant en continu de nouveaux outils pour l'IA et la data science. Mojo pourrait mettre des années à atteindre le niveau de maturité de Python.

Découvrez comment les modèles d'IA générative sont développés et comment ils vont transformer la société en suivant le cours Generative AI Concepts de DataCamp.

Conclusion

En conclusion, même si Mojo s'annonce comme un langage rapide, compatible Python et taillé pour l'IA/ML, il ne devrait pas remplacer totalement Python à court terme. Python profite d'un écosystème massif, d'une communauté très active et d'un ancrage profond en data science et ML. Au mieux, Mojo deviendra un langage complémentaire à Python, utilisé là où la vitesse est critique.

Dans ce tutoriel, nous avons passé en revue les fonctionnalités et la syntaxe du langage Mojo avec des exemples de code. Nous avons également comparé avec Python sous l'angle des performances, de la syntaxe, des fonctionnalités et de la compatibilité. Pour celles et ceux qui souhaitent maîtriser les fondamentaux de l'IA et du machine learning, nous recommandons le parcours Machine Learning Fundamentals with Python.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

En tant que data scientist certifié, je suis passionné par l'utilisation des technologies de pointe pour créer des applications innovantes d'apprentissage automatique. Avec une solide expérience en reconnaissance vocale, en analyse de données et en reporting, en MLOps, en IA conversationnelle et en NLP, j'ai affiné mes compétences dans le développement de systèmes intelligents qui peuvent avoir un impact réel. En plus de mon expertise technique, je suis également un communicateur compétent, doué pour distiller des concepts complexes dans un langage clair et concis. En conséquence, je suis devenu un blogueur recherché dans le domaine de la science des données, partageant mes idées et mes expériences avec une communauté grandissante de professionnels des données. Actuellement, je me concentre sur la création et l'édition de contenu, en travaillant avec de grands modèles linguistiques pour développer un contenu puissant et attrayant qui peut aider les entreprises et les particuliers à tirer le meilleur parti de leurs données.

Sujets
Intelligence artificielle
Python

Apprenez les thèmes abordés dans ce tutoriel !

Cours

Concepts d'IA générative

2 h
120.9K
Apprenez à exploiter l’IA générative de façon responsable. Découvrez le développement des modèles d’IA générative et leur impact futur sur la société.
Voir les détailsCommencer Le Cours

Créez votre compte gratuit

S'entraîner et cursus vos progrès.

Continuer Avec Google
En continuant, vous acceptez nos Conditions d'utilisation, notre Politique de confidentialité et le fait que vos données seront hébergées aux États-Unis.
Voir plus
Contenus associés

Tutoriel

Python Bonjour tout le monde : Guide de programmation pour débutants

Apprenez les bases de Python en exécutant le programme print(« Bonjour tout le monde »).
Adel Nehme's photo

Adel Nehme

3 min

cursor ai code editor

Tutoriel

Cursor AI : Un guide avec 10 exemples pratiques

Apprenez à installer Cursor AI sur Windows, macOS et Linux, et découvrez comment l'utiliser à travers 10 cas d'utilisation différents.

Tutoriel

30 astuces Python pour un meilleur code, avec exemples

Nous avons sélectionné 30 astuces Python pour améliorer votre code et développer vos compétences en Python.
Kurtis Pykes 's photo

Kurtis Pykes

15 min

Tutoriel

Python Switch Case Statement : Guide du débutant

Découvrez le match-case de Python : un guide sur sa syntaxe, ses applications en data science, ML, et une analyse comparative avec le switch-case traditionnel.
Matt Crabtree's photo

Matt Crabtree

5 min

Tutoriel

Données JSON Python : Un guide illustré d'exemples

Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
Moez Ali's photo

Moez Ali

6 min

Tutoriel

Tableaux Python

Tableaux Python avec exemples de code. Découvrez comment créer et imprimer des tableaux à l'aide de Python NumPy dès aujourd'hui.
DataCamp Team's photo

DataCamp Team

3 min

Voir plus