AN13854 i.MX 93 aplikační procesory
Uživatelská příručka
AN13854 i.MX 93 aplikační procesory

AN13854
Průvodce migrací NPU z i.MX 8M Plus na i.MX 93
Rev. 1 – 18. září 2023
Informace o dokumentu
| Informace | Obsah |
| Klíčová slova | i.MX 93, i.MX 8M Plus, neurální procesorová jednotka (NPU), Tensor Flow Lite (Flite), AN13854 |
| Abstraktní | Tato poznámka k aplikaci popisuje, jak migrovat aplikaci strojového učení z i.MX 8M Plus na i.MX 93 s akcelerací NPU. |
Zavedení
Tato aplikační poznámka popisuje, jak migrovat aplikaci strojového učení z i.MX 8M Plus na i.MX 93 s akcelerací neurální procesorové jednotky (NPU). NPU zařízení i.MX 8M Plus a i.MX 93 jsou různé IP adresy a jejich vlastnosti a způsoby použití se také liší. Tento dokument představuje rozdíly mezi i.MX 8M Plus NPU a i.MX 93 NPU a pokrývá provozní pokyny a návrhy optimalizace. Pokud se však použije inference CPU, zařízení i.MX 8M Plus a i.MX 93 fungují podobným způsobem.
Konec NPUview
NPU poskytuje hardwarovou akceleraci pro pracovní zátěže AI/ML a funkce vidění. NPU s různými IP používají i.MX 8M Plus a i.MX 93.
2.1 Blokové schéma
Následující obrázek ukazuje blokové schéma vysoké úrovně NPU i.MX 8M Plus.

