Création de langages de programmation sur mesure pour des systèmes d’IA visuelle efficaces | Actualités du MIT

Création de langages de programmation sur mesure pour des systèmes d'IA visuelle efficaces |  Actualités du MIT

Une seule photographie offre un aperçu du monde du créateur : ses intérêts et ses sentiments à l’égard d’un sujet ou d’un espace. Mais qu’en est-il des créateurs derrière les technologies qui contribuent à rendre ces images possibles ?

Jonathan Ragan-Kelley, professeur agrégé au Département de génie électrique et d’informatique du MIT, est l’une de ces personnes, qui a tout conçu, depuis les outils pour les effets visuels dans les films jusqu’au langage de programmation Halide largement utilisé dans l’industrie pour l’édition et le traitement de photos. En tant que chercheur au laboratoire d’IA Watson du MIT-IBM et au laboratoire d’informatique et d’intelligence artificielle, Ragan-Kelley se spécialise dans les langages de programmation hautes performances spécifiques à un domaine et dans l’apprentissage automatique qui permettent des graphiques 2D et 3D, des effets visuels et de la photographie informatique. .

« Le principal objectif de nos recherches consiste à développer de nouveaux langages de programmation qui facilitent l’écriture de programmes qui s’exécutent de manière vraiment efficace sur le matériel de plus en plus complexe qui se trouve aujourd’hui dans votre ordinateur », explique Ragan-Kelley. « Si nous voulons continuer à augmenter la puissance de calcul que nous pouvons réellement exploiter pour des applications réelles – du graphisme et de l’informatique visuelle à l’IA – nous devons changer notre façon de programmer. »

Trouver un juste milieu

Au cours des deux dernières décennies, les concepteurs de puces et les ingénieurs en programmation ont constaté un ralentissement La loi de Moore et un passage marqué de l’informatique à usage général sur processeurs à des unités de calcul et de traitement plus variées et spécialisées telles que les GPU et les accélérateurs. Cette transition s’accompagne d’un compromis : la possibilité d’exécuter du code à usage général quelque peu lentement sur les processeurs, pour un matériel plus rapide et plus efficace qui nécessite que le code y soit fortement adapté et mappé avec des programmes et des compilateurs personnalisés. Un matériel plus récent avec une programmation améliorée peut mieux prendre en charge des applications telles que les interfaces radio cellulaires à large bande passante, le décodage de vidéos hautement compressées pour le streaming et le traitement graphique et vidéo sur les caméras de téléphones portables à consommation limitée, pour n’en nommer que quelques applications.

« Notre travail consiste en grande partie à libérer la puissance du meilleur matériel que nous pouvons construire pour offrir autant de performances et d’efficacité de calcul que possible pour ce type d’applications, d’une manière que les langages de programmation traditionnels ne permettent pas. »

Pour y parvenir, Ragan-Kelley divise son travail en deux directions. Premièrement, il sacrifie la généralité pour capturer la structure de problèmes informatiques particuliers et importants et l’exploite pour une meilleure efficacité informatique. Cela se voit dans le langage de traitement d’image Halide, qu’il a co-développé et qui a contribué à transformer l’industrie de l’édition d’images dans des programmes comme Photoshop. De plus, comme il est spécialement conçu pour gérer rapidement des tableaux denses et réguliers de nombres (tenseurs), il fonctionne également bien pour les calculs de réseaux neuronaux. Le deuxième objectif cible l’automatisation, en particulier la manière dont les compilateurs mappent les programmes au matériel. L’un de ces projets avec le MIT-IBM Watson AI Lab exploite Exo, un langage développé dans le groupe de Ragan-Kelley.

Au fil des années, les chercheurs ont travaillé avec acharnement pour automatiser le codage avec des compilateurs, qui peuvent être une boîte noire ; cependant, il existe encore un grand besoin de contrôle et de réglage explicites par les ingénieurs de performance. Ragan-Kelley et son groupe développent des méthodes qui chevauchent chaque technique, équilibrant les compromis pour parvenir à une programmation efficace et économe en ressources. Au cœur de nombreux programmes hautes performances tels que les moteurs de jeux vidéo ou le traitement des caméras de téléphones portables se trouvent des systèmes de pointe qui sont en grande partie optimisés manuellement par des experts humains dans des langages détaillés de bas niveau comme C, C++ et l’assembleur. Ici, les ingénieurs font des choix spécifiques sur la manière dont le programme s’exécutera sur le matériel.

