7.9. TensorFlow Lite for Microcontrollers

TFLM è il runtime usato dalla maggior parte delle camere per eseguire un modello caricato. Analizza il file .tflite – un FlatBuffer di operatori, pesi e forme dei tensori – e percorre l’elenco di operatori in ordine, indirizzando ciascun operatore a un kernel che produce il tensore intermedio successivo.

I tensori intermedi risiedono in una tensor arena di dimensione fissa allocata al momento del caricamento. La camera dimensiona l’arena in due passaggi: prima viene costruito un interprete usa e getta a fronte del massimo heap libero, così che il modello possa riportare la memoria di lavoro di cui ha bisogno; l’interprete persistente viene poi allocato con quella dimensione esatta più un piccolo margine. I modelli più piccoli lasciano più heap libero per il resto dello script.

TFLM è il motore sull’H7, sull’RT1062 e sull’AE3.

Three columns side by side. Left: H7 and RT1062 run TFLM with CMSIS-NN kernels on a Cortex-M7. Middle: AE3 runs TFLM with CMSIS-NN and the Ethos-U operator on a Cortex-M55 with an Ethos-U55 NPU. Right: N6 runs STAI on a Neural-ART NPU.

Il motore al centro di predict() è uno stack diverso su ciascuna famiglia di camere.

7.9.1. Il resolver degli operatori

TFLM non include ogni kernel. La camera collega un resolver che elenca gli operatori che è in grado di eseguire, e un modello caricato a fronte del resolver fallisce al momento del caricamento se contiene un operatore non presente nell’elenco. La build fornita registra gli operatori comuni nelle reti di visione e di elaborazione del segnale – i livelli di convoluzione e densi, i livelli di pooling e di attivazione, gli operatori di reshape e concat, gli operatori di quantizzazione e dequantizzazione – così che un modello addestrato su una delle architetture standard (YOLO, MediaPipe, MobileNet) si carichi senza estendere l’elenco.

La build dell’AE3 registra inoltre l’operatore Ethos-U. Un modello compilato con Vela è per il resto un normale .tflite, e TFLM lo percorre normalmente; i subgraph contrassegnati da Vela raggiungono l’operatore Ethos-U e vengono inviati alla NPU.