Tabulka 1. Funkční bloky i.MX 8M Plus NPU
| i.MX 8M Plus NPU blok | Popis |
| Hostitelské rozhraní | Umožňuje NPU komunikovat s externí pamětí a CPU přes AXI / autobus AHB. V tomto bloku data překračují hranice hodinové domény |
| Paměťový ovladač | Jednotka správy vnitřní paměti, která řídí rozhraní požadavku na paměť blok-hostitel |
| Přední část vidění | Vkládá primitiva a příkazy vysoké úrovně do kanálu vidění |
| Jádro neuronové sítě | Poskytuje paralelní konvoluci MAC pro rozpoznávací funkce pomocí 8bitového nebo 16bitového celého čísla |
| Tkanina na zpracování tenzoru | Poskytuje předzpracování dat a podporuje kompresi a ořezávání pro zpracování vícerozměrných polí pro neuronové sítě |
| Výpočetní jednotka | Programovatelná prováděcí jednotka procesoru SIMD, která funguje jako výpočetní jednotka. Blok NPU má jednu paralelní procesorovou jednotku vector4, která také funguje jako čtyři prvky zpracování |
| Vision engine | Poskytuje pokročilé funkce zpracování obrazu |
| Univerzální mezipaměť úložiště | Mezipaměť sdílená mezi přední částí vize a paralelní procesorovou jednotkou |
Poznámka:
Seznam operátorů podporovaných i.MX 8M Plus NPU viz https://www.nxp.com.cn/docs/en/user-guide/IMXMACHINE-LEARNING-UG.pdf— Podpora provozu OVXLIB s NPU.
Tabulka 2. Funkční bloky i.MX 93 NPU
| i.MX 93 NPU blok | Popis |
| Modul hodin a napájení (CPM) | Zvládá tvrdé a měkké resety, obsahuje registry pro aktuální nastavení zabezpečení, hlavní bránu hodin a rozhraní QLPI |
| Centrální ovládání | Řídí, jak NPU zpracovává neuronové sítě, udržuje synchronizaci a zpracovává datové závislosti |
| DMA ovladač | Spravuje všechny transakce, které používají rozhraní Arm AMBA 5 AXI |
| Dekodér hmotnosti | Přečte hmotnostní tok z ovladače DMA. Dekodér dekomprimuje a uloží tento tok do registru s dvojitou vyrovnávací pamětí, připravený na to, aby jej jednotka MAC spotřebovala. |
| jednotka MAC | Jednotka MAC provádí operace vícenásobné akumulace, které jsou vyžadovány pro konvoluci, hloubkové sdružování, vektorové produkty a maximální operaci požadovanou pro maximální sdružování. |
| Výstupní jednotka | Čte hotové akumulátory ze sdílené paměti RAM a převádí je na aktivace výstupu. Tento proces zahrnuje provedení škálování pro každý OFM, přidání zkreslení k hodnotám a použití aktivační funkce na každý bod |
| Sdílená paměť | Paměť je sdílena mezi řadičem DMA, jednotkou MAC a výstupní jednotkou |
Poznámka:
Seznam podporovaných operátorů i.MX 93 NPU viz https://www.nxp.com.cn/docs/en/user-guide/IMXMACHINE-LEARNING-UG.pdf— Podporované operátory a omezení ML.
2.2 Rozdíly v klíčových vlastnostech NPU
Následující tabulka popisuje funkce NPU i.MX 8M Plus a i.MX 93.
Tabulka 3. Vlastnosti NPU i.MX 8M Plus a i.MX 93
| Funkce | i.MX 8M Plus | i.MX 93 |
| Hostitel | Cortex-A53 | Cortex-M33 |
| IP NPU | VIP8000Nano | Ethos-U65 |
| Název uzlu zařízení | /dev/galore | /dev/ethous0 |
| Primární API | OpenX s rozšířením NN | Operátor Ethos-U |
| MAC za cyklus | 1152 | 256 |
| Hodiny | 1000 MHz | 1000 MHz |
2.3 Konec subsystému Ethos-Uview
Jednotka i.MX 8M Plus NPU je připojena ke sběrnici AXI-BUS a jádro Cortex-A jej řídí, zatímco jádro Cortex-M řídí i.MX 93 NPU Ethos-U65. Tento systém strojového učení i.MX 93 zahrnuje několik hardwarových komponent, které spolupracují na podpoře zrychlení výpočtu tenzoru modelu ML: Cortex-A, Cortex-M, messaging unit (MU) a Ethos-U NPU. 
Cortex-A55 je zodpovědný za načítání modelu ML, zachycování a předběžné zpracování dynamických vstupů s OS Linux a bohatými knihovnami. Cortex-M je řadič připojeného Ethos-U NPU. Připraví deskriptor vykládky pro NPU a spustí provádění NPU. Poskytuje také nepodporované spouštění jádra pro NPU. MU je IP jednotka zpráv pro usnadnění základní komunikace mezi Cortex-A a Cortex-M.
- Podporuje inferenci Tensor Flow Lite (Flite) s přechodem na Cortex-A
- Podporuje odvození Tensor Flow Lite Micro (Flite-Micro) s přechodem na Cortex-M
- Podporuje inferenční API pro přesunutí celého modelu do Flite-Micro a NPU na Cortex-M
- Podporuje Flite API pro přenesení přizpůsobeného operátora „ethos-u“ na NPU na Cortex-M
- Poskytuje modelový nástroj Vela pro optimalizaci výkonu modelu a využití paměti pro cíl Ethos-U65
2.4 Softwarová architektura Ethos-U
Obrázek 4 ukazuje tři hlavní součásti softwaru potřebného pro podporu Ethos-U.
- Kompilátor modelu Vela: offline nástroj pro kompilaci grafu modelu TFLite pro Ethos-U. Kompilátor nahradí podporované operátory v modelu vlastním operátorem „ethos-u“ obsahujícím příkazový tok pro Ethos-U NPU. Výstupem kompilátoru je upravený graf modelu TFLite pro inferenční motory TFLite/TFLite-Micro.
- Softwarový balík Cortex-A pro Linux: obsahuje MPU inferenční engine (Tensor Flow Lite), knihovnu ovladačů a ovladač zařízení na straně jádra pro linuxové jádro
- Softwarový zásobník Cortex-M: obsahuje software inferenčního motoru MCU (TFLite-Micro, CMSIS-NN) a ovladač NPU
Typický pracovní postup odvození je následující:
- Převede model TFLite na model Vela pomocí kompilátoru modelu Vela a vygeneruje optimalizovanou verzi pro Ethos-U NPU.
- Optimalizovaný model je napájen jedním z následujících:
A. TFLite inference engine, který rozpoznává vlastní operátor „ethos-u“, přiděluje vyrovnávací paměť pro mapu vstupních/výstupních funkcí (IFM/OFM) a provádí operátor prostřednictvím ovladače Ethos-U Linux.
b. Inference API, které přiděluje vyrovnávací paměť pro mapu vstupních/výstupních funkcí a odesílá celý model přes ovladač Ethos-U. - Ovladač Ethos-U sestaví zprávu o inferenci a odešle ji přes Rams do Cortex-M.
- Runner Ethos-U na Cortex-M odešle úlohu přímo do ovladače TFLite-Micro nebo Ethos-U podle typu úlohy.
A. Pokud typ úlohy zrychluje operátor „ethos-u“ (pomocí TFLite), Runner zavolá přímo ovladač Ethos-U.
b. Pokud typ úlohy zrychluje celý model (pomocí Inference API), Runner odešle model do TFLite-Micro a dále zavolá ovladač Ethos-U ke zpracování. - Poté, co ovladač Ethos-U dokončí úlohu odvození, zapíše výsledek do vyrovnávací paměti map výstupních funkcí a odešle odpověď zpět do Cortex-A prostřednictvím RPMsg.
Poznámka:
Model je načten z Cortex-A a sdílen s Cortex-M přes RPMsg. Software Cortex-M je předem sestaven s možností akcelerace modelu i operátora Ethos-U v jediném binárním firmwaru. Tento firmware je integrován do Yoctorootfs a načte se automaticky, když uživatel spustí úlohu odvození pomocí TFLite nebo Inference API otevřením zařízení Ethos-U.
Migrace aplikací TFLite z i.MX 8M Plus na i.MX 93
Tato část popisuje pracovní postup migrace pro aplikace TFLite z i.MX 8M Plus na i.MX 93 pomocí několika příkladůamples.
3.1 Zásobník softwaru Tensor Flow Lite
Obrázek 5 ukazuje sadu softwaru Tensor Flow Lite. Tensor Flow Lite podporuje výpočty na následujících hardwarových jednotkách:
- CPU Arm Cortex-A jádra
- Hardwarový akcelerátor GPU/NPU pomocí delegáta VX
- Hardwarová akcelerace NPU na i.MX 93 NPU