Ragan-Kelley note que les programmeurs peuvent opter pour « un code de bas niveau très minutieux, très improductif et très dangereux », qui pourrait introduire des bogues, ou pour « des interfaces de programmation de niveau supérieur plus sûres, plus productives », qui n’ont pas la capacité de effectuer des ajustements précis dans un compilateur sur la façon dont le programme est exécuté et fournir généralement des performances inférieures. Son équipe tente donc de trouver un terrain d’entente. « Nous essayons de trouver comment contrôler les problèmes clés que les ingénieurs en performance humaine veulent pouvoir contrôler », explique Ragan-Kelley. « Nous essayons donc de créer une nouvelle classe de langages que nous appelons des langages planifiables par l’utilisateur qui offrent des poignées plus sûres et de plus haut niveau pour contrôler ce que fait le compilateur ou contrôler la manière dont le programme est optimisé.

Déverrouillage du matériel : méthodes de haut niveau et mal desservies

Ragan-Kelley et son groupe de recherche s’attaquent à ce problème à travers deux axes de travail : appliquer des techniques d’apprentissage automatique et d’IA modernes pour générer automatiquement des plannings optimisés, une interface avec le compilateur, pour obtenir de meilleures performances du compilateur. Un autre utilise « l’exocompilation » sur laquelle il travaille en laboratoire. Il décrit cette méthode comme un moyen de « retourner le compilateur à l’envers », avec un squelette de compilateur avec des contrôles pour le guidage et la personnalisation humains. De plus, son équipe peut ajouter ses planificateurs sur mesure, ce qui peut aider à cibler du matériel spécialisé comme les accélérateurs d’apprentissage automatique d’IBM Research. Les applications de ces travaux couvrent toute la gamme : vision par ordinateur, reconnaissance d’objets, synthèse vocale, synthèse d’images, reconnaissance vocale, génération de texte (grands modèles de langage), etc.

Un de ses projets d’envergure avec le laboratoire va encore plus loin, en abordant le travail sous l’angle des systèmes. Dans le cadre de travaux dirigés par son conseiller et stagiaire de laboratoire William Brandon, en collaboration avec le chercheur en laboratoire Rameswar Panda, l’équipe de Ragan-Kelley repense les grands modèles de langage (LLM), en trouvant des moyens de modifier légèrement le calcul et l’architecture de programmation du modèle afin que le transformateur Les modèles basés sur IA peuvent fonctionner plus efficacement sur le matériel IA sans sacrifier la précision. Selon Ragan-Kelley, leur travail s’écarte des modes de pensée standard de manière significative, avec des gains potentiellement importants en termes de réduction des coûts, d’amélioration des capacités et/ou de réduction du LLM pour nécessiter moins de mémoire et fonctionner sur des ordinateurs plus petits.

C’est cette réflexion plus avant-gardiste, en matière d’efficacité de calcul et de matériel, dans laquelle Ragan-Kelley excelle et dans laquelle elle voit de la valeur, en particulier à long terme. «Je pense qu’il y a des domaines [of research] qui doivent être poursuivis, mais qui sont bien établis, ou évidents, ou qui relèvent d’une sagesse suffisamment conventionnelle pour que de nombreuses personnes les poursuivent déjà ou les poursuivent », dit-il. « Nous essayons de trouver des idées qui ont à la fois un grand effet de levier pour avoir un impact pratique sur le monde et qui, en même temps, sont des choses qui ne se produiraient pas nécessairement ou qui, je pense, sont mal exploitées par rapport à leur potentiel par le reste de la communauté. »

Le cours qu’il enseigne désormais, 6.106 (Software Performance Engineering), en est un exemple. Il y a environ 15 ans, le passage d’un processeur unique à un processeur multiple a amené de nombreux programmes universitaires à commencer à enseigner le parallélisme. Mais, comme l’explique Ragan-Kelley, le MIT a réalisé l’importance pour les étudiants de comprendre non seulement le parallélisme, mais également d’optimiser la mémoire et d’utiliser du matériel spécialisé pour obtenir les meilleures performances possibles.

« En modifiant notre façon de programmer, nous pouvons libérer le potentiel informatique de nouvelles machines et permettre aux utilisateurs de continuer à développer rapidement de nouvelles applications et de nouvelles idées capables d’exploiter ce matériel de plus en plus complexe et exigeant. »

Source