Znalazłem ciekawy artykuł obrazujący technicznie uruchamianie modeli AI na tak ograniczonych sprzętach, jak mikrokontrolery. Mikrokontrolery są najbardziej ograniczonymi platformami do uruchamiania AI pod względem mocy obliczeniowej, pamięci i przepustowości sieci.
W skrócie do działania modeli AI potrzebne są nie tylko wagi, ale także operatory - instrukcje podobne do tych w procesorach. Najpopularniejsze środowisko TensorFlow Lite for Microcontrollers używa plików .tflite, które zawierają zarówno wagi modelu, jak i graf obliczeniowy określający, jakich operacji użyć.
Jądra (kernels) to implementacje operatorów w oprogramowaniu. Mogą być wykonywane jako prosty kod C lub wykorzystywać specjalne funkcje sprzętowe dla lepszej wydajności.
Autor pokazuje, jak operator dodawania działa na różnych poziomach optymalizacji. Podstawowa implementacja wykonuje sekwencyjne dodawanie element po elemencie, co jest wolne ale działa na każdym sprzęcie.
Nowoczesne mikrokontrolery z rdzeniami ARM Cortex-M mogą wykorzystywać rozszerzenia:
DSP Extension - pozwala na równoległe obliczenia, przetwarzając 4 elementy naraz
MVE (Helium) - jeszcze bardziej zaawansowane instrukcje wektorowe
NPU Ethos-U - dedykowane procesory AI
Biblioteka CMSIS-NN automatycznie wybiera najlepszą implementację dostępną dla danego sprzętu.
Artykuł przedstawia pełne spektrum: od prostych implementacji w C, przez wykorzystanie instrukcji sprzętowych, aż po przenoszenie obliczeń na specjalizowane procesory AI. Optymalizacje mogą być stosowane bez modyfikacji modelu, choć niektóre zaawansowane funkcje (jak NPU) wymagają specjalnej kompilacji.
Z tej krótki notki, chciałbym, abyście wiedzieli, że AI na mikrokontrolerach to nie proste kopiowanie algorytmów z komputerów - wymaga sprytnych optymalizacji i głębokiego zrozumienia ograniczeń sprzętowych, aby osiągnąć zadowalającą wydajność przy absolutnie minimalnych zasobach. Jednak ostatnio sporo się dzieje w tej dziedzinie i jeśli będziecie zainteresowani, mogę co jakiś czas informować o nowych rozwiązaniach.
Cały artykuł:
https://danielmangum.com/posts/ai-microcontrollers-operators-kernels/
Jeden ciekawy komentarz z Hacker News:
Biblioteka tf-lite micro ma wiele zalet, a pierwszą z nich jest sam framework TensorFlow. Możesz łatwo wytrenować model, a następnie zaimplementować taką samą lub podobną architekturę na ESP-32 bez większego wysiłku. Kolejną zaletą jest jej optymalizacja - możesz łatwo ingerować w różne optymalizacje pamięci.
Poza tym, na przykład, autor zaimplementował model tradycyjnie używając C, ale wygodniej jest używać tf-lite micro na ESP32 z językiem skryptowym Berry.
https://news.ycombinator.com/item?id=44422662
W skrócie do działania modeli AI potrzebne są nie tylko wagi, ale także operatory - instrukcje podobne do tych w procesorach. Najpopularniejsze środowisko TensorFlow Lite for Microcontrollers używa plików .tflite, które zawierają zarówno wagi modelu, jak i graf obliczeniowy określający, jakich operacji użyć.
Jądra (kernels) to implementacje operatorów w oprogramowaniu. Mogą być wykonywane jako prosty kod C lub wykorzystywać specjalne funkcje sprzętowe dla lepszej wydajności.
Autor pokazuje, jak operator dodawania działa na różnych poziomach optymalizacji. Podstawowa implementacja wykonuje sekwencyjne dodawanie element po elemencie, co jest wolne ale działa na każdym sprzęcie.
Nowoczesne mikrokontrolery z rdzeniami ARM Cortex-M mogą wykorzystywać rozszerzenia:
DSP Extension - pozwala na równoległe obliczenia, przetwarzając 4 elementy naraz
MVE (Helium) - jeszcze bardziej zaawansowane instrukcje wektorowe
NPU Ethos-U - dedykowane procesory AI
Biblioteka CMSIS-NN automatycznie wybiera najlepszą implementację dostępną dla danego sprzętu.
Artykuł przedstawia pełne spektrum: od prostych implementacji w C, przez wykorzystanie instrukcji sprzętowych, aż po przenoszenie obliczeń na specjalizowane procesory AI. Optymalizacje mogą być stosowane bez modyfikacji modelu, choć niektóre zaawansowane funkcje (jak NPU) wymagają specjalnej kompilacji.
Z tej krótki notki, chciałbym, abyście wiedzieli, że AI na mikrokontrolerach to nie proste kopiowanie algorytmów z komputerów - wymaga sprytnych optymalizacji i głębokiego zrozumienia ograniczeń sprzętowych, aby osiągnąć zadowalającą wydajność przy absolutnie minimalnych zasobach. Jednak ostatnio sporo się dzieje w tej dziedzinie i jeśli będziecie zainteresowani, mogę co jakiś czas informować o nowych rozwiązaniach.
Cały artykuł:
https://danielmangum.com/posts/ai-microcontrollers-operators-kernels/
Jeden ciekawy komentarz z Hacker News:
Biblioteka tf-lite micro ma wiele zalet, a pierwszą z nich jest sam framework TensorFlow. Możesz łatwo wytrenować model, a następnie zaimplementować taką samą lub podobną architekturę na ESP-32 bez większego wysiłku. Kolejną zaletą jest jej optymalizacja - możesz łatwo ingerować w różne optymalizacje pamięci.
Poza tym, na przykład, autor zaimplementował model tradycyjnie używając C, ale wygodniej jest używać tf-lite micro na ESP32 z językiem skryptowym Berry.
https://news.ycombinator.com/item?id=44422662
Fajne? Ranking DIY