TorchX- Und Ax-Integration: Effizientere Suche Nach Neuronalen Architekturen Mit Mehreren Zielen

Das Ziel von NAS ist es, die beste Architektur für ein neuronales Netzwerk zu finden. Die Integration von Torch und Ax bietet Unterstützung für die mehrzielige Erforschung neuronaler Architekturen. In diesem Artikel demonstrieren wir die Verwendung von Multi-Objective Bayesian NAS zur Durchführung einer vollautomatischen Suche nach neuronalen Architekturen.
Mehrzieloptimierung in Ax (Multi-Objective Optimization) kann die Suche nach neuronaler Architektur effektiv erkunden Suche nach neuronaler Architektur Abtausch , wie etwa der Kompromiss zwischen Modellleistung und Modellgröße oder Latenz.
Dieser Ansatz wurde von Meta erfolgreich in verschiedenen Produkten wie On-Device AI eingesetzt.
Dieser Artikel bietet ein umfassendes Tutorial zur Verwendung von TorchX.
Axt Einführung
Sowohl die Größe als auch die Komplexität neuronaler Netzwerke nehmen weiter zu.Die Entwicklung modernster Architekturen ist oft ein langwieriger und zeitaufwändiger Prozess, der Fachwissen und umfangreiche technische Anstrengungen erfordert.
Um diese Herausforderungen zu bewältigen, wurden mehrere Methoden zur Suche nach neuronalen Architekturen (NAS) vorgeschlagen.Um automatisch leistungsstarke Architekturen zu entwerfen, ohne dass ein Mensch in die Schleife eingreifen muss (HITL).
Obwohl die Probeneffizienz gering ist,Aber naive Methoden wie die Zufallssuche und die Rastersuche sind für die Hyperparameteroptimierung und NAS immer noch beliebt. Eine bei NeurIPS 2019 und ICLR 2020 durchgeführte Studie ergab, dass 80% der NeurIPS-Papiere und 88% der ICLR-Papiere manuelles Tuning, Zufallssuche oder Rastersuche verwendeten, um die Hyperparameter des ML-Modells anzupassen.
Da das Modelltraining oft zeitaufwändig ist und viele Rechenressourcen benötigt,Daher ist es sehr wichtig, die Anzahl der ausgewerteten Konfigurationen zu minimieren.
Ax ist ein allgemeines Tool zur Black-Box-Optimierung, das es Benutzern ermöglicht, beim Erkunden großer Suchräume modernste Algorithmen wie die Bayes-Optimierung auf stichprobeneffiziente Weise zu verwenden.
Meta verwendet Ax in verschiedenen Bereichen.Bereiche wie Hyperparameter-Tuning, NAS, Bestimmung optimaler Produkteinstellungen mit groß angelegten A/B-Tests, Infrastrukturoptimierung und Entwicklung modernster AR/VR-Hardware.
Bei vielen NAS-Anwendungen besteht ein natürlicher Kompromiss zwischen mehreren interessanten Metriken.Wenn Sie beispielsweise ein Modell auf einem Gerät bereitstellen, möchten Sie die Modellleistung (z. B. Genauigkeit) maximieren und gleichzeitig konkurrierende Metriken wie Stromverbrauch, Inferenzlatenz oder Modellgröße minimieren, um Bereitstellungsbeschränkungen einzuhalten.
In vielen Fällen ist eine kleine Verringerung der Modellleistung im Austausch für eine erhebliche Reduzierung des Rechenaufwands oder der Vorhersagelatenz akzeptabel (in einigen Fällen kann dies sowohl zu einer verbesserten Genauigkeit als auch zu einer verringerten Latenz führen!).
Ein wesentlicher Faktor für nachhaltige KI ist ein prinzipieller Ansatz, um die Auswirkungen solcher Kompromisse effektiv zu untersuchen.
Meta untersucht diesen Kompromiss erfolgreich mithilfe des multiobjektiven Bayesian NAS in Ax.Und die Methode wird bereits routinemäßig zur Optimierung von ML-Modellen auf AR/VR-Geräten verwendet.
Zusätzlich zu NAS-Anwendungen hat Meta auch MORBO entwickelt, eine Methode zur hochdimensionalen Mehrzieloptimierung optischer AR-Systeme.
Multiobjektives Bayesianisches NAS in Ax:
Verwenden von Ax zur Implementierung eines vollautomatischen Multi-Objective-Nas
Der Scheduler von Ax ermöglicht die asynchrone Ausführung von Experimenten in einem geschlossenen Kreislauf.Dies geschieht, indem kontinuierlich Experimente auf einem externen System bereitgestellt, die Ergebnisse abgefragt, die erfassten Daten zum Generieren weiterer Experimente verwendet und der Vorgang wiederholt wird, bis eine Abbruchbedingung erfüllt ist. Es ist kein menschliches Eingreifen oder keine Überwachung erforderlich. Die Funktionen dieses Schedulers sind:
- Parallelität, Fehlertoleranz und viele andere Einstellungen können angepasst werden.
- Große Auswahl modernster Optimierungsalgorithmen.
- Speichern Sie laufende Experimente (SQL DB oder JSON) und stellen Sie Experimente aus dem Speicher wieder her.
- Einfache Erweiterung auf neue Backends zur Remote-Durchführung von Testauswertungen.
Unten sehen Sie eine Abbildung aus dem Ax-Scheduler-Tutorial, die zusammenfasst, wie Sceduler mit jedem externen System interagiert, das zum Ausführen von Testauswertungen verwendet wird.
Axe-Scheduler-Tutorial:
https://ax.dev/tutorials/scheduler.html

