A PyTorch modeljei közvetlenül futhatnak Arm Cortex-M chipeken

A PyTorch modellek közvetlenül futhatnak Arm Cortex-M processzorokon az ExecuTorch új háttérrendszerével. A megoldás CMSIS-NN gyorsítást használ, és egyetlen munkafolyamatban támogatja a Cortex-M processzorcsalád Scalar, DSP és MVE, vagyis Helium képességszintjeit.
- Az ExecuTorch közvetlenül futtat PyTorch modelleket Arm Cortex-M CPU-kon.
- A backend CMSIS-NN-optimalizált műveleteket és célhardverre szabott fordítást használ.
- A Scalar, DSP és MVE, vagyis Helium képességszinteket egyetlen munkafolyamat támogatja.
- A tesztelt négy MLPerf Tiny modell legfeljebb 21,5 milliszekundum alatt futott.
- Az ExecuTorch mag futtatókörnyezete 20 KiB flashméret alatt marad.
Kimaradhat a modellátalakítás
A PyTorch szerint a mikrokontrollerekre történő gépi tanulási telepítés eddig gyakran azt jelentette, hogy a modelleket más keretrendszerek formátumára kellett átalakítani. Ehhez külön tanítási és telepítési eszközláncokat kellett fenntartani, miközben az átalakítás során keletkező numerikus eltéréseket is hibakeresni kellett.
Az ExecuTorch Cortex-M háttérrendszere ezt a lépést iktatja ki. A betanított PyTorch-modell exportálása, kvantálása és az adott eszközre történő fordítása ugyanabban a rendszerben történik, amelyet a keretrendszer mobil-, asztali és szerveres modellekhez is használ. Az Arm MCU-k támogatása korábban az Ethos-U neurális feldolgozóegységen keresztül volt elérhető, az új háttér pedig a Cortex-M CPU-kra is kiterjeszti a futtatást.
A teljes Cortex-M termékskálát célozza
A backend a standard PyTorch-operátorokat fordítási időben CMSIS-NN-re épülő egyedi operátorokra cseréli. Futtatáskor ezek közvetlenül az Arm nyílt forráskódú CMSIS-NN könyvtárának, a Cortex-M processzorokra optimalizált neurális hálózati rutinjait hívják meg.
A célprocesszor és az utasításkészlet képességszintje fordításkor választható ki, így nincs szükség futásidejű elágazásra. A Scalar szint az M0, M0+, M3 és M23 magokat, a DSP szint az M4, M7, M33 és M35P magokat, az MVE, más néven Helium szint pedig az M55 és M85 magokat fedi le. A PyTorch szerint a legnagyobb teljesítménynövekedés a Helium technológiától várható, amely különösen a mélységi és pontonkénti konvolúciók feldolgozását gyorsítja.
A fordítási folyamat a célhardver ismeretében optimalizálja a gráfot, a memóriatervezést, a súlyok elrendezését és a kernelválasztást. A rendszer előre lefoglalja a tenzorok és munkaterületek memóriáját, több memóriaterületet, például TCM-et és SRAM-ot is kezel, és nincs szüksége kupacallokátorra vagy futásidejű memóriakezelésre.
Kis erőforrásigényű beágyazott futtatás
Az ExecuTorch központi futtatókörnyezete 20 KiB flashméret alatt marad. Az operátorok szelektív beépítése csak a modell által használt műveleteket kapcsolja a programhoz, így a teljes kódméret a modellhez igazodik, nem a teljes keretrendszerhez.
A PyTorch a MLPerf Tiny mérőcsomag öt modellje közül négyet tesztelt az Alif Ensemble E8 eszközön. A forrás szerint mindegyik modell legfeljebb 21,5 milliszekundum alatt futott le, és egyetlen Cortex-M55 magon 90 KiB-nál kevesebb RAM-ot használt.
Az olyan heterogén chipeken, amelyek Cortex-M CPU-t és Ethos-U neurális feldolgozóegységet is tartalmaznak, a két végrehajtási út ugyanazon a modellen belül használható. Az Ethos-U-ra delegálható műveleteket a Vela fordító kezeli, a fennmaradó műveletek pedig a Cortex-M CPU-n futhatnak. A PyTorch szerint így a hiányos NPU-operátortámogatás önmagában nem akadályozza meg a modell beágyazott telepítését.
PyTorch: Bringing ExecuTorch to Arm Cortex-M CPUs

