Le système convivial peut aider les développeurs à créer des simulations plus efficaces et des modèles d'IA

Le système convivial peut aider les développeurs à créer des simulations plus efficaces et des modèles d’IA

Les modèles d’intelligence artificielle du réseau neuronal utilisés dans des applications tels que le traitement d’images médicales et la reconnaissance de la parole effectuent des opérations sur des structures de données extrêmement complexes qui nécessitent une énorme quantité de calcul à traiter. C’est une des raisons pour lesquelles les modèles d’apprentissage en profondeur consomment tellement d’énergie.

Pour améliorer l’efficacité des modèles d’IA, les chercheurs du MIT ont créé un système automatisé qui permet aux développeurs d’algorithmes d’apprentissage en profondeur de profiter simultanément de deux types de redondance de données. Cela réduit la quantité de calcul, la bande passante et le stockage de mémoire nécessaire pour les opérations d’apprentissage automatique.

Les techniques existantes pour optimiser les algorithmes peuvent être lourdes et permettent généralement aux développeurs de capitaliser sur la rareté ou la symétrie – deux types de redondance qui existent dans les structures de données d’apprentissage en profondeur.

En permettant à un développeur de construire un algorithme à partir de zéro qui tire parti des deux redondances à la fois, l’approche des chercheurs du MIT a augmenté la vitesse des calculs de près de 30 fois dans certaines expériences.

Étant donné que le système utilise un langage de programmation convivial, il pourrait optimiser les algorithmes d’apprentissage automatique pour une large gamme d’applications. Le système pourrait également aider les scientifiques qui ne sont pas des experts de l’apprentissage en profondeur mais qui souhaitent améliorer l’efficacité des algorithmes d’IA qu’ils utilisent pour traiter les données. De plus, le système pourrait avoir des applications dans l’informatique scientifique.

« Pendant longtemps, la capture de ces redondances de données a nécessité beaucoup d’efforts de mise en œuvre. Au lieu de cela, un scientifique peut dire à notre système ce qu’il aimerait calculer de manière plus abstraite, sans dire exactement au système comment le calculer » Willow Ahrens, un MIT Postdoc et co-auteur d’un article sur le système, qui sera présenté au Symposium international sur la génération et l’optimisation du code (CGO 2025), qui s’est tenu du 1er au 5 mars à Las Vegas, Nevada.

Elle est rejointe du journal par l’auteur principal Radha Patel ’23, SM ’24 et l’auteur principal Saman Amarasinghe, professeur au Département de génie électrique et informatique (EECS) et chercheur principal au laboratoire d’informatique et d’intelligence artificielle ( Csail). Le papier est disponible sur le arxiv serveur de préimprimée.

Couper le calcul

Dans l’apprentissage automatique, les données sont souvent représentées et manipulées comme des tableaux multidimensionnels appelés tenseurs. Un tenseur est comme une matrice, qui est un tableau rectangulaire de valeurs disposées sur deux axes, lignes et colonnes. Mais contrairement à une matrice bidimensionnelle, un tenseur peut avoir de nombreuses dimensions ou axes, ce qui rend les tenseurs plus difficiles à manipuler.

Les modèles d’apprentissage en profondeur effectuent des opérations sur les tenseurs en utilisant la multiplication et l’ajout de matrice répétée – ce processus est de savoir comment les réseaux de neurones apprennent des modèles complexes dans les données. Le volume de calculs qui doit être effectué sur ces structures de données multidimensionnelles nécessite une énorme quantité de calcul et d’énergie.

Mais en raison de la façon dont les données dans les tenseurs sont organisées, les ingénieurs peuvent souvent augmenter la vitesse d’un réseau neuronal en supprimant les calculs redondants.

Par exemple, si un tenseur représente les données d’examen des utilisateurs d’un site de commerce électronique, car tous les utilisateurs n’ont pas examiné tous les produits, la plupart des valeurs en ce que le tenseur ne sont probablement pas nulles. Ce type de redondance de données est appelé rareté. Un modèle peut gagner du temps et du calcul en stockant et en fonctionnant sur des valeurs non nulles.

De plus, parfois un tenseur est symétrique, ce qui signifie que la moitié supérieure et la moitié inférieure de la structure des données sont égales. Dans ce cas, le modèle ne doit fonctionner que sur une moitié, réduisant la quantité de calcul. Ce type de redondance de données est appelé symétrie.

« Mais lorsque vous essayez de capturer ces deux optimisations, la situation devient assez complexe », explique Ahrens.

Pour simplifier le processus, elle et ses collaborateurs ont construit un nouveau compilateur, qui est un programme informatique qui traduit le code complexe en un langage plus simple qui peut être traité par une machine. Leur compilateur, appelé systec, peut optimiser les calculs en tirant automatiquement parti de la rareté et de la symétrie dans les tenseurs.

Ils ont commencé le processus de construction de Systec en identifiant trois optimisations clés qu’ils peuvent effectuer en utilisant la symétrie.

Tout d’abord, si le tenseur de sortie de l’algorithme est symétrique, il n’a qu’à en calculer la moitié. Deuxièmement, si le tenseur d’entrée est symétrique, alors l’algorithme n’a besoin que de lire la moitié de celui-ci. Enfin, si les résultats intermédiaires des opérations du tenseur sont symétriques, l’algorithme peut ignorer les calculs redondants.

Optimisations simultanées

Pour utiliser SYSTEC, un développeur saisit son programme et le système optimise automatiquement leur code pour les trois types de symétrie. Ensuite, la deuxième phase de SYSTEC effectue des transformations supplémentaires pour stocker uniquement les valeurs de données non nulles, optimisant le programme de rareté.

En fin de compte, Systec génère du code prêt à l’emploi.

« De cette façon, nous obtenons les avantages des deux optimisations. Et la chose intéressante à propos de la symétrie est, car votre tenseur a plus de dimensions, vous pouvez réaliser encore plus d’économies sur le calcul », dit Ahrens.

Les chercheurs ont démontré des accélérations de près d’un facteur de 30 avec le code généré automatiquement par Systec.

Parce que le système est automatisé, il pourrait être particulièrement utile dans les situations où un scientifique veut traiter les données à l’aide d’un algorithme qu’il écrit à partir de zéro.

À l’avenir, les chercheurs souhaitent intégrer le système dans les systèmes de compilateur de tenseur clairsemé existants pour créer une interface transparente pour les utilisateurs. De plus, ils aimeraient l’utiliser pour optimiser le code pour des programmes plus compliqués.