Bisher mussten Entwicklerinnen und Entwickler PyTorch-Modelle für Cortex-M-Mikrocontroller in andere Framework-Formate übertragen und dafür getrennte Werkzeuge verwenden. Das neue Backend soll diesen Zwischenschritt vermeiden: Modelle werden innerhalb des ExecuTorch-Stacks exportiert, quantisiert und für das Zielgerät vorbereitet. Laut PyTorch gehören dadurch auch numerische Abweichungen beim Wechsel zwischen Frameworks nicht mehr zu diesem Ablauf.
Für die Ausführung ersetzt ExecuTorch ausgewählte PyTorch-Operatoren bereits während der Kompilierung durch angepasste Implementierungen. Diese greifen bei quantisierten Rechenoperationen auf CMSIS-NN zurück, eine Sammlung optimierter neuronaler Netzwerk-Kernels für Cortex-M. Der Zielprozessor und seine Befehlssatzerweiterungen werden vorab festgelegt; dadurch ist keine Auswahl des passenden Backends während der Laufzeit nötig. Die Quantisierung erzeugt INT8-Graphen, die auf die Datenanordnung der CMSIS-NN-Kernels abgestimmt sind.
Das Backend deckt laut PyTorch die Cortex-M-Leistungsklassen Scalar, DSP und MVE beziehungsweise Helium ab. Bei Systemen mit mehreren Verarbeitungseinheiten stellt es neben der Ausführung auf der CPU auch einen Ausführungspfad über einen Ethos-U-NPU bereit. Die Laufzeitumgebung von ExecuTorch benötigt laut PyTorch weniger als 20 KiB Flash-Speicher. Beim selektiven Build werden nur die Operatoren eingebunden, die ein Modell tatsächlich verwendet; die Gesamtgröße des Codes richtet sich damit nach dem Modell.
Für die Leistungstests nutzte PyTorch ein Alif Ensemble E8 mit einem einzelnen Cortex-M55-Kern. Vier der fünf Modelle aus der MLPerf-Tiny-Suite benötigten jeweils höchstens 21,5 Millisekunden und weniger als 90 KiB RAM. Die Werte beziehen sich auf diese Modelle und diese Plattform. PyTorch beschreibt außerdem Helium als besonders hilfreich für höhere Leistung bei Tiefen- und Punktfaltungen, die in Edge-ML-Modellen häufig vorkommen.