Um automatisches NAS mithilfe des Schedulers auszuführen, sind die folgenden Vorbereitungen erforderlich:
- Definieren Sie einen Läufer.Verantwortlich für das Senden eines Modells mit einer bestimmten Architektur, das auf der Plattform unserer Wahl trainiert werden soll. (Kubernetes kann beispielsweise nur ein lokales Docker-Image sein). Im folgenden Tutorial wird TorchX zur Bereitstellung des Trainingsjobs verwendet.
- Definieren Sie eine Metrik.Verantwortlich für das Erhalten objektiver Messwerte (wie Genauigkeit, Modellgröße, Latenz) aus Trainingsaufgaben. Im folgenden Tutorial wird Tensorboard zum Protokollieren von Daten verwendet, sodass Sie die mit Ax gebündelten Tensorboard-Metriken verwenden können.
Lernprogramm
Tutorial, das zeigt, wie Sie mit Ax ein multiobjektives NAS für ein einfaches neuronales Netzwerkmodell auf dem beliebten MNIST-Datensatz ausführen.
Während die grundlegende Methodik für komplexere Modelle und größere Datensätze verwendet werden kann, wurde ein Lernprogramm ausgewählt, das problemlos auf einem Laptop ausgeführt und in weniger als einer Stunde vollständig abgeschlossen werden kann.
In diesem Beispiel passen wir die Breite der beiden verborgenen Schichten, die Lernrate, die Abbruchwahrscheinlichkeit, die Batchgröße und die Anzahl der Trainingsiterationen an.Das Ziel besteht darin, die multikriterielle Bayes-Optimierung zu nutzen, um die Leistung zu optimieren(Genauigkeit des Validierungssatzes) und Modellgröße (Anzahl der Modellparameter).
Dieses Tutorial verwendet die folgenden PyTorch-Bibliotheken:
- PyTorch Lightnig (zum Festlegen des Modells und der Trainingsschleife)
https://github.com/Lightning-AI/lightning
- TorchX (zum Remote-/asynchronen Ausführen von Trainingsjobs)
https://github.com/pytorch/torchx
- BoTorch (die Bayessche Optimierungsbibliothek, die den Algorithmus von Ax antreibt)
https://github.com/pytorch/botorch
Ein vollständiges ausführbares Beispiel finden Sie unter:
https://pytorch.org/tutorials/intermediate/ax_multiobjective_nas_tutorial.html
Ergebnis
Das Endergebnis der im Lernprogramm durchgeführten NAS-Optimierung ist im folgenden Tradeoff-Diagramm zu sehen.Hier entspricht jeder Punkt dem Ergebnis eines Versuchs, die Farbe stellt seine Iterationsnummer dar und der Stern stellt den Referenzpunkt dar, der durch den dem Ziel auferlegten Schwellenwert definiert ist.
Es ist ersichtlich, dass mit dieser Methode der Kompromiss zwischen Validierungsgenauigkeit und Parameteranzahl erfolgreich ausgelotet werden kann.Es kann sowohl große Modelle mit hoher Verifizierungsgenauigkeit als auch kleine Modelle mit geringer Verifizierungsgenauigkeit finden.
Basierend auf Leistungsanforderungen und Modellgrößenbeschränkungen können Entscheidungsträger nun auswählen, welches Modell verwendet oder weiter analysiert werden soll.

