AI systémy a vývojArchitektúra a prevádzka·2 minOdborný rozbor

ExecuTorch prináša modely PyTorch priamo na mikrokontroléry Cortex-M

Nový backend využíva CMSIS-NN a kompiláciu pre konkrétny čip. Ukážka detekcie osoby zároveň vysvetľuje rozdiel medzi časom inferencie a rýchlosťou celej kamery.

Oficiálny vizuál článku PyTorch o podpore Cortex-M v ExecuTorch.
Oficiálny vizuál článku PyTorch o podpore Cortex-M v ExecuTorch. PyTorch / Arm / Meta

Menej prekladov medzi nástrojmi

Tím PyTorch 15. októbra predstavil backend ExecuTorch pre procesory Arm Cortex-M. Model natrénovaný v PyTorch možno exportovať, kvantizovať a pripraviť pre mikrokontrolér v nadväzujúcom softvérovom postupe. Vývojár tak nemusí prechádzať do iného ekosystému len preto, aby model dostal na malé zariadenie.

Cieľom sú senzory, hlasové rozhrania či jednoduché kamery s obmedzenou pamäťou. Podpora sa týka viacerých tried Cortex-M, od skalárnych jadier po modely s vektorovým rozšírením Helium. Rovnaký postup však neznamená rovnakú rýchlosť na každom čipe.

Kompilácia rozhodne ešte pred spustením

Backend nahrádza vhodné operácie optimalizovanými funkciami knižnice CMSIS-NN. Cieľové jadro a jeho inštrukcie sa vyberajú pri zostavení. Kvantizácia INT8 znižuje nároky a optimalizácie dopredu pripravia rozloženie váh či pamäte. Zariadenie potom nevykonáva prácu, ktorú bolo možné urobiť už pri exporte.

Autori uvádzajú jadro runtime pod 20 KiB flash, ale nejde o veľkosť kompletnej aplikácie. Tá zahŕňa váhy, použité operátory, ovládače a ďalšie komponenty. Výber iba potrebných operácií pomáha udržať binárny súbor malý, no konečný rozpočet sa musí overiť na konkrétnom modeli.

Detekcia osoby ukazuje reálne obmedzenia

V ukážke na doske Renesas EK-RA8D1 s Cortex-M85 zaberá INT8 model µYOLO približne 452 KiB, celá aplikácia okolo 640 KiB flash a špičková RAM približne 254 KiB. Samotná inferencia dosahuje 24 ms pri 480 MHz, zatiaľ čo kompletný kamerový postup beží približne na 12,7 snímky za sekundu.

Rozdiel tvoria aj presuny a spracovanie obrazových dát. Autori navyše ukazujú výrazný vplyv umiestnenia pamäte a cache. Pre integrátora je preto dôležitejší celý priechod od snímača po rozhodnutie než izolované číslo neurónovej siete. Dokumentácia a vzorový projekt umožňujú postup zopakovať, ale fyzická doska, periférie a pamäťová mapa ostávajú súčasťou vlastnej integračnej práce.

Pre zariadenie v teréne je dôležitá aj stabilita dlhého behu. Jednorazové meranie nemusí odhaliť súbeh kamery, komunikácie a ďalších úloh firmvéru. Vývojár preto potrebuje sledovať pamäťový vrchol v celej aplikácii a overiť správanie pri chybnom alebo chýbajúcom vstupe. Výhodou spoločného exportného postupu je ľahšie porovnanie modelu pred nasadením a po ňom; konečná integrácia však stále patrí do vývoja konkrétneho zariadenia.

Technický kontext

Stav overenia: Spracované podľa zdroja; redakcia postup nereprodukovala.

Verzie: Zdroj neuvádza konkrétne verzie.

Podmienky použitia: Použitie závisí od konkrétnej konfigurácie a dokumentácie uvedenej v zdrojoch.

Obmedzenia: Redakcia nereprodukovala testy dodávateľov; staršie udalosti sú v texte datované.

Zdroje

  1. Bringing ExecuTorch to Arm Cortex-M CPUs - PyTorch ↗
  2. Arm Cortex-M Backend — ExecuTorch main documentation ↗