7.9. TensorFlow Lite for Microcontrollers¶
TFLM là runtime mà hầu hết các camera sử dụng để thực thi mô hình đã tải. Nó phân tích tệp .tflite -- một FlatBuffer của các toán tử, trọng số và hình dạng tensor -- và duyệt qua danh sách toán tử theo thứ tự, điều phối mỗi toán tử đến một kernel tạo ra tensor trung gian tiếp theo.
Các tensor trung gian sống trong một tensor arena có kích thước cố định được cấp phát tại thời điểm tải. Camera định kích thước arena trong hai lượt: đầu tiên, một bộ thông dịch dùng một lần được xây dựng dựa trên heap trống tối đa để mô hình có thể báo cáo bộ nhớ làm việc mà nó cần; sau đó bộ thông dịch liên tục được cấp phát với kích thước chính xác đó cộng thêm một biên độ nhỏ. Các mô hình nhỏ hơn để lại nhiều heap trống hơn cho phần còn lại của tập lệnh.
TFLM là engine trên H7, RT1062, và AE3.
Engine ở giữa predict() là một ngăn xếp khác nhau trên mỗi dòng camera.¶
7.9.1. Bộ phân giải toán tử¶
TFLM không đi kèm mọi kernel. Camera liên kết với một bộ phân giải liệt kê các toán tử mà nó có thể thực thi, và một mô hình được tải dựa trên bộ phân giải sẽ thất bại tại thời điểm tải nếu nó chứa một toán tử không có trong danh sách. Bản dựng xuất xưởng đăng ký các toán tử phổ biến trong các mạng thị giác và xử lý tín hiệu -- các lớp tích chập và dày đặc, các lớp gộp và kích hoạt, các toán tử định hình lại và nối ghép, các toán tử lượng tử hóa và phi lượng tử hóa -- vì vậy một mô hình được huấn luyện dựa trên một trong các kiến trúc tiêu chuẩn (YOLO, MediaPipe, MobileNet) sẽ tải mà không cần mở rộng danh sách.
Bản dựng AE3 ngoài ra còn đăng ký toán tử Ethos-U. Một mô hình được biên dịch bởi Vela thực chất là .tflite bình thường, và TFLM duyệt qua nó bình thường; các subgraph được gắn thẻ Vela sẽ chạy vào toán tử Ethos-U và điều phối đến NPU.