Proč je trénování pro edge jiné
Trénování modelů pro edge hardware (MCU, mobilní SoC, NPU, DSP, FPGA) vyžaduje jinou filozofii než trénování pro cloud. Cílem není pouze maximalizovat přesnost, ale optimalizovat více kritérií současně: latenci, spotřebu energie, paměťovou stopu, spolehlivost, bezpečnost a udržitelnost aktualizací v terénu. Tento článek systematicky rozebírá pracovní postup od definice metrik přes volbu architektury a přípravu dat až po kompresi, trénování s ohledem na hardware, profilaci na cílovém zařízení a MLOps pro flotily edge uzlů.
Typologie edge hardwaru a jeho omezení
- MCU (TinyML): řádově desítky až stovky kB RAM, jednotky MB Flash, bez OS nebo s RTOS; inference v řádu jednotek ms, příkon v mW.
- Mobilní/embedded SoC: CPU (ARM), GPU, DSP a/nebo NPU; RAM 1–16 GB; TDP 2–15 W; běžné v robotice a průmyslu.
- NPU/AI akcelerátory: pevná sada podporovaných operátorů; nejvyšší výkon při int8/4; omezení na specifická rozložení tensorů.
- DSP: vynikají při zpracování zvuku a časových řad a v režimech s nízkou spotřebou (FFT, MFCC); výkon závisí na knihovnách (např. CMSIS-DSP).
- FPGA: flexibilní, ale vyžadují pečlivé mapování operátorů; vhodné pro deterministickou latenci.
Důsledek: trénování musí předvídat konkrétní limity (podpora operátorů, přesnost datových typů, paměť, šířka sběrnic, cache line, přenosy DMA).
Vícekriteriální cíle: jak správně nastavit metriky
- Výkon: přesnost (Top-1, mAP, F1), robustnost (auROC na datech mimo distribuci, odolnost vůči šumu a kompresi).
- Latence: percentily P50/P95 na cílovém zařízení, od začátku do konce včetně I/O, předzpracování a následného zpracování.
- Energie: J/inference nebo mWh/událost, korelovat s DVFS a teplotou.
- Paměť: špičková VRAM/SRAM, trvalá paměť modelu (váhy), pracovní buffery (aktivace, im2col, scratch), velikost binárního souboru.
- Spolehlivost: míra bezpečného selhání, detekce selhání (jistota, entropie, konformní predikce), záložní pipeline.
Doporučení: používat vícekriteriální optimalizaci (vážený součet nebo Paretovu frontu) a výslovně sledovat kompromis mezi přesností, latencí a energií.
Příprava dat: od sběru k robustnosti vůči změně domény
- Kurátorský sběr: reprezentativní pro reálné podmínky (světlo, vibrace, komprese, šum mikrofonu, RF interference).
- Čištění a verzování dat: kontrolované datasety s datovými kartami, verzování (hash, semver), auditovatelnost.
- Augmentace: fotometrická i geometrická, specifická pro danou doménu (např. rozmazání způsobené vibracemi, rolling shutter, spektrální šum).
- Simulovaná data: generativní simulace, náhodné změny domény; nutné jsou realistické fyzikální a senzorové modely.
- Aktivní učení: iterativní výběr vzorků s vysokou nejistotou k anotaci; snižuje náklady.
- Polo-samořízené a samořízené učení: využití neoznačených dat z flotily (pseudoštítky, kontrastivní učení) při respektování zásad ochrany soukromí.
Výběr architektury: malé, rychlé a účelové
- Vizuální úlohy: MobileNet/ShuffleNet/FBNet/MnasNet, EfficientNet-Lite, NAS pro konkrétní rozpočet latence; hloubkově separovatelné a skupinové konvoluce.
- Zvukové úlohy/časové řady: DS-CNN, TCN, lehké GRU/LSTM, attention s omezeným rozsahem (linformer, performer), případně spiking s událostmi řízeným zpracováním.
- Jazyk: miniaturní transformery s kvantizací a sdílením vah; případně adaptéry místo úplného přetrénování.
- Grafy a senzory: lehké GNN (SGC, GraphSAGE s prořezáváním sousedství), klasické příznaky + malé MLP na DSP.
Princip: nejprve natrénujte přesný učitelský model (referenční baseline), poté navrhujte studentský model s ohledem na hardware.
Trénování s ohledem na hardware: učit rovnou to, co poběží
- Trénování s ohledem na kvantizaci (QAT): simulace int8/int4 během trénování, kalibrace po kanálech, symetrické/asymetrické rozsahy, uzly fake-quant.
- Prořezávání: strukturované (kanály, celé kernely) pro skutečné zrychlení; řídkost N:M; postupné prořezávání založené na velikosti vah s doladěním.
- Destilace: logits, příznakové mapy i relační destilace; vícejazyčná destilace pro sdílené hlavy (detekce + segmentace).
- Vyhledávání neuronových architektur: s ohledem na latenci/energii (měřením na cílovém zařízení nebo pomocí přesných nákladových modelů); vícekriteriální NAS.
- Smíšená přesnost: FP16/bfloat16 při trénování, inference int8/4; pozor na hromadění chyb v normalizacích.
- Regularizace pro robustnost: augmentace jako šum, vyhlazování štítků, adversariální trénování v rámci stanoveného rozpočtu.
Kompresní pipeline: pořadí kroků a kontrolní body
- Návrh a natrénování učitelského modelu (FP32) na kompletních datech.
- První studentský model: menší architektura + destilace (FP32).
- Strukturované prořezávání → doladění.
- QAT (int8; případně int4 u vhodného hardwaru) → doladění s nižší hodnotou LR.
- Export do cílového formátu a validace metrik na cílovém zařízení: přesnost, latence, energie, paměť, teplota.
Každý krok archivujte (karta modelu + měření) pro audit a snadný návrat při regresi.
Optimalizace pro konkrétní akcelerátory
- MCU/TinyML: volit celočíselné výpočty s CMSIS-NN/TFLM; minimalizovat aktivace (opakovaným využíváním bufferů), vyhýbat se operacím mimo podporované kernely.
- NPU: respektovat podporované operace a rozložení (NHWC/NCHW); slučování vrstev (Conv+BN+Act); vyhýbat se dynamickým tvarům.
- DSP: převést předzpracování (MFCC, melové filtry) na pevně optimalizované rutiny; používat aritmetiku s pevnou řádovou čárkou.
- GPU v SoC: dbát na koalescentní přístupy do paměti, dlaždicování a limity aktivací; preferovat menší batch=1.
- FPGA: kvantizovat na int8/4; navrhovat pipeline s překrýváním I/O a výpočtů; omezit větvení.
Toolchain a formáty modelů
- Trénování: PyTorch/TensorFlow + skripty pro QAT, prořezávání, destilaci.
- Konverze/kompilace: ONNX → ONNX Runtime/TVM; TF → TFLite/TFLM; Core ML pro iOS; TensorRT pro Jetson; Arm NN/Compute Library; SDK dodavatelů (SNPE, NPU toolchain).
- Formáty:
.tflite, ONNX, Core ML; pro MCU FlatBuffers a generované tabulky kernelů. - Kompatibilita operátorů: před trénováním zkontrolovat, které vrstvy budou při zpracování „přepnuty“ na CPU, a vyhnout se jim.
Učení na zařízení a federované učení
- Federované učení: model se trénuje lokálně na zařízeních; server agreguje gradienty/parametry; přínos pro soukromí a personalizaci.
- Doladění na zařízení: krátké relace, nízká hodnota LR, adaptéry/LoRA/statistiky BN místo úplné aktualizace; respektovat energetické rozpočty.
- Diferenciální soukromí: přidávání šumu ke gradientům; sledovat dopad na přesnost.
- Kontrola driftu: detekce změn distribuce dat (PSI, MMD, Kolmogorovův–Smirnovův test) a spuštění opětovného trénování.
Profilace a měření na cílovém zařízení
- Latence: měřit od začátku do konce včetně I/O, předzpracování a následného zpracování; používat percentily, zahřátí a připnutí vláken.
- Energie: externí měřiče spotřeby; vykazovat J/inference i mW v klidu a při špičce; korelovat s teplotou a throttlingem.
- Paměť: špičková spotřeba aktivací, fragmentace haldy, buffery DMA; analyzovat při různých vstupních rozlišeních.
- Stabilita: zátěžové testy, dlouhodobý provoz, scénáře poklesu napájecího napětí, restart a obnovení provozu.
Robustnost, bezpečnost a bezpečné selhání
- Robustnost: testy na datech mimo distribuci, při šumu, kompresi, přepalech/přítmí a vibracích; augmentace odpovídající podmínkám v terénu.
- Bezpečnost modelu: podepsané modely, kontrola integrity, šifrované OTA, ochrana před extrakcí modelu a adversariálními vstupy.
- Bezpečný režim při selhání: detekce nízké jistoty → degradovaný režim, tradiční heuristiky nebo předání do cloudu.
- Vysvětlitelnost: lehké metody (CAM/Grad-CAM na edge, zaznamenávání statistik příznaků pro audit).
MLOps pro flotily edge zařízení
- Verzování: semver pro modely i data; karty modelů s metrikami a podporovaným hardwarem.
- A/B testování a canary nasazení: nasazení na část flotily; sběr telemetrie (latence, energie, jistota, četnost pádů).
- Aktualizace OTA: přírůstkové balíčky, delta aktualizace; možnost rychlého návratu k předchozí verzi.
- Monitoring: metriky v čase, upozornění na drift, anomálie, nárůst počtu NACK/chyb časového limitu akcelerátoru.
Praktické vzory podle domény
- Detekce objektů na SoC: učitelský model (YOLOvX/RT-DETR) → studentský model (lehký bez kotevních bodů) + destilace; vstup 320×320; QAT int8; sloučení Conv+BN; cíl <10 ms a <1.5 J/inference.
- Detekce klíčových slov na MCU: DS-CNN <50 k parametrů; MFCC na DSP; QAT int8; dvojitý práh pro spolehlivost; průměrný příkon <1 mW v režimu nepřetržitého provozu.
- Predikce vibrací stroje: TCN/1D-CNN s prořezáváním kanálů; kvantizace int8; proudové zpracování batch=1; výstupní hystereze proti falešným alarmům.
Kontrolní seznam: před nasazením na edge
- Definované SLA: přesnost, latence P95, energie, paměť, teplota.
- Model kompatibilní s operátory akcelerátoru, otestovaný export a sloučení vrstev.
- QAT/prořezávání/destilace dokončeny, dosažen bod na Pareto frontě.
- Profilace na cílovém zařízení: latence, energie, paměť, stabilita, dlouhodobý běh.
- Bezpečnost: podpis, šifrované OTA, kontrola integrity, bezpečný režim při selhání.
- MLOps: verze modelu/datasetu, plán canary nasazení, telemetrie, návrat k předchozí verzi.
Časté chyby a jak se jim vyhnout
- Trénování ve FP32 bez ohledu na kvantizaci → pozdější ztráta přesnosti; řešení: QAT od počátku.
- Nepodporované operátory → přepnutí na CPU a vyšší latence; řešení: včasná kontrola operátorů a omezení výpočetního grafu.
- Nedostatečná paměť pro aktivace → OOM; řešení: nižší rozlišení, menší šířka sítě, dlaždicování, opakované využívání bufferů.
- Laboratorní metriky ≠ podmínky v terénu → zhoršení po nasazení; řešení: testování v reálných podmínkách a dlouhé zátěžové testy.
Závěr
Úspěšné trénování pro edge je disciplína na průsečíku strojového učení, embedded inženýrství a MLOps. Klíčem je myslet „nejprve na hardware“: od volby architektury a QAT přes strukturované prořezávání a destilaci až po přesnou profilaci na cílovém zařízení, bezpečné aktualizace OTA a průběžné monitorování. Správně zvládnutý proces přináší modely, které jsou nejen přesné, ale také rychlé, energeticky úsporné a spolehlivé v reálném světě.