Poznámka: i.MX 8M Plus inference back-end si může vybrat CPU/GPU/NPU. i.MX 93 však nemá GPU, a pokud k odvození používá CPU, APP neprovede žádné změny. Proto je použití akcelerace NPU diskutováno pouze v tomto dokumentu.
3.2 Pracovní postup Tensor Flow Lite pro i.MX 8M Plus / i.MX 93
Jak i.MX 8M Plus, tak i.MX 93 podporují Tensor Flow Lite s akcelerací NPU. Hlavní rozdíly jsou následující:
- Softwarový zásobník i.MX 93 NPU závisí na offline nástroji pro kompilaci modelu Tensor Flow Lite do příkazového streamu Ethos pro provádění Ethos-U NPU, zatímco i.MX 8M Plus používá ke generování online kompilaci.
tok příkazů NPU pro provádění NPU. To znamená, že uživatelé i.MX 93 NPU musí nejprve použít nástroj Vela k převodu modelu Tensor Flow Lite na model Vela. Podrobnosti naleznete v části 4. - i.MX 8M Plus používá mechanismus externího delegáta Tensor Flow Lite (VX delegát) pro podporu akcelerace NPU, nicméně i.MX 93 používá mechanismus Tensor Flow Lite Custom OP pro podporu akcelerace NPU.
Navíc, když je model i.MX 8M Plus nasazen na i.MX 93, je doporučeno použít PCQ kvantizaci v modelové kvantizaci stage k dosažení lepšího výkonu. Konečný výkon modelu však závisí na skutečné aplikaci.
3.3 Migrace napřample
Když TFLite musí vyložit operátor ethos-u a vrátit se k Cortex-A (doporučeno), změna je minimální. Použijte sekci 4 ke kompilaci kvantovaného režimu TFLite, komentujte delegáta VX. Poté spusťte aplikaci ML i.MX 8M Plus na i.MX 93 a získejte akceleraci NPU.
3.3.1 NPU akcelerace na i.MX 8M Plus
Spusťte klasifikaci obrázků napřample na i.MX 8M Plus s akcelerací NPU.
Výstup akcelerace NPU na procesoru i.MX 8M Plus je následující:

3.3.2 Zrychlení NPU na i.MX 93 s TFLite inferenčním enginem
Zkompilujte model pro Ethos-U pomocí nástroje Vela, znovu použijte model mobilenet_v1_1.0_224_quant.tflite z /user/bin/tensorflow-lite-2.9.1/examples/. Pokud běží úspěšně, ve výstupní složce se vygeneruje optimalizovaný model Vela mobilome_ v1_1.0_224_quant_vela.tflite.
Spusťte model pomocí inferenčního motoru TFLite (přesuňte operátor „ethos-u“ na Cortex-M).
Pokud nedojde k chybě, vytiskne se následující:
3.3.3 Akcelerace NPU na i.MX 93 s inferenčním API
Spusťte model pomocí inferenčního API (stáhne celý model do TFLite-Micro).
Pokud nedojde k chybě, vytiskne se následující:

Nástroj Vela
Nástroj Vela se používá ke kompilaci modelu neuronové sítě Tensor Flow Lite pro mikrokontroléry (NN) do optimalizované verze, která může běžet na vestavěném systému obsahujícím NPU Arm Ethos-U. Optimalizovaný model obsahuje vlastní operátory TFLite pro ty části modelu, které lze urychlit pomocí Ethos-U NPU. Části modelu, které nelze zrychlit, jsou ponechány beze změny a běží na CPU (Cortex-A nebo Cortex-M) s použitím vhodného jádra (jako jsou jádra CMSIS-NN optimalizovaná pro Arm). Po kompilaci lze optimalizovaný model spustit pouze na vestavěném systému Ethos-U NPU. Nástroj také generuje odhady výkonu pro kompilovaný model.
Pro nasazení modelu NN na Ethos-U je prvním krokem použití nástroje Vela ke kompilaci připraveného modelu. Pro akceleraci pomocí Ethos-U NPU musí být síťoví operátoři kvantizováni buď na 8bitové (bez znaménka nebo se znaménkem) nebo na 16bitové (podepsané).
4.1 Instalace nástroje Vela
Nástroj Vela můžete spustit na desce i.MX 93 nebo Linux PC. Je již k dispozici v NXP Yoctorootfs. Tato část popisuje, jak jej nainstalovat na X86 Linux PC. Postup je následující.
- Získejte zdrojový kód Vela.

- Nainstalujte pomocí Python pip.

- Po úspěšném provedení všech příkazů můžete pomocí vela –help zkontrolovat, zda je nástroj Vela úspěšně nainstalován.

