Proč optimalizovat AI pro malé čipy
Optimalizace výkonu umělé inteligence na malých čipech (MCU, edge SoC, nízkonákladové NPU) je zásadní pro aplikace, které vyžadují nízkou latenci, nízkou spotřebu a vysokou spolehlivost bez závislosti na cloudu. Typickými scénáři jsou detekce klíčových slov, rozpoznávání gest, lokální vizuální inspekce, údržba strojů, nositelná zařízení a smart senzory. Cílem je najít rovnováhu mezi přesností, rychlostí, paměťovou stopou a energií na inference tak, aby řešení bylo udržitelné v reálném provozu.
Omezení a charakteristika cílového hardwaru
- Výpočetní prostředky: nízké frekvence CPU (typicky do stovek MHz), omezené SIMD (např. ARM Cortex-M s DSP/NEON u vyšších řad), případně malé NPU/DSP akcelerátory.
- Paměť: desítky až stovky kB SRAM, někdy externí PSRAM; modely často ukládány v QSPI flash s omezenou propustností.
- Energetické limity: bateriový provoz, potřeba duty-cyclingu a DVFS (Dynamic Voltage and Frequency Scaling).
- Reálný čas: tvrdé latence (např. pod 10 ms pro HMI), determinismus, běh pod RTOS.
Klíčové metriky a cíle optimalizace
- Latence inference (ms na vzorek) a její rozptyl (jitter).
- Propustnost (počet inferencí za sekundu) při daném rozpočtu energie.
- Paměťová stopa (flash pro váhy, SRAM pro aktivace a pracovní buffery).
- Energetická náročnost (mJ na inference) a průměrná spotřeba (mW).
- Přesnost / F1 / mAP po optimalizacích, včetně robustnosti na šum a drift dat.
Pipeline optimalizace: od modelu po firmware
- Volba úlohy a metrik → stanovení akceptovatelných trade-offů.
- Návrh architektury (NAS/ruční návrh) cílené na MCU/NPU.
- Trénink s ohledem na nasazení (QAT, distilace, datové augmentace).
- Komprese modelu (kvantizace, pruning, sdílení vah, low-rank).
- Kompatibilní export (TFLite Micro, ONNX Micro, TVM micro, Glow, IREE mikrovarianty).
- Kompozice grafu a plánování paměti (operator fusion, in-place, tiling).
- Portace na cílové SDK (CMSIS-NN, vendor knihovny, NPU kernels).
- Profilace, měření a iterace v reálném RTOS/ISR kontextu.
Kvantizace: základní páka pro výkon a paměť
Kvantizace převádí váhy a aktivace z FP32/FP16 do nižších přesností (INT8, INT4, případně binární/ternární). Přínosy: menší model (flash), menší buffery (SRAM), rychlejší výpočty díky SIMD/NPU a nižší energie. Dva přístupy:
- PTQ (Post-Training Quantization): rychlá kalibrace na reprezentativním datasetu. Vhodná pro menší pokles přesnosti a rychlý vývoj.
- QAT (Quantization-Aware Training): simulace kvantizačního šumu v tréninku. Obvykle zachová vyšší přesnost zejména u citlivých vrstev (např. attention, depthwise separable konvoluce).
Praktické tipy: udržujte per-channel škálování pro váhy konvolucí, použijte asymmetric kvantizaci pro aktivace, nezapomeňte na kalibraci rozsahů (min/max, KL-divergence) a validaci pod reálným senzorem.
Pruning a strukturované zřezávání
Pruning snižuje počet parametrů a FLOPs. Na MCU funguje nejlépe strukturovaný pruning (mazání celých filtrů/kanálů), protože lépe mapuje na dense výpočty a knihovny. Neztrukturovaný (sparsity) může přinést menší benefit bez specializovaných sparse-kernel implementací.
- Kanálový pruning: řiďte se citlivostí vrstev; zachovávejte šířku u vrstev s vysokým dopadem na konečnou přesnost.
- Pruning schedule: postupné zvyšování sparsity s retrainingem a knowledge distillation.
- Mapování na NPU: některé NPU vyžadují konkrétní násobky kanálů (např. násobky 8/16); tomu přizpůsobte cílové šířky.
Knowledge distillation a low-rank faktorizace
Knowledge distillation převádí znalosti z velkého teacher modelu do menšího student modelu, často s lepší přesností při stejné velikosti. Low-rank dekompozice (SVD, TT/CP, LoRA-style adaptéry) může zrychlit inference rozkladem těžkých lineárních vrstev na dvě menší matice s menšími rozměry, což lépe využívá cache/SRAM.
Architekturální volby pro edge
- Konvoluční sítě: preferujte depthwise separable a grouped konvoluce (MobileNet-style), ale ověřte podporu v akcelerátoru a kernel knihovnách.
- Lehké attention mechanismy: u malých čipů používejte local / linearized attention, event. performer varianty, nebo hybrid CNN-Transformer s omezeným kontextem.
- RNN/TCN pro audio/timesérie: GRU/LSTM lze nahradit TCN (dilated conv) pro lepší paralelizaci a nižší paměť aktivací.
- Aktivační funkce: ReLU6/Hard-Swish/Hard-Sigmoid mají efektivní integer aproximace.
- Normalizace: Fuse BatchNorm do konvoluce při exportu; na MCU se vyhněte runtime normalizacím bez podpory.
Operator fusion, rozvrh a plánování paměti
Fúze operátorů (Conv+BN+ReLU, Conv+Add+ReLU) redukuje počet průchodů a pohybů dat. Tiling a blocking přizpůsobují kalkulaci velikosti cache/SRAM. Memory planner recykluje buffery aktivací a používá in-place operace, čímž výrazně snižuje špičkovou spotřebu SRAM. U externí PSRAM preferujte streamování im2col bloků a dvojité bufferování (DMA).
Využití SIMD/DSP/NPU instrukcí
- SIMD (ARM DSP/NEON u vyšších řad): zarovnejte tensory (např. 4/8/16 prvků), používejte packed formáty (INT8) a vyhněte se misaligned přístupům.
- DSP knihovny: CMSIS-NN, Helium, vendor-specifické NN kernels; ověřte, které operátory mají nejrychlejší implementace, a dle toho navrhujte síť.
- NPU: respektujte omezení opsetu, velikost dlaždic, zarovnání kanálů a maximální rozměry tensorů; operátory bez podpory offloadujte na CPU s ohledem na režii přesunů.
Práce s pamětí: flash, SRAM, PSRAM a DMA
- Umístění vah: komprimované váhy (např. INT8) ve flash s blokovým načítáním; kritické vrstvy prefetchnout do SRAM.
- Aktivace: plánujte tak, aby špička SRAM nepřekročila limit – přeuspořádejte pořadí vrstev nebo použijte menší batch (typicky 1).
- DMA a dvojité bufferování: překrývejte I/O a výpočty, minimalizujte cache thrashing.
- Layouty: volba NCHW/NHWC podle toho, co preferují kernels; zvažte interleaved formáty pro vektorizaci.
Energetická optimalizace a řízení výkonu
- DVFS: dynamicky přepínejte frekvenci a napětí mezi standby, sensor fusion a inference fází.
- Duty cycling: plánujte inference v dávkách nebo event-driven (wake-word) a uspávejte periférie.
- Datové cesty: zmenšete počet přístupů do pomalé/external paměti – jsou energeticky nejdražší.
RTOS, determinismus a integrace se senzory
Na malých čipech je důležitá predikovatelnost. Oddělte vlákna pro akvizici dat (ISR + DMA), předzpracování (FFT/MFCC), inference a odesílání výsledků. Používejte priority a lock-free kruhové buffery. Definujte watchdog a limity latence na kritických bodech. Měřte end-to-end od přerušení senzoru po akci.
Předzpracování a kompaktní reprezentace vstupů
- Audio: MFCC/Log-Mel s nízkým rozlišením, okna a kroky laděné na cílové klíčové slovo.
- Vize: grayscale, downsampling s anti-aliasingem, ROI cropping, normalizace škálovanými integer operacemi.
- Timesérie/IMU: agregace, filtr s pevnými koeficienty, feature selection pomocí embedded metod.
Bezpečnost a spolehlivost při optimalizacích
- Deterministická kvantizace: stabilní výsledky napříč buildy (fixní kalibrační data, seed).
- Kontrola integrity modelu: podpisy vah, secure boot, ochrana před rollbackem.
- Fail-safe režimy: při nedostatku SRAM přepnout na jednodušší model nebo snížit frekvenci inference.
Nástroje a knihovny
- Frameworky pro micro inference: TensorFlow Lite for Microcontrollers, ONNX Runtime Micro, Apache TVM (microTVM), Glow, IREE (omezené mikro-cíle).
- Optimalizované kernels: CMSIS-NN, CMSIS-DSP, vendor BSP/SDK (např. pro Xtensa, PULP, ARC, RISC-V NPU).
- Profilace: stopky v ISR, trace (SWO/ETM), energetické měřiče (shunt + ADC), profilery vendorů.
Benchmarking a validace
Pro objektivní srovnání využijte standardy jako MLPerf Tiny či EEMBC MLMark. Mějte tři úrovně testů: (1) unit na operátorových kernech, (2) model-level metriky (latence, paměť, přesnost) na syntetických datech, (3) system-level E2E validace se senzorem a RTOS.
Typické výkonnostní zisky podle techniky
| Technika | Typický zisk | Dopad na přesnost | Poznámka |
|---|---|---|---|
| Kvantizace FP32→INT8 | 2–4× rychlost, 4× menší model | 0–2 p.b. při QAT | Per-channel váhy, asy. aktivace |
| Strukturovaný pruning 30–50 % | 1.3–2× rychlost | 1–3 p.b. po retréninku | Udržet násobky kanálů |
| Operator fusion | 10–30 % latence | 0 p.b. | Méně přesunů dat |
| Tiling + in-place plánování | 20–50 % méně SRAM | 0 p.b. | Nižší špičky paměti |
| Distilace | Stejná přesnost s menším modelem | −0 až +1 p.b. | U těžkých úloh výrazný přínos |
| SIMD/NPU kernel optimalizace | 2–10× rychlost v hot-paths | 0 p.b. | Závislé na HW op-podpoře |
Check-list pro nasazení na malý čip
- Model v INT8 (QAT preferováno), ověřit rozsahy aktivací.
- Strukturovaný pruning s ohledem na násobky kanálů akcelerátoru.
- Export s fuse BN a aktivací; pouze podporované operátory.
- Memory planner: in-place, reuse, dvouúrovňové bufferování s DMA.
- Profilace hot-path vrstev a validace jitteru pod RTOS.
- Energetická měření (mJ/inference) a DVFS/duty-cycling strategie.
- Fail-safe mód a watchdog; kontrola integrity binárky a vah.
Typické anti-patterns (čemu se vyhnout)
- Nasazení FP32/FP16 bez kvantizace na MCU bez FPU či s pomalým FPU.
- Nestrukturovaný sparsity bez specializovaných sparse kernels.
- Nepodporované opsety (custom aktivace) → fallback na CPU s velkou režií.
- Náhodné změny frekvence bez řízení DVFS → nestabilní latence.
- Neřízené přístupy do PSRAM/flash → energetická penalizace.
Minipřípad: keyword spotting na Cortex-M
Výchozí CNN (FP32) má 250 kB vah a 120 ms latenci. Po QAT INT8 klesne velikost na ~65 kB a latence na 35 ms díky CMSIS-NN kernels. Strukturovaný pruning 40 % s retréninkem srazí latenci na 22 ms. Fusion Conv+BN+ReLU a tiling aktivací sníží špičku SRAM o 30 %. Po duty-cyclingu (20 % aktivní, 80 % sleep) klesne průměrná spotřeba pod 2 mW při zachování přesnosti v rámci −1 p.b.
Závěr
Optimalizace AI na malých čipech je systémový úkol: kombinuje tréninkové techniky (QAT, distilace), architektonické volby (lightweight sítě), kompilaci grafu (fúze, tiling, plánování paměti) a hardwarovou expertizu (SIMD/NPU, DVFS, DMA). Úspěch přichází z iterací vedených měřením – co nelze změřit, nelze optimalizovat. S dobře navrženou pipeline lze při minimálním dopadu na přesnost dosáhnout násobných zrychlení, výrazných úspor paměti a energie a tím otevřít cestu k inteligentním senzorům a embedded systémům nové generace.