Optimalizace výkonu umělé inteligence pro malé čipy

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, vyžadující 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 chytré senzory. Cílem je nalézt rovnováhu mezi přesností, rychlostí, paměťovou stopou a spotřebou energie na inference tak, aby bylo řešení 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 stanoveném energetickém rozpočtu.
  • 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ě odolnosti vůči šumu a driftu dat.

Pipeline optimalizace: od modelu po firmware

  1. Volba úlohy a metrik → stanovení akceptovatelných kompromisů (trade-offů).
  2. Návrh architektury (NAS/ruční návrh) cílené na MCU/NPU.
  3. Trénink s ohledem na nasazení (QAT, distilace, datové augmentace).
  4. Komprese modelu (kvantizace, pruning, sdílení vah, low-rank faktorizace).
  5. Kompatibilní export (TFLite Micro, ONNX Micro, TVM micro, Glow, IREE mikrovarianty).
  6. Kompozice grafu a plánování paměti (operator fusion, in-place operace, tiling).
  7. Portace na cílové SDK (CMSIS-NN, knihovny dodavatelů, NPU kernelové implementace).
  8. 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 zahrnují menší model (flash), menší buffery (SRAM), rychlejší výpočty díky SIMD/NPU a nižší energetickou spotřebu. Existují 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 během tréninku. Obvykle zachovává vyšší přesnost zejména u citlivých vrstev (např. attention, depthwise separable konvoluce).

Praktické doporučení: udržujte per-channel škálování pro váhy konvolucí, používejte asymetrickou kvantizaci pro aktivace, nezapomeňte na kalibraci rozsahů (min/max, KL-divergence) a validaci na datech z reálného senzoru.

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 odpovídá dense výpočtům a podporovaným knihovnám. Nezřetězený (nestrukturovaný) pruning může přinést menší benefit bez specializovaných implementací sparse kernelů.

  • Kanálový pruning: řiďte se citlivostí jednotlivých vrstev; zachovávejte šířku u vrstev s vysokým dopadem na konečnou přesnost.
  • Pruning schedule: postupné zvyšování sparsity s retréninkem a knowledge distillation.
  • Mapování na NPU: některé NPU vyžadují násobky počtu kanálů (např. násobky 8/16); přizpůsobte tomu cílové šířky modelu.

Knowledge distillation a low-rank faktorizace

Knowledge distillation přenáší 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 urychlit inference rozkladem výpočetně náročný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 (typ MobileNet), ověřte však podporu v akcelerátoru a kernel knihovnách.
  • Lehké attention mechanismy: u malých čipů používejte local / linearized attention, případně performer varianty nebo hybridní CNN-Transformer s omezeným kontextem.
  • RNN/TCN pro audio/časové řady: GRU/LSTM lze nahradit TCN (dilated convolution) pro lepší paralelizaci a nižší paměťovou náročnost aktivací.
  • Aktivační funkce: ReLU6, Hard-Swish a Hard-Sigmoid mají efektivní integer aproximace.
  • Normalizace: Fuse BatchNorm do konvolučních vrstev 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) snižuje počet průchodů a pohybů dat. Tiling a blocking přizpůsobují výpočty velikosti dostupné 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): zarovnávejte tensory (např. po 4/8/16 prvcích), používejte packed formáty (INT8) a vyhýbejte se neseřazeným přístupům.
  • DSP knihovny: CMSIS-NN, Helium, vendor specifické NN kernelové implementace; ověřte, které operátory mají nejrychlejší variantu a dle toho navrhujte architekturu sítě.
  • 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 přednačtené do SRAM.
  • Aktivace: plánujte tak, aby špička využití SRAM nepřekročila limit – přeuspořádejte pořadí vrstev nebo použijte menší batch velikost (typicky 1).
  • DMA a dvojité bufferování: překrývejte I/O a výpočty, minimalizujte cache thrashing.
  • Layouty: volba NCHW/NHWC podle preferencí kernelů; 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 režimy.
  • Duty cycling: plánujte inference v dávkách nebo event-driven (wake-word) a uspávejte periférie.
  • Datové cesty: snižte počet přístupů do pomalé či externí paměti – ty jsou energeticky nejnáročnější.

RTOS, determinismus a integrace se senzory

Na malých čipech je klíčová 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 latenci od 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, ořez ROI, normalizace škálovaná integer operacemi.
  • Časové řady/IMU: agregace, filtr s pevnými koeficienty, výběr příznaků pomocí embedded metod.

Bezpečnost a spolehlivost při optimalizacích

  • Deterministická kvantizace: stabilní výsledky napříč buildy (fixní kalibrační data, pevné seed).
  • Kontrola integrity modelu: podpisy vah, secure boot, ochrana proti rollbacku.
  • 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é kernely: 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 dodavatelů hardwaru.

Benchmarking a validace

Pro objektivní srovnání využijte standardy jako MLPerf Tiny či EEMBC MLMark. Mějte tři úrovně testů: (1) unit testy na operátorových kernech, (2) model-level metriky (latence, paměť, přesnost) na syntetických datech, (3) system-level end-to-end validaci se senzory a RTOS.

Typické výkonnostní zisky podle techniky

Technika Typický zisk Dopad na přesnost Poznámka
Kvantizace FP32→INT8 2–4× rychlejší inference, 4× menší model 0–2 p.b. při QAT Per-channel váhy, asymetrická kvantizace aktivací
Strukturovaný pruning 30–50 % 1,3–2× rychlejší inference 1–3 p.b. po retréninku Dodržení násobků kanálů
Operator fusion 10–30 % snížení latence 0 p.b. Méně přesunů dat
Tiling + in-place plánování 20–50 % méně SRAM 0 p.b. Snížení špičkové paměťové náročnosti
Distilace Stejná přesnost s menším modelem −0 až +1 p.b. Výrazný přínos u těžkých úloh
SIMD/NPU kernel optimalizace 2–10× rychlejší inference v hot-path 0 p.b. Závislé na HW podpoře operátorů

Check-list pro nasazení na malý čip

  • Model v INT8 (preferováno QAT), ověření rozsahů aktivací.
  • Strukturovaný pruning s ohledem na násobky kanálů akcelerátoru.
  • Export s fúzí BatchNorm a aktivačních funkcí; pouze podporované operátory.
  • Memory planner: in-place použití, opakované využití bufferů, dvouúrovňové bufferování s DMA.
  • Profilace hot-path vrstev a validace jitteru pod RTOS.
  • Energetická měření (mJ/inference) a strategie DVFS/duty-cyclingu.
  • Fail-safe režim a watchdog; kontrola integrity binárky a vah.

Typické anti-patterny (čemu se vyhnout)

  • Nasazení FP32/FP16 bez kvantizace na MCU bez FPU nebo s pomalým FPU.
  • Nestrukturovaný sparsity bez