Heim > Artikel > Technologie-Peripheriegeräte > Implementieren Sie Edge-Training mit weniger als 256 KB Speicher, und die Kosten betragen weniger als ein Tausendstel von PyTorch
Wenn es um das Training neuronaler Netze geht, ist der erste Eindruck eines jeden GPU + Server + Cloud-Plattform. Aufgrund des enormen Speicheraufwands wird herkömmliches Training oft in der Cloud durchgeführt und die Edge-Plattform ist nur für die Inferenz verantwortlich. Ein solches Design erschwert jedoch die Anpassung des KI-Modells an neue Daten: Schließlich ist die reale Welt ein dynamisches, sich veränderndes und sich entwickelndes Szenario. Wie kann ein Training alle Szenarien abdecken?
Können wir ein Training am Edge (On-Device-Training) durchführen, damit sich das Modell kontinuierlich an neue Daten anpassen kann, damit das Gerät kontinuierlich selbstständig lernen kann? In dieser Arbeit haben wir ein On-Device-Training mit weniger als 256 KB Speicher implementiert, und der Overhead betrug weniger als 1/1000 von PyTorch Gleichzeitig haben wir ein Cloud-Training für die visuelle Wake-Word-Aufgabe (VWW) durchgeführt ). Genauigkeit. Diese Technologie ermöglicht es Modellen, sich an neue Sensordaten anzupassen. Benutzer können maßgeschneiderte Dienste nutzen, ohne Daten in die Cloud hochladen zu müssen, wodurch die Privatsphäre geschützt wird.
Training am Gerät (On-Device Training) ermöglicht vorab trainierten Modellen die Anpassung an neue Umgebungen nach der Bereitstellung. Durch lokales Training und Anpassung auf Mobilgeräten kann das Modell seine Ergebnisse kontinuierlich verbessern und das Modell für den Benutzer anpassen. Durch die Feinabstimmung von Sprachmodellen können sie beispielsweise aus dem Eingabeverlauf lernen. Durch die Anpassung von Vision-Modellen können intelligente Kameras kontinuierlich neue Objekte erkennen. Indem wir das Training näher an das Terminal und nicht an die Cloud verlegen, können wir die Modellqualität effektiv verbessern und gleichzeitig die Privatsphäre der Benutzer schützen, insbesondere bei der Verarbeitung privater Informationen wie medizinischer Daten und des Eingabeverlaufs.
Das Training auf kleinen IoT-Geräten unterscheidet sich jedoch wesentlich vom Cloud-Training und ist sehr anspruchsvoll. Erstens ist die SRAM-Größe von AIoT-Geräten (MCU) normalerweise begrenzt (256 KB). Auf dieser Ebene des Gedächtnisses ist es sehr schwierig, Schlussfolgerungen zu ziehen, geschweige denn zu trainieren. Darüber hinaus weisen die vorhandenen kostengünstigen und effizienten Transfer-Lernalgorithmen, wie z. B. nur das Training des Last-Layer-Klassifikators (letzter FC) und nur das Lernen des Bias-Terms, oft eine unbefriedigende Genauigkeit auf und können in der Praxis nicht verwendet werden, geschweige denn in modernen Anwendungen Deep-Learning-Frameworks sind nicht in der Lage, die theoretischen Zahlen dieser Algorithmen in gemessene Einsparungen umzuwandeln. Schließlich sind moderne Deep-Training-Frameworks (PyTorch, TensorFlow) normalerweise für Cloud-Server konzipiert, und das Training kleiner Modelle (MobileNetV2-w0.35) erfordert viel Speicher, selbst wenn die Batch-Größe auf 1 eingestellt ist. Daher müssen wir Algorithmen und Systeme gemeinsam entwerfen, um ein Training auf intelligenten Endgeräten zu erreichen.
Wir haben festgestellt, dass das Training auf dem Gerät zwei einzigartige Herausforderungen mit sich bringt: (1) Das Modell wird auf dem Edge-Gerät quantisiert. Ein wirklich quantisierter Graph (siehe unten) ist aufgrund der geringen Genauigkeit der Tensoren und des Fehlens von Stapelnormalisierungsschichten schwierig zu optimieren. (2) Die begrenzten Hardwareressourcen (Speicher und Berechnung) kleiner Hardware ermöglichen keine vollständige Backpropagation, was die Speichernutzung beeinträchtigt kann leicht die Grenze des SRAM des Mikrocontrollers überschreiten (um mehr als eine Größenordnung), aber wenn nur die letzte Schicht aktualisiert wird, wird die endgültige Genauigkeit zwangsläufig unbefriedigend sein.
Um die Schwierigkeit der Optimierung zu bewältigen, schlagen wir Quantization-Aware Scaling (QAS) vor, um den Gradienten von Tensoren mit unterschiedlichen Bitgenauigkeiten automatisch zu skalieren (wie in der linken Abbildung unten dargestellt). QAS kann Steigungen und Parameterskalen automatisch anpassen und das Training stabilisieren, ohne dass zusätzliche Hyperparameter erforderlich sind. Bei 8 Datensätzen kann QAS mit Gleitkomma-Training eine konsistente Leistung erzielen (rechtes Bild unten).
Um den für die Backpropagation erforderlichen Speicherbedarf zu reduzieren, schlagen wir Sparse Update vor, um die Gradientenberechnung weniger wichtiger Ebenen und Unterblätter zu überspringen. Wir entwickeln eine automatische Methode basierend auf der Beitragsanalyse, um das optimale Aktualisierungsschema zu finden. Verglichen mit der vorherigen, nur voreingenommenen Aktualisierung der letzten k-Schichten hat das von uns durchsuchte Sparse-Aktualisierungsschema 4,5- bis 7,5-fache Speichereinsparungen, und die durchschnittliche Genauigkeit bei 8 Downstream-Datensätzen ist sogar noch höher.
Um die theoretische Reduktion im Algorithmus in reale numerische Werte umzuwandeln, haben wir die Tiny Training Engine (TTE) entwickelt: Sie verlagert die Arbeit der automatischen Differenzierung auf die Kompilierungszeit und verwendet Codegen, um den Laufzeitaufwand zu reduzieren. Es unterstützt auch das Beschneiden und Neuanordnen von Diagrammen für echte Einsparungen und Beschleunigungen. Sparse Update reduziert den Spitzenspeicher effektiv um das 7- bis 9-fache im Vergleich zum Full Update und kann durch Neuordnung weiter auf das 20- bis 21-fache der gesamten Speichereinsparung verbessert werden. Im Vergleich zu TF-Lite erhöhen der optimierte Kernel und das Sparse-Update in TTE die Gesamttrainingsgeschwindigkeit um das 23- bis 25-fache.
In diesem Artikel haben wir die erste Lösung vorgestellt, um das Training auf einem Mikrocontroller (mit nur 256 KB Speicher und 1 MB Flash-Speicher) umzusetzen. Unser Algorithmus-System-Co-Design (System-Algorithm Co-Design) reduziert den für das Training erforderlichen Speicher (1000 Mal im Vergleich zu PyTorch) und die Trainingszeit (20 Mal im Vergleich zu TF-Lite) erheblich und erzielt eine höhere Genauigkeit bei nachgelagerten Aufgaben. Tiny Training kann viele interessante Anwendungen ermöglichen. Beispielsweise können Mobiltelefone Sprachmodelle basierend auf den E-Mails/Eingabehistorien der Benutzer anpassen, intelligente Kameras können kontinuierlich neue Gesichter/Objekte erkennen und einige KI-Szenarien, die nicht mit dem Internet verbunden werden können, können ebenfalls fortgesetzt werden zu lernen (z. B. Landwirtschaft, Schifffahrt, industrielle Montagelinien). Durch unsere Arbeit können kleine Endgeräte nicht nur Inferenz, sondern auch Training durchführen. Bei diesem Vorgang werden niemals personenbezogene Daten in die Cloud hochgeladen, sodass kein Datenschutzrisiko besteht. Gleichzeitig kann das KI-Modell kontinuierlich selbstständig lernen, sich an eine sich dynamisch verändernde Welt anzupassen!
Das obige ist der detaillierte Inhalt vonImplementieren Sie Edge-Training mit weniger als 256 KB Speicher, und die Kosten betragen weniger als ein Tausendstel von PyTorch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!