Les modèles d'apprentissage profond personnalisés peuvent permettre aux chatbots d'intelligence artificielle de s'adapter pour comprendre l'accent d'un utilisateur ou aux claviers intelligents qui se mettent à jour en permanence pour mieux prédire le mot suivant en fonction de l'historique de frappe d'une personne. Cette personnalisation nécessite un ajustement constant d'un modèle d'apprentissage automatique avec de nouvelles données.
Étant donné que les smartphones et autres appareils de pointe ne disposent pas de la mémoire et de la puissance de calcul nécessaires à ce processus de réglage fin, les données des utilisateurs sont généralement téléchargées sur des serveurs cloud où le modèle est mis à jour. Mais la transmission de données consomme beaucoup d’énergie et l’envoi de données utilisateur sensibles vers un serveur cloud présente un risque pour la sécurité.
Des chercheurs du MIT, du MIT-IBM Watson AI Lab et d'ailleurs ont développé une technique qui permet aux modèles d'apprentissage profond de s'adapter efficacement aux nouvelles données de capteurs directement sur un appareil de pointe.
Leur méthode de formation sur appareil, appelée Moteur Pock, détermine quelles parties d'un énorme modèle d'apprentissage automatique doivent être mises à jour pour améliorer la précision, et stocke et calcule uniquement avec ces éléments spécifiques. Il effectue la majeure partie de ces calculs pendant la préparation du modèle, avant l'exécution, ce qui minimise la surcharge de calcul et accélère le processus de réglage fin.
Par rapport à d'autres méthodes, PockEngine a considérablement accéléré la formation sur appareil, fonctionnant jusqu'à 15 fois plus rapidement sur certaines plates-formes matérielles. De plus, PockEngine n’a pas entraîné de baisse de précision des modèles. Les chercheurs ont également découvert que leur méthode de réglage précis permettait à un chatbot IA populaire de répondre avec plus de précision à des questions complexes.
« Un réglage précis sur l'appareil peut permettre une meilleure confidentialité, une réduction des coûts, une capacité de personnalisation et également un apprentissage tout au long de la vie, mais ce n'est pas facile. Tout doit se faire avec un nombre limité de ressources. Nous voulons pouvoir exécuter non seulement des inférences, mais également des formations sur un appareil de pointe. Avec PockEngine, c'est désormais possible », déclare Song Han, professeur agrégé au Département de génie électrique et d'informatique (EECS), membre du MIT-IBM Watson AI Lab, scientifique distingué chez NVIDIA et auteur principal d'un accès libre article décrivant PockEngine.
Han est rejoint dans l'article par l'auteur principal Ligeng Zhu, étudiant diplômé de l'EECS, ainsi que par d'autres au MIT, au MIT-IBM Watson AI Lab et à l'Université de Californie à San Diego. L'article a été récemment présenté au Symposium international IEEE/ACM sur la microarchitecture.
Couche par couche
Les modèles d'apprentissage profond sont basés sur les réseaux de neurones, qui comprennent de nombreuses couches de nœuds interconnectées, ou « neurones », qui traitent les données pour effectuer une prédiction. Lorsque le modèle est exécuté, un processus appelé inférence, une entrée de données (telle qu'une image) est transmise de couche en couche jusqu'à ce que la prédiction (peut-être l'étiquette de l'image) soit sortie à la fin. Lors de l'inférence, chaque couche n'a plus besoin d'être stockée après avoir traité l'entrée.
Mais lors de la formation et de la mise au point, le modèle est soumis à un processus appelé rétropropagation. Lors de la rétropropagation, le résultat est comparé à la bonne réponse, puis le modèle est exécuté à l'envers. Chaque couche est mise à jour à mesure que la sortie du modèle se rapproche de la bonne réponse.
Étant donné que chaque couche peut devoir être mise à jour, l'intégralité du modèle et les résultats intermédiaires doivent être stockés, ce qui rend le réglage fin plus gourmand en mémoire que l'inférence.
Cependant, toutes les couches du réseau neuronal ne sont pas importantes pour améliorer la précision. Et même pour les couches importantes, il n’est peut-être pas nécessaire de mettre à jour la couche entière. Ces couches, ainsi que les morceaux de couches, n'ont pas besoin d'être stockés. De plus, il n’est peut-être pas nécessaire de remonter jusqu’à la première couche pour améliorer la précision : le processus pourrait être arrêté quelque part au milieu.
PockEngine profite de ces facteurs pour accélérer le processus de réglage fin et réduire la quantité de calcul et de mémoire requise.
Le système affine d’abord chaque couche, une à la fois, sur une tâche donnée et mesure l’amélioration de la précision après chaque couche individuelle. De cette manière, PockEngine identifie la contribution de chaque couche, ainsi que les compromis entre précision et coût de réglage fin, et détermine automatiquement le pourcentage de chaque couche qui doit être peaufiné.
« Cette méthode correspond très bien à la précision par rapport à la rétro-propagation complète sur différentes tâches et différents réseaux neuronaux », ajoute Han.
Un modèle épuré
Classiquement, le graphique de rétropropagation est généré pendant l'exécution, ce qui implique beaucoup de calculs. Au lieu de cela, PockEngine le fait pendant la compilation, pendant que le modèle est en cours de préparation pour le déploiement.
PockEngine supprime des morceaux de code pour supprimer les couches ou morceaux de couches inutiles, créant ainsi un graphique épuré du modèle à utiliser pendant l'exécution. Il effectue ensuite d'autres optimisations sur ce graphique pour améliorer encore l'efficacité.
Étant donné que tout cela ne doit être fait qu’une seule fois, cela permet d’économiser sur la surcharge de calcul pour l’exécution.
« C’est comme avant de partir en randonnée. À la maison, vous planifiez soigneusement : quels sentiers allez-vous emprunter, quels sentiers allez-vous ignorer. Ainsi, au moment de l'exécution, lorsque vous faites réellement de la randonnée, vous avez déjà un plan très minutieux à suivre », explique Han.
Lorsqu'ils ont appliqué PockEngine à des modèles d'apprentissage en profondeur sur différents appareils de pointe, notamment les puces Apple M1 et les processeurs de signaux numériques courants dans de nombreux smartphones et ordinateurs Raspberry Pi, l'entraînement sur appareil a été effectué jusqu'à 15 fois plus rapidement, sans aucune baisse de précision. PockEngine a également considérablement réduit la quantité de mémoire requise pour le réglage fin.
L’équipe a également appliqué la technique au grand modèle de langage Llama-V2. Avec de grands modèles de langage, le processus de mise au point implique de fournir de nombreux exemples, et il est crucial que le modèle apprenne à interagir avec les utilisateurs, explique Han. Le processus est également important pour les modèles chargés de résoudre des problèmes complexes ou de raisonner sur des solutions.
Par exemple, les modèles Llama-V2 affinés à l'aide de PockEngine ont répondu à la question « Quel était le dernier album de Michael Jackson ? » correctement, tandis que les modèles qui n'étaient pas réglés avec précision ont échoué. PockEngine a réduit le temps nécessaire à chaque itération du processus de réglage fin d'environ sept secondes à moins d'une seconde sur NVIDIA Jetson Orin, une plate-forme GPU de pointe.
À l’avenir, les chercheurs souhaitent utiliser PockEngine pour affiner des modèles encore plus grands conçus pour traiter ensemble le texte et les images.
« Ce travail répond aux défis d’efficacité croissants posés par l’adoption de grands modèles d’IA tels que les LLM dans diverses applications dans de nombreux secteurs différents. Cela est non seulement prometteur pour les applications de pointe intégrant des modèles plus grands, mais également pour réduire le coût de maintenance et de mise à jour de grands modèles d'IA dans le cloud », déclare Ehry MacRostie, cadre supérieur de la division Intelligence générale artificielle d'Amazon, qui n'a pas été impliqué dans ce projet. étudie mais travaille avec le MIT sur des recherches connexes sur l'IA via le MIT-Amazon Science Hub.
Ce travail a été soutenu, en partie, par le MIT-IBM Watson AI Lab, le MIT AI Hardware Program, le MIT-Amazon Science Hub, la National Science Foundation (NSF) et la Qualcomm Innovation Fellowship.