Mojo, le nouveau langage de programmation créé par Chris Lattner le créateur de LLVM

mojo lang

Mojo est un nouveau langage de programmation qui promet de meilleures performances pour le développement de l'apprentissage automatique

Il y a quelques jours, la nouvelle a éclaté que Chris Latter, fondateur et architecte en chef de LLVM et Tim Davis, ancien chef de projets IA chez Google a publié "Mojo", un nouveau langage de programmation, basé sur Python, qui résout les problèmes d'implémentation et de performances de Python.

Il est mentionné que Mojo Quoi combine la facilité d'utilisation pour la R&D et un prototypage rapide adapté aux produits finaux de haute performance. Le premier est réalisé grâce à l'utilisation de la syntaxe familière du langage Python, et le second est dû à la capacité de compiler en code machine, à des mécanismes de gestion sécurisée de la mémoire et à l'utilisation d'outils d'accélération matérielle des calculs. .

À propos de Mojo

Ce nouveau langage de programmation se concentre sur l'utilisation pour le développement de l'apprentissage automatique, mais ouie présenté comme un langage à usage général qui étend les capacités du langage Python avec la programmation système et convient à un large éventail de tâches.

Par exemple, le langage est applicable à des domaines tels que le calcul haute performance, le traitement de données et la transformation de données. Une caractéristique intéressante de Mojo est la possibilité de spécifier le symbole emoji "🔥" comme extension pour les fichiers de code.

Le projet est conçu pour impliquer des ressources matérielles des systèmes disponibles dans le système dans les calculs. Par exemple, les GPU, les accélérateurs d'apprentissage automatique spécialisés et les instructions de traitement vectoriel (SIMD) peuvent être utilisés pour exécuter des applications Mojo et paralléliser les calculs.

La raison du développement d'un sous-ensemble séparé du langage Python, plutôt que de rejoindre le travail d'optimisation CPython existant, est citée comme suit :

Une approche de construction, l'intégration des capacités de programmation du système et l'utilisation d'une architecture interne fondamentalement différente qui permet d'exécuter du code sur des GPU et divers accélérateurs matériels. Dans le même temps, les développeurs de Mojo ont l'intention de s'en tenir autant que possible au support de CPython.

Mojo peut être utilisé à la fois en mode d'interprétation JIT et pour la compilation dans des fichiers exécutables (AOT, à l'avance). Le compilateur intègre des technologies modernes pour l'auto-optimisation, la mise en cache et la compilation distribuée.

Le code le code source dans le langage Mojo est converti en code intermédiaire de bas niveau MLIR (Multi-Level Intermediate Representation), développé par le projet LLVM et apportant des fonctions supplémentaires pour optimiser le traitement des graphes de flux de données.

L'utilisation de mécanismes matériels supplémentaires pour accélérer les calculs vous permet d'atteindre des performances qui, avec des calculs intensifs, surpassent les applications C/C++.

Chris Lattner est responsable de la création de nombreux projets sur lesquels nous comptons tous aujourd'hui, même si nous n'avons peut-être même pas entendu parler de tout ce qu'il a construit ! Dans le cadre de sa thèse de doctorat, il a commencé le développement de LLVM, qui a fondamentalement changé la façon dont les compilateurs sont construits et constitue aujourd'hui la base de nombreux écosystèmes linguistiques les plus utilisés au monde.

Il a ensuite publié Clang, un compilateur C et C++ qui repose sur LLVM et est utilisé par la plupart des meilleurs développeurs de logiciels au monde (y compris en fournissant l'épine dorsale du code critique pour les performances de Google). 

Lors de l'évaluation des performances dans le domaine du dépannage d'apprentissage automatique, la pile d'IA du moteur d'inférence modulaire écrite dans le langage Mojo, par rapport à une solution basée sur la bibliothèque TensorFlow, s'est avérée 3 fois plus rapide sur un système avec un processeur Intel

Cependant, Chris a vu que C et C++ ne tiraient pas pleinement parti de la puissance de LLVM. Alors qu'il travaillait chez Apple, il a conçu un nouveau langage, appelé "Swift", qu'il décrit comme "sucre de syntaxe pour LLVM". 

Il est à noter que le le langage prend en charge le typage statique et les fonctionnalités de mémoire de bas niveau sécurisées qui rappellent les fonctionnalités de Rust telles que le suivi de la vie de référence et l'emprunt variable (vérificateur de prêt).

En plus des moyens pour un fonctionnement sûr avec des pointeurs, le langage fournit également des fonctionnalités pour le travail de bas niveau, par exemple, il est possible d'accéder directement à la mémoire en mode non sécurisé à l'aide du type de pointeur, d'appeler des instructions SIMD individuelles ou d'accéder à des extensions matérielles telles que TensorCores et AMX.

Actuellement, la langue est en développement intensif et seule l'interface est proposée en ligne pour essayer. Les promesses futures sont de publier des versions distinctes à exécuter ultérieurement sur des systèmes locaux, après avoir reçu des commentaires sur le travail de l'environnement Web interactif.

Le code open source du compilateur, JIT et d'autres développements liés au projet sont prévus une fois la conception de l'architecture interne terminée (le modèle de développement d'un prototype de travail à huis clos ressemble au stade précoce de développement de LLVM, Clang et Swift).

Étant donné que la syntaxe de Mojo est basée sur Python et que le système de type est proche de C/C++, il est prévu à l'avenir de développer un ensemble d'outils pour faciliter la traduction de projets existants écrits en C/C++ et Python vers Mojo, ainsi afin de développer des projets hybrides qui combinent le code Python et Mojo.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   jaime dit

    intéressant le cairn ça…. (sans accent)