7.9. TensorFlow Lite untuk Mikrokontroler

TFLM adalah runtime yang digunakan sebagian besar kamera untuk mengeksekusi model yang dimuat. TFLM mengurai file .tflite -- sebuah FlatBuffer yang berisi operator, bobot, dan bentuk tensor -- dan menelusuri daftar operator secara berurutan, mendistribusikan setiap operator ke kernel yang menghasilkan tensor perantara berikutnya.

Tensor perantara berada dalam arena tensor berukuran tetap yang dialokasikan saat waktu muat. Kamera menentukan ukuran arena dalam dua tahap: pertama, interpreter sekali-pakai dibuat dengan heap bebas maksimum agar model dapat melaporkan memori kerja yang dibutuhkannya; kemudian interpreter permanen dialokasikan dengan ukuran tepat tersebut ditambah margin kecil. Model yang lebih kecil menyisakan lebih banyak heap untuk bagian lain dari skrip.

TFLM adalah engine pada H7, RT1062, dan 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.

Engine di dalam predict() adalah tumpukan yang berbeda pada setiap keluarga kamera.

7.9.1. Op resolver

TFLM tidak menyertakan setiap kernel. Kamera menautkan sebuah resolver yang mencantumkan operator yang dapat dieksekusinya, dan model yang dimuat terhadap resolver akan gagal saat waktu muat jika mengandung operator yang tidak ada dalam daftar. Build yang dikirimkan mendaftarkan operator yang umum digunakan dalam jaringan visi dan pemrosesan sinyal -- layer konvolusi dan dense, layer pool dan aktivasi, operator reshape dan concat, operator quantize dan dequantize -- sehingga model yang dilatih berdasarkan salah satu arsitektur standar (YOLO, MediaPipe, MobileNet) dapat dimuat tanpa memperluas daftar.

Build AE3 juga mendaftarkan operator Ethos-U. Model yang dikompilasi dengan Vela sebaliknya adalah .tflite biasa, dan TFLM menelusurinya seperti biasa; subgraf bertanda Vela menekan operator Ethos-U dan dikirim ke NPU.