7.9. TensorFlow Lite for Microcontrollers¶
TFLM은 대부분의 카메라가 로드된 모델을 실행하는 데 사용하는 런타임입니다. .tflite 파일(연산자, 가중치, 텐서 형상의 FlatBuffer)을 파싱하고 연산자 목록을 순서대로 순회하면서, 각 연산자를 다음 중간 텐서를 생성하는 커널로 디스패치합니다.
중간 텐서는 로드 시점에 할당되는 고정 크기의 텐서 아레나(tensor arena)에 존재합니다. 카메라는 두 번의 패스로 아레나 크기를 정합니다. 먼저 최대 가용 힙에 대해 임시 인터프리터를 구축하여 모델이 필요로 하는 작업 메모리를 보고할 수 있게 합니다. 그런 다음 영구 인터프리터를 정확히 그 크기에 약간의 여유를 더해 할당합니다. 모델이 작을수록 스크립트의 나머지 부분을 위해 더 많은 힙이 비어 있게 됩니다.
TFLM은 H7, RT1062, AE3의 엔진입니다.
7.9.1. op 리졸버¶
TFLM은 모든 커널을 함께 출하하지는 않습니다. 카메라는 실행할 수 있는 연산자를 나열한 리졸버(resolver)를 링크하며, 리졸버를 대상으로 로드된 모델이 목록에 없는 연산자를 포함하면 로드 시점에 실패합니다. 출하 빌드는 비전 및 신호 처리 네트워크에서 흔한 연산자(컨볼루션 및 밀집 계층, 풀 및 활성화 계층, reshape 및 concat 연산자, quantize 및 dequantize 연산자)를 등록하므로, 표준 아키텍처 중 하나(YOLO, MediaPipe, MobileNet)로 학습된 모델은 목록을 확장하지 않고도 로드됩니다.
AE3 빌드는 추가로 Ethos-U 연산자를 등록합니다. Vela로 컴파일된 모델은 그 외에는 일반적인 .tflite이며, TFLM은 이를 정상적으로 순회합니다. Vela로 태그된 서브그래프는 Ethos-U 연산자에 도달하여 NPU로 디스패치됩니다.