7.9. TensorFlow Lite for Microcontrollers

TFLM je běhové prostředí, které většina kamer používá ke spuštění načteného modelu. Naparsuje soubor .tflite – FlatBuffer operátorů, vah a tvarů tenzorů – a prochází seznam operátorů popořadě, přičemž každý operátor odesílá do jádra, které vyprodukuje další mezilehlý tenzor.

Mezilehlé tenzory žijí v tenzorové aréně pevné velikosti alokované při načtení. Kamera dimenzuje arénu ve dvou průchodech: nejprve se proti maximální volné haldě postaví jednorázový interpret, aby model mohl ohlásit pracovní paměť, kterou potřebuje; trvalý interpret se pak alokuje s touto přesnou velikostí plus malou rezervou. Menší modely ponechávají více volné haldy pro zbytek skriptu.

TFLM je engine na H7, RT1062 a AE3.

Tři sloupce vedle sebe. Vlevo: H7 a RT1062 provozují TFLM s jádry CMSIS-NN na Cortex-M7. Uprostřed: AE3 provozuje TFLM s CMSIS-NN a operátorem Ethos-U na Cortex-M55 s NPU Ethos-U55. Vpravo: N6 provozuje STAI na NPU Neural-ART.

Engine uprostřed predict() je na každé rodině kamer jiný stack.

7.9.1. Resolver operátorů

TFLM nedodává každé jádro. Kamera slinkuje resolver, který vypisuje operátory, jež dokáže spustit, a model načtený proti resolveru selže při načtení, pokud obsahuje operátor, který v seznamu není. Dodávané sestavení registruje operátory běžné ve vizuálních a signálových sítích – konvoluční a husté vrstvy, pooling a aktivační vrstvy, operátory reshape a concat, operátory quantize a dequantize – takže model trénovaný proti jedné ze standardních architektur (YOLO, MediaPipe, MobileNet) se načte bez rozšiřování seznamu.

Sestavení pro AE3 navíc registruje operátor Ethos-U. Model zkompilovaný pomocí Vela je jinak běžný .tflite a TFLM jím prochází běžně; podgrafy označené Velou narazí na operátor Ethos-U a odešlou se na NPU.