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.
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.