7.9. TensorFlow Lite for Microcontrollers¶
TFLM is de runtime die de meeste cams gebruiken om een geladen model uit te voeren. Het parseert het .tflite-bestand – een FlatBuffer van operatoren, gewichten en tensorvormen – en doorloopt de operatorlijst op volgorde, waarbij elke operator naar een kernel wordt gestuurd die de volgende tussenliggende tensor produceert.
Tussenliggende tensoren leven in een tensor-arena met vaste grootte die bij het laden wordt gealloceerd. De cam bepaalt de grootte van de arena in twee passes: eerst wordt een wegwerp-interpreter gebouwd tegen de maximale vrije heap zodat het model het werkgeheugen kan rapporteren dat het nodig heeft; de persistente interpreter wordt vervolgens met precies die grootte plus een kleine marge gealloceerd. Kleinere modellen laten meer heap vrij voor de rest van het script.
TFLM is de engine op de H7, de RT1062 en de AE3.
De engine in het midden van predict() is op elke cam-familie een andere stack.¶
7.9.1. De op-resolver¶
TFLM levert niet elke kernel mee. De cam linkt een resolver in die de operatoren opsomt die hij kan uitvoeren, en een model dat tegen de resolver wordt geladen faalt bij het laden als het een operator bevat die niet op de lijst staat. De uitgeleverde build registreert de operatoren die gangbaar zijn in vision- en signaalverwerkingsnetwerken – de convolutie- en dense-lagen, de pool- en activeringslagen, de reshape- en concat-operatoren, de quantize- en dequantize-operatoren – zodat een model dat tegen een van de standaardarchitecturen (YOLO, MediaPipe, MobileNet) is getraind laadt zonder de lijst uit te breiden.
De AE3-build registreert daarnaast de Ethos-U-operator. Een Vela-gecompileerd model is verder een normale .tflite, en TFLM doorloopt het normaal; de Vela-getagde subgraphs raken de Ethos-U-operator en sturen naar de NPU.