4.2 Kompilace modelu TFLite
Po instalaci nástroje Vela lze následující příkazy použít ke kompilaci modelu TFLite do optimalizované verze pro Ethos-U NPU. Optimalizovaný model je standardně uložen do OUTPUT_DIR (./output). Výstup file má příponu _vela. Flite. Je to také model TFLite. Po kompilaci Vela vypíše podrobný protokol do konzole.
Poznámka: Nástroj Vela očekává, že model TFLite je již kvantován. Vela podporuje asymetrickou kvantizaci na 8 bitů (se znaménkem a bez znaménka) a 16 bitů (se znaménkem), jak je definováno TFLite. Pro urychlení modelových operátorů s Ethos-U NPU musí být vstupní model do Vela kvantován. Nekvantizované operátory se vrátí k CPU.
Následující poskytuje example o tom, jak sestavit model, a zobrazí odpovídající výstupní protokol.
Výstupní protokol:
Následuje výpočtový graf po sestavení modelu (mobilenet_v1_1.0_224_pb_int8.tflite). Zde Vela zapouzdřuje všechny podporované OP do jednoho OP Ethos-U.
4.3 Hierarchie paměti pro Cortex-M
For Cortex-M, several types of memory media with different capacity, speed, and cost can be accessed by the CPU. Figure 8 shows the memory hierarchy on i.MX 93 with speed decreasing objednávka.

Velikost TCM je 256 kB, používá se pro data runtime Cortex-M. Podle návrhu není tento paměťový prostor po spuštění přidělen pro účely systému. Jak jej efektivně využít, je ponecháno na rozhodnutí uživatele.
Velikost OCRAM je 640 kB. Podle návrhu je prvních 256 kB přiděleno pro důvěryhodný firmware Arm (ATF), který slouží k bootstrapování Cortex-A předtím, než bude k dispozici DRAM. Zadních 384 kB je vyhrazeno pro data NPU: hmotnost/vychýlení modelu ML.
Velikost DRAM je 2 GB na desce i.MX 93 EVK. Lze však použít pouze sdílenou oblast DMA mezi Cortex-A a Cortex-M. Ovladač Ethos-U Linux požaduje vyrovnávací paměti DMA pro Tensor Arena dynamicky z fondu DMA a předává adresu vyrovnávací paměti firmwaru Ethos-U na Cortex-M. Pokud není výslovně uvedeno, je ve výchozím nastavení požadována vyrovnávací paměť DMA o velikosti 16 MB.
Ethos-U má přístup k paměti DRAM a OCRAM pouze podle návrhu. Obrázek 9 ukazuje aktuální mapování paměti pro firmware Ethos-U.
S touto konfigurací jsou data modelu a aréna tenzoru alokována v DRAM a OCRAM se používá jako mezipaměť NPU. Pro kompilaci modelu s Vela použijte paměťový režim „Dedicated_Sram“ (vlea.ini lze nalézt v ethos-u-vela/ethosu/config_files):
U samostatné aplikace Cortex-M je mapování paměti následující:
V této konfiguraci se nepoužívá žádná DRAM. Všechna data modelu a paměť tensor areny pro NPU je alokována v OCRAM. Pro kompilaci modelu s Vela použijte režim paměti „Sram_Only“:
Hardwarová akcelerace s Ethos-U na platformě i.MX 93
Ethos-U65 je NPU na i.MX 93, který podporuje uživatelské rozhraní Inference API.
- TFLite API pro snížení zátěže operátora ethos-u a přechod na Cortex-A, nerušivé
- Arm inference API pro stažení modelu Vela a přechod na Cortex-M
5.1 Odvození s TFLite
Vlastní operátor Ethos-U umožňuje urychlení inference na akcelerátoru Ethos-U. OP přímo využívá ovladač hardwarového akcelerátoru k plnému využití možností akcelerátoru.
Příklad viz oddíl 3.3.2ample.
5.2 Inference s Ethos-U inference API
Ethos-U inference API poskytuje metody pro použití Ethos-U NPU v OS Linux bez inferenčního enginu Tensor Flow Lite. Vezme zkompilovaný model a IFM/OFM jako vstupy, sestaví úlohu odvození a odešle závěry do Cortex-M s Ethos-U.
Ovladač Ethos-U poskytuje rozhraní API C++ pro odeslání odvození z ovladače jádra Ethos-U. Knihovna a odpovídající záhlaví file jsou k dispozici na Yoctorootfs a SDK.
• /usr/include/ethosu.hpp
• /usr/lib/libethosu.so
5.2.1 Jak používat inferenční API (C++)
Následující kroky popisují, jak spustit model Vela z Cortex-A.
- Vytvořte inferenční zařízení.

- Načtěte model do vyrovnávací paměti z modelu Vela file.

- Vytvořte instanci sítě s vyrovnávací pamětí modelu.

- Načtěte IFM ze vstupu file (jako je obrázek pro aplikaci klasifikace obrázků) do vyrovnávací paměti. Pokud existuje více vstupů, vytvořte vyrovnávací paměti jeden po druhém a zatlačte zpět na vektor.

- Vytvořte vyrovnávací paměti OFM podle výstupních rozměrů v modelu. Pokud existuje více výstupů, vytvořte vyrovnávací paměť jeden po druhém a zatlačte zpět na vektor.

- Vytvořte inferenci s vyrovnávací pamětí sítě, vyrovnávací paměti IFM a vyrovnávací paměti OFM.

- Zavolejte Inference->invoke() pro spuštění a počkejte na dokončení inference.

- Přistupte k vyrovnávací paměti OFM, abyste získali výsledek odvození.

5.2.2 Jak používat inferenční API (Python)
Kromě C++ API poskytuje ovladač Ethos-U také Python API.
Instaluje se do Yoctorootfs: /user/lib/python3.10/site-packages/ethosu.
Examppoužití:
5.3 Sestavení a nasazení firmwaru Ethos-U
Tato část popisuje, jak sestavit a nasadit firmware Ethos-U.
5.3.1 Získání zdroje
Software ethos-u-core-software je součástí softwarového balíku strojového učení i.MX 93 Ethos-U NPU, který je volitelnou součástí middlewaru sady MCUXpresso SDK. Software ethos-u-core je integrován do doručovacího systému MCUXpresso SDK Builder dostupného na mcuxpresso.nxp.com. Aby bylo možné zahrnout strojové učení Ethos-U NPU do balíčku MCUXpresso SDK, je při sestavování nového balíčku vybrána komponenta ethos-u-core-softwaru ve selektoru softwarových komponent na stránce SDK Builder.
Obrázek 11 ukazuje stránku SDK Builder.
Jakmile je balíček MCUXpresso SDK stažen, lze jej extrahovat na místním počítači nebo importovat do IDE MCUXpresso. Další informace o struktuře složek MCUXpresso SDK najdete v uživatelské příručce Začínáme s MCUXpresso SDK (ID dokumentu: MCUSDKGSUG). Struktura adresáře balíčku je podobná následujícímu.
5.3.2 Ethos-U example aplikace
Tato část popisuje Ethos-U example aplikací a podporovaných toolchainů.
5.3.2.1 Úvod
Dvě aplikace Ethos-U jsou k dispozici následovně:
• ethosu_apps_rpmsg: firmware pro Yocto Linux BSP
• ethosu_apps: samostatný example pro Cortex-M
Ethosu_apps_rpmsg je firmware pro subsystém Ethos-U pro OS Linux. Obsahuje zpracování základních zpráv, zpracování požadavků na odvození z jádra Cortex-A, konfiguraci registrů NPU, provádění odvození a poskytování výsledků odvození jádru Cortex-A. Podporovaný modul pro odvození je TFLite nebo TFLite-Micro (pokud je použito rozhraní API pro odvození).
Bývalýample ethosu_apps je samostatná aplikace Cortex-M, která demonstruje provádění odvození výhradně na jádře Cortex-M, které lze použít ve scénáři nízké spotřeby se spánkem Cortex-A. Bývalýample používá model conv2d op. Neexistuje žádné základní zpracování zpráv a podporuje pouze TFLite-Micro. Aplikace jsou dostupné ve složkách /boards//demo_apps/ethosu_apps*.
5.3.2.2 Podporované nástrojové řetězce
• IAR Embedded Workbench for Arm, když je projekt otevřen v IAR, stiskněte tlačítko „Make“ pro vytvoření projektu v IAR následovně.
• ArmGCC – nástroje GNU Arm embedded
Spusťte následující příkaz k vytvoření projektu.
5.3.2.3 Postup nasazení
- Nasaďte firmware ethosu_apps_rpmsg. PřampSoubor ethosu_apps_rpmsg je vytvořen jako .out nebo .elf a instalován na střechách pod názvem „ethosu_firmware“. Předem sestavený binární soubor je integrován do střech a načten ovladačem Linux Ethos-U na základě požadavku odvození. Chcete-li znovu sestavit firmware, přestavěný soubor ethosu_apps_rpmsg. Out nebo ethosu_apps_rpmsg. Elf by měl být zkopírován do /lib/firmware/ ve střechách a přejmenován na „ethosu_firmware“ následovně:

- Nasaďte ethosu_apps pomocí U-Boot.
Aplikace ethosu_apps je vytvořena jako .bin. V terminálu U-Boot můžete spustit následující příkaz k odvození modelu conv2d op.
Výchozí firmware ethosu_apps_rpmsg obsahuje podporu následujících operátorů s TFLite-micro na Cortex-M33: Ethos-U, TFLite_Detection_PostProcess a Dequantize. Pokud se má operátor vrátit ke Cortex-M33, ale není zahrnut, přestavte zdrojový kód a nasaďte firmware. Ethosu_apps je samostatná aplikace Cortex-M běžící bez interakcí Cortex-A, proto je nasazena na U-Boot stage.
5.3.3 Použití Ethos-U na Cortex-M
Ethos-U NPU na i.MX 93 je přístupný prostřednictvím knihovny TFLite-Micro. TFLite-Micro interpretuje optimalizovaný model Vela a deleguje jádra různým poskytovatelům provádění.
V současné době jsou podporovány tři typy poskytovatelů provádění:
- NN jádro: výchozí implementace jádra poskytovaná TFLite-Micro pro Cortex-M CPU.
- CMSIS-NN kernel: optimalizovaná implementace jádra od Arm pomocí knihovny CMSIS-NN. Knihovna CMSIS-NN spouští jádro na Cortex-M CPU nebo Ethos-U.
- Jádro Ethos-U: implementace jádra pro vlastní operátor Ethos-U. Tento operátor je registrován v rámci TFLite-Micro a provádí výpočet na Ethos-U pomocí ovladače NPU.
5.3.3.1 Běžící model Vela s TFLite-Micro
Níže jsou uvedeny kroky pro přímé spuštění modelu Vela na Cortex-M.
- Získejte plochý nárazník Vela model.

- Nakonfigurujte / přidělte staticky tenzory vstupů, výstupů.

- Sestavte interpret TFLite-Micro pro odvození.

- Nastavte vstupní tenzory.

- Spusťte inferenci a získejte výstup.

TFLite-Micro nezávisí na dynamické alokaci paměti, proto vyžaduje, aby uživatelé (vývojáři aplikací) dodali paměťovou arénu, když je vytvořen interpret. V praxi uživatel při spuštění programu alokuje tuto paměťovou arénu jako statickou vyrovnávací paměť. Napřampten:
Rámec TFLite-Micro využívá tuto paměťovou arénu jako úložiště vstupů/výstupů/prostředních tenzorů. Tato velikost paměti „TENSOR_ARENA_SIZE“ musí být upravena podle praktického použití, aby bylo možné vzít v úvahu následující body:
- Model použitý pro aplikaci
- Velikost vstupních/výstupních dat
- Paměť potřebná pro mezivýsledky
- Mapování arény paměti na SRAM nebo TCM s ohledem na efektivní využití hierarchie paměti
Akronym
Tabulka 4 uvádí a definuje zkratky použité v tomto dokumentu.
Tabulka 4. Zkratky
| Období | Definice |
| AHB | Pokročilá vysoce výkonná sběrnice |
| API | Aplikační programovací rozhraní |
| ATF | Aktivujte důvěryhodný firmware |
| AXI | Pokročilé rozšiřitelné rozhraní |
| BSP | Balíček podpory desky |
| CPM | Modul komunikačního procesoru |
| DMA | Přímý přístup do paměti |
| DOUŠEK | Dynamická paměť s náhodným přístupem |
| IFM | Vstupní mapa funkcí |
| MAC | Řízení přístupu k médiím |
| NPU | Neuronová procesorová jednotka |
| OFM | Mapa výstupních funkcí |
| SDK | Sada pro vývoj softwaru |
| SIMD | Jedna instrukce / více dat |
| SRAM | Statická paměť s náhodným přístupem |
| TCM | Trellis-kódovaná-modulace |
| TFLite | Tensor Flow Lite |
Poznámka ke zdrojovému kódu v dokumentu
ExampKód zobrazený v tomto dokumentu má následující autorská práva a licenci BSD-3-Clause:
Copyright 2023 NXP Redistribuce a použití ve zdrojové a binární formě, s úpravami nebo bez nich, jsou povoleny za předpokladu, že jsou splněny následující podmínky:
- Redistribuce zdrojového kódu musí obsahovat výše uvedené upozornění na autorská práva, tento seznam podmínek a následující prohlášení o vyloučení odpovědnosti.
- Redistribuce v binární formě musí reprodukovat výše uvedenou poznámku o autorských právech, tento seznam podmínek a následující prohlášení o vyloučení odpovědnosti v dokumentaci a/nebo jiných materiálech dodávaných s distribucí.
- Jméno držitele autorských práv ani jména jeho přispěvatelů nelze použít k podpoře nebo propagaci produktů odvozených od tohoto softwaru bez zvláštního předchozího písemného souhlasu.
TENTO SOFTWARE POSKYTUJÍ DRŽITELÉ AUTORSKÝCH PRÁV A PŘISPĚVATELÉ „TAK, JAK JE“, A JAKÉKOLI VÝSLOVNÉ NEBO PŘEDPOKLÁDANÉ ZÁRUKY, VČETNĚ, ALE NE OMEZENÉ, PŘEDPOKLÁDANÝCH ZÁRUK OBCHODOVATELNOSTI A VHODNOSTI PRO KONKRÉTNÍ NÁKUP. V ŽÁDNÉM PŘÍPADĚ NEBUDE DRŽITEL AUTORSKÝCH PRÁV NEBO PŘISPĚVATELÉ ODPOVĚDNÍ ZA JAKÉKOLI PŘÍMÉ, NEPŘÍMÉ, NÁHODNÉ, ZVLÁŠTNÍ, EXEMPLÁRNÍ NEBO NÁSLEDNÉ ŠKODY (VČETNĚ, ALE NEOMEZENO NA, ZAJIŠTĚNÍ NÁHRADNÍCH SLUŽEB, ZBOŽÍ FILO; NEBO PŘERUŠENÍ OBCHODNÍ ČINNOSTI), AŤ JAK ZPŮSOBUJEME A NA ZÁKLADĚ JAKÉKOLI TEORIE ODPOVĚDNOSTI, AŤ VE SMLOUVĚ, PŘÍMÉ ODPOVĚDNOSTI NEBO PŘEČINKU (VČETNĚ NEDBALOSTI ČI JINAK) VZNIKLÉM JAKÝKOLIV ZPŮSOBEM Z POUŽÍVÁNÍ TOHOTO SOFTWARU.
Historie revizí
Tabulka 5 shrnuje revize tohoto dokumentu.
Tabulka 5. Historie revizí
| Číslo revize | Datum vydání | Popis |
| 1 | 18. září - 23 | První veřejné vydání |
Právní informace
9.1 Definice
Návrh — Stav konceptu na dokumentu naznačuje, že obsah je stále pod interní revizíview a podléhá formálnímu schválení, které může vést k úpravám nebo doplnění. NXP Semiconductors neposkytuje žádná prohlášení ani záruky ohledně přesnosti nebo úplnosti informací obsažených v pracovní verzi dokumentu a nenese žádnou odpovědnost za důsledky použití takových informací.
9.2 Zřeknutí se odpovědnosti
Omezená záruka a odpovědnost — Informace v tomto dokumentu jsou považovány za přesné a spolehlivé. Společnost NXP Semiconductors však neposkytuje žádná prohlášení ani záruky, vyjádřené nebo předpokládané, pokud jde o přesnost nebo úplnost takových informací, a nenese žádnou odpovědnost za důsledky použití takových informací. NXP Semiconductors nenese žádnou odpovědnost za obsah tohoto dokumentu, pokud je poskytnut informačním zdrojem mimo NXP Semiconductors. Společnost NXP Semiconductors v žádném případě nenese odpovědnost za jakékoli nepřímé, náhodné, trestné, zvláštní nebo následné škody (včetně – bez omezení ušlého zisku, ušlých úspor, přerušení provozu, nákladů souvisejících s odstraněním nebo výměnou jakýchkoli produktů nebo nákladů na přepracování), ať už tyto škody nejsou založeny na protiprávním jednání (včetně nedbalosti), záruce, porušení smlouvy nebo jiné právní teorii.
Bez ohledu na jakékoli škody, které by mohly zákazníkovi z jakéhokoli důvodu vzniknout, bude souhrnná a kumulativní odpovědnost NXP Semiconductors vůči zákazníkovi za produkty popsané v tomto dokumentu omezena v souladu s podmínkami komerčního prodeje NXP Semiconductors.
Právo provádět změny — Společnost NXP Semiconductors si vyhrazuje právo kdykoli a bez upozornění provádět změny informací zveřejněných v tomto dokumentu, včetně, bez omezení, specifikací a popisů produktů. Tento dokument nahrazuje a nahrazuje všechny informace poskytnuté před jeho zveřejněním.
Vhodnost použití — Produkty NXP Semiconductors nejsou navrženy, autorizovány nebo zaručeny tak, aby byly vhodné pro použití v systémech nebo zařízeních pro podporu života, život kritických nebo kritických systémech nebo zařízeních, ani v aplikacích, kde lze důvodně očekávat, že selhání nebo nesprávná funkce produktu NXP Semiconductors povede k zranění osob, smrt nebo vážné poškození majetku nebo životního prostředí. Společnost NXP Semiconductors a její dodavatelé nepřijímají žádnou odpovědnost za zahrnutí a/nebo použití produktů NXP Semiconductors v takovém zařízení nebo aplikacích, a proto je takové zahrnutí a/nebo použití na vlastní riziko zákazníka.
Aplikace — Zde popsané aplikace pro kterýkoli z těchto produktů slouží pouze pro ilustrativní účely. NXP Semiconductors neposkytuje žádné prohlášení ani záruku, že takové aplikace budou vhodné pro specifikované použití bez dalšího testování nebo úprav. Zákazníci jsou zodpovědní za návrh a provoz svých aplikací a produktů využívajících produkty NXP Semiconductors a NXP Semiconductors nepřijímá žádnou odpovědnost za jakoukoli pomoc s aplikacemi nebo návrhem zákaznických produktů. Je výhradní odpovědností zákazníka určit, zda je produkt NXP Semiconductors vhodný a vhodný pro zákazníkovy aplikace a plánované produkty, jakož i pro plánovanou aplikaci a použití zákazníkem (zákazníků) jako třetí strana. Zákazníci by měli poskytnout vhodné konstrukční a provozní záruky, aby minimalizovali rizika spojená s jejich aplikacemi a produkty.
Společnost NXP Semiconductors nepřijímá žádnou odpovědnost související s jakýmkoli selháním, poškozením, náklady nebo problémem, který je založen na jakékoli slabosti nebo selhání v aplikacích nebo produktech zákazníka nebo v aplikaci nebo použití zákazníkem (zákazníky třetí strany) zákazníka. Zákazník je odpovědný za provedení všech nezbytných testů pro aplikace a produkty zákazníka používající produkty NXP Semiconductors, aby se vyhnul selhání aplikací a produktů nebo aplikace nebo použití zákazníkem (zákazníky třetí strany) zákazníka. NXP nenese v tomto ohledu žádnou odpovědnost.
Podmínky komerčního prodeje — Produkty NXP Semiconductors se prodávají v souladu se všeobecnými podmínkami komerčního prodeje, jak jsou zveřejněny na http://www.nxp.com/profile/terms, není-li v platné písemné individuální dohodě dohodnuto jinak. V případě uzavření individuální smlouvy platí pouze podmínky příslušné smlouvy. Společnost NXP Semiconductors tímto výslovně nesouhlasí s uplatňováním všeobecných obchodních podmínek zákazníka s ohledem na nákup produktů NXP Semiconductors zákazníkem.
Kontrola exportu — Tento dokument, stejně jako položky zde popsané, mohou podléhat předpisům o kontrole vývozu. Vývoz může vyžadovat předchozí povolení od příslušných orgánů.
Vhodnost pro použití v neautomobilových produktech — Pokud tento dokument výslovně neuvádí, že tento konkrétní produkt NXP Semiconductors je způsobilý pro automobilový průmysl, není tento produkt vhodný pro použití v automobilech. Není kvalifikován ani testován v souladu s automobilovým testováním nebo aplikačními požadavky. Společnost NXP Semiconductors nenese žádnou odpovědnost za zahrnutí a/nebo použití jiných než automobilových kvalifikovaných produktů v automobilovém vybavení nebo aplikacích.
V případě, že zákazník použije produkt pro návrh a použití v automobilových aplikacích podle automobilových specifikací a norem, zákazník (a) použije produkt bez záruky NXP Semiconductors na produkt pro takové automobilové aplikace, použití a specifikace a ( b) kdykoli zákazník použije produkt pro automobilové aplikace nad rámec specifikací NXP Semiconductors, takové použití bude výhradně na vlastní riziko zákazníka a (c) zákazník plně odškodní společnost NXP Semiconductors za jakoukoli odpovědnost, škody nebo neúspěšné nároky na produkt vyplývající z návrhu a použití zákazníka. produkt pro automobilové aplikace nad rámec standardní záruky NXP Semiconductors a specifikace produktu NXP Semiconductors.
Překlady — Neanglická (přeložená) verze dokumentu, včetně právních informací v tomto dokumentu, je pouze orientační. V případě jakéhokoli rozporu mezi přeloženou a anglickou verzí má přednost anglická verze.
Zabezpečení — Zákazník bere na vědomí, že všechny produkty NXP mohou být předmětem neidentifikovaných zranitelností nebo mohou podporovat zavedené bezpečnostní standardy nebo specifikace se známými omezeními. Zákazník je odpovědný za návrh a provoz svých aplikací a produktů během jejich životního cyklu, aby se snížil účinek těchto zranitelností na aplikace a produkty zákazníka. Odpovědnost zákazníka se vztahuje také na další otevřené a/nebo proprietární technologie podporované produkty NXP pro použití v zákaznických aplikacích. NXP nenese žádnou odpovědnost za jakoukoli zranitelnost. Zákazník by měl pravidelně kontrolovat aktualizace zabezpečení z NXP a patřičně je sledovat. Zákazník si vybere produkty s bezpečnostními prvky, které nejlépe vyhovují pravidlům, předpisům a standardům zamýšlené aplikace a bude činit konečná rozhodnutí o designu týkající se svých produktů a je výhradně odpovědný za shodu se všemi právními, regulačními a bezpečnostními požadavky týkajícími se jeho produktů, bez ohledu na jakékoli informace nebo podporu, kterou může NXP poskytnout.
NXP má tým pro reakci na bezpečnostní incidenty produktu (PSIRT) (dostupný na adrese PSIRT@nxp.com), která spravuje vyšetřování, hlášení a uvolňování řešení bezpečnostních zranitelností produktů NXP.
NXP BV — NXP BV není provozní společností a nedistribuuje ani neprodává produkty.
9.3 Ochranné známky
Upozornění: Všechny uvedené značky, názvy produktů, názvy služeb a ochranné známky jsou majetkem příslušných vlastníků.
NXP — slovo a logo jsou ochranné známky společnosti NXP BV
AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, velký. LITTLE, Cordia, Core Link, Core Sight, Cortex, Design Start, Dynamo, Janelle, Keli, Mali, Med, Med Enabled, NEON, POP, Rearview, Securicor, Socrates, Thumb, Trust Zone, ULINK, ULINK2, ULINK-ME, ULINKPLUS, ULINKpro, μVision, Versatile — jsou ochranné známky a/nebo registrované ochranné známky společnosti Arm Limited (nebo jejích poboček či přidružených společností) v USA a/nebo jinde . Související technologie může být chráněna některým nebo všemi patenty, autorskými právy, vzory a obchodním tajemstvím. Všechna práva vyhrazena.
IAR — je ochranná známka společnosti IAR Systems AB.
i.MX — je ochranná známka společnosti NXP BV
Microsoft, Azure a vlákno — jsou ochranné známky skupiny společností Microsoft.
Tensor Flow, logo Tensor Flow a veškeré související značky — jsou ochranné známky společnosti Google Inc.
Mějte prosím na paměti, že důležitá upozornění týkající se tohoto dokumentu a produktu(ů)
zde popsané, byly zahrnuty do sekce „Právní informace“.
© 2023 NXP BV
Všechna práva vyhrazena.
Pro více informací prosím
návštěva: http://www.nxp.com
Datum vydání: 18. září 2023
Identifikátor dokumentu: AN13854
Dokumenty / zdroje
![]() |
NXP AN13854 i.MX 93 aplikační procesory [pdfUživatelská příručka i.MX 8M Plus, i.MX 93, AN13854, AN13854 i.MX 93 aplikační procesory, i.MX 93 aplikační procesory, aplikační procesory, procesory |