Visualisierung
Ax bietet einige Visualisierungstools, die bei der Analyse und dem Verständnis experimenteller Ergebnisse helfen.Wir konzentrieren uns auf die Leistung von Gaußschen Prozessmodellen bei der Modellierung unbekannter Ziele, die dazu beitragen können, vielversprechende Konfigurationen schneller zu entdecken.
Ax hilft dabei, die Genauigkeit dieser Modelle und ihre Leistung bei unbekannten Daten durch Leave-One-Out-Kreuzvalidierung besser zu verstehen.
In den folgenden Abbildungen können wir sehen, dass das Modell recht gut passt – die Vorhersagen liegen nahe an den tatsächlichen Ergebnissen.Die vorhergesagten 95%-Konfidenzintervalle decken die tatsächlichen Ergebnisse gut ab.
Darüber hinaus ist ersichtlich, dass die Modellgröße (Anzahl_Parameter) Genauigkeit der Indexverhältnisüberprüfung (val_acc) Indikatoren lassen sich leichter modellieren.

Zusammenfassung von Ax
- Tutorial, das zeigt, wie man mit Ax eine vollautomatische Suche nach neuronalen Architekturen mit mehreren Zielen durchführt.
- Verwenden Sie den Ax-Scheduler, um Optimierungen automatisch und vollständig asynchron auszuführen (dies kann lokal erfolgen) oder indem Sie Experimente remote in einem Cluster bereitstellen (ändern Sie einfach die TorchX-Scheduler-Konfiguration).
- Die hochmodernen, mehrzieligen Bayes-Optimierungsalgorithmen von Ax helfen dabei, den Kompromiss zwischen Validierungsgenauigkeit und Modellgröße effektiv zu erkunden.
Erweiterte Funktionen
Ax verfügt über einige weitere erweiterte Funktionen, die im obigen Tutorial nicht besprochen werden. Enthält Folgendes:
Frühzeitiges Stoppen
Bei der Evaluierung einer neuen Kandidatenkonfiguration sind während der Ausführung des NN-Trainingsjobs häufig partielle Lernkurven verfügbar.
Die in den Teilkurven enthaltenen Informationen werden verwendet, um Versuche mit schlechter Leistung zu identifizieren, sodass diese frühzeitig abgebrochen werden können, wodurch Rechenressourcen für vielversprechendere Kandidaten frei werden. Obwohl es im obigen Tutorial nicht gezeigt wird, unterstützt Axe Early Stopping standardmäßig.
https://ax.dev/versions/latest/tutorials/early_stopping/early_stopping.html
Hochdimensionaler Suchraum
Das Tutorial verwendet Bayes-Optimierung mit einem Standard-Gauß-Prozess, um die Laufzeit gering zu halten.
Allerdings sind diese Modelle normalerweise nur auf etwa 10–20 anpassbare Parameter skalierbar. Die neue SAASBO-Methode ist sehr probeneffizient und kann Hunderte von Parametern optimieren. Durch Select_Generation_Strategy überweisen use_saasbo=Wahr , SAASBO kann einfach aktiviert werden.
Das Obige ist eine Einführung in TorchX. Die PyTorch-Entwickler-Community wird sich weiterhin auf die Verwendung von Graphtransformationen konzentrieren, um die Leistung von PyTorch-Produktionsmodellen zu optimieren.
Suchen Sie nach Hyperai01, beachten Sie " PyTorchTreten Sie der technischen Austauschgruppe von PyTorch bei, um mehr über die neuesten Entwicklungen und Best Practices von PyTorch zu erfahren!