Maison > Article > Périphériques technologiques > Implémentez une formation Edge avec moins de 256 Ko de mémoire et le coût est inférieur à un millième de celui de PyTorch
En matière de formation aux réseaux neuronaux, la première impression de chacun est GPU + serveur + plateforme cloud. En raison de son énorme surcharge de mémoire, la formation traditionnelle est souvent effectuée dans le cloud et la plate-forme périphérique est uniquement responsable de l'inférence. Cependant, une telle conception rend difficile l'adaptation du modèle d'IA aux nouvelles données : après tout, le monde réel est un scénario dynamique, changeant et évolutif. Comment une formation peut-elle couvrir tous les scénarios ?
Afin de permettre au modèle de s'adapter en permanence aux nouvelles données, pouvons-nous effectuer une formation en périphérie (formation sur l'appareil) afin que l'appareil puisse continuellement apprendre par lui-même ? Dans ce travail, nous avons implémenté une formation sur l'appareil en utilisant moins de 256 Ko de mémoire, et la surcharge était inférieure à 1/1000 de PyTorch. Dans le même temps, nous avons réalisé une formation cloud sur la tâche de mot de réveil visuel (VWW. ). Précision. Cette technologie permet aux modèles de s’adapter aux nouvelles données des capteurs. Les utilisateurs peuvent profiter de services personnalisés sans télécharger de données sur le cloud, protégeant ainsi leur confidentialité.
Formation sur l'appareil (On-device Training) permet aux modèles pré-entraînés de s'adapter aux nouveaux environnements après le déploiement. En s'entraînant et en s'adaptant localement sur mobile, le modèle peut améliorer continuellement ses résultats et personnaliser le modèle pour l'utilisateur. Par exemple, l’ajustement des modèles de langage leur permet d’apprendre de l’historique des entrées ; l’ajustement des modèles de vision permet aux caméras intelligentes de reconnaître en permanence de nouveaux objets. En rapprochant la formation du terminal plutôt que du cloud, nous pouvons améliorer efficacement la qualité des modèles tout en protégeant la confidentialité des utilisateurs, en particulier lors du traitement d'informations privées telles que les données médicales et l'historique des saisies.
Cependant, la formation sur les petits appareils IoT est fondamentalement différente de la formation sur le cloud et est très difficile. Premièrement, la taille SRAM des appareils AIoT (MCU) est généralement limitée (256 Ko). Ce niveau de mémoire est très difficile à déduire, sans parler de l'entraînement. De plus, les algorithmes d'apprentissage par transfert existants, peu coûteux et efficaces, tels que la formation uniquement du classificateur de dernière couche (dernier FC) et l'apprentissage uniquement du terme de biais, ont souvent une précision insatisfaisante et ne peuvent pas être utilisés dans la pratique, encore moins dans les applications modernes. les cadres d’apprentissage profond sont incapables de traduire les chiffres théoriques de ces algorithmes en économies mesurées. Enfin, les frameworks de formation approfondie modernes (PyTorch, TensorFlow) sont généralement conçus pour les serveurs cloud, et la formation de petits modèles (MobileNetV2-w0.35) nécessite une grande quantité de mémoire même si la taille du lot est définie sur 1. Par conséquent, nous devons co-concevoir des algorithmes et des systèmes pour réaliser la formation sur les terminaux intelligents.
Nous avons constaté que la formation sur appareil présente deux défis uniques : (1) Le modèle est quantifié sur l'appareil de pointe. Un graphique véritablement quantifié (illustré ci-dessous) est difficile à optimiser en raison de tenseurs de faible précision et du manque de couches de normalisation par lots ; (2) les ressources matérielles limitées (mémoire et calcul) du petit matériel ne permettent pas une rétropropagation complète, ce qui entraîne l'utilisation de la mémoire. peut facilement dépasser la limite de la SRAM du microcontrôleur (de plus d'un ordre de grandeur), mais si seule la dernière couche est mise à jour, la précision finale sera inévitablement insatisfaisante.
Pour faire face à la difficulté de l'optimisation, nous proposons une mise à l'échelle sensible à la quantification (QAS) pour mettre automatiquement à l'échelle le gradient des tenseurs avec différentes précisions en bits (comme le montre la figure de gauche ci-dessous). QAS peut automatiquement faire correspondre les gradients et les échelles de paramètres et stabiliser l'entraînement sans nécessiter d'hyperparamètres supplémentaires. Sur 8 ensembles de données, QAS peut atteindre des performances cohérentes avec un entraînement en virgule flottante (image de droite ci-dessous).
Afin de réduire l'empreinte mémoire requise pour la rétropropagation, nous proposons Sparse Update pour ignorer le calcul du dégradé des couches et sous-feuilles moins importantes. Nous développons une méthode automatique basée sur l'analyse des contributions pour trouver le schéma de mise à jour optimal. Par rapport à la précédente mise à jour des k dernières couches, uniquement biaisée, le schéma de mise à jour clairsemé que nous avons recherché permet d'économiser 4,5 à 7,5 fois la mémoire, et la précision moyenne sur 8 ensembles de données en aval est encore plus élevée.
Pour convertir la réduction théorique de l'algorithme en valeurs numériques réelles, nous avons conçu le Tiny Training Engine (TTE) : il déplace le travail de différenciation automatique vers le temps de compilation et utilise codegen pour réduire la surcharge d'exécution. Il prend également en charge l'élagage et la réorganisation des graphiques pour de réelles économies et accélérations. Sparse Update réduit efficacement la mémoire maximale de 7 à 9 fois par rapport à la mise à jour complète et peut être encore améliorée jusqu'à 20 à 21 fois les économies de mémoire totales avec une réorganisation. Par rapport à TF-Lite, le noyau optimisé et la mise à jour clairsemée dans TTE augmentent la vitesse globale d'entraînement de 23 à 25 fois.
Dans cet article, nous avons présenté la première solution pour mettre en œuvre une formation sur un microcontrôleur (avec seulement 256 Ko de mémoire et 1 Mo de mémoire flash). Notre co-conception de système d'algorithme (System-Algorithm Co-design) réduit considérablement la mémoire requise pour la formation (1 000 fois par rapport à PyTorch) et le temps de formation (20 fois par rapport à TF-Lite), et atteint une plus grande précision sur le taux des tâches en aval. Tiny Training peut permettre de nombreuses applications intéressantes. Par exemple, les téléphones mobiles peuvent personnaliser les modèles de langage en fonction des e-mails/de l'historique des entrées des utilisateurs, les caméras intelligentes peuvent reconnaître en permanence de nouveaux visages/objets, et certains scénarios d'IA qui ne peuvent pas être connectés à Internet peuvent également continuer. à apprendre (comme l'agriculture, la marine, les chaînes de montage industrielles). Grâce à notre travail, les petits appareils peuvent effectuer non seulement des inférences, mais également des formations. Dans ce processus, les données personnelles ne seront jamais téléchargées sur le cloud, il n'y a donc aucun risque pour la vie privée. Dans le même temps, le modèle d'IA peut continuellement apprendre par lui-même pour s'adapter à un monde en évolution dynamique !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!