Czy można uruchomić i wyszkolić sieć neuronową na 8-bitowym mikrokontrolerze?

11

Niedawno czytałem o sieciach neuronowych w ograniczonych środowiskach (w szczególności implementacji sieci neuronowej na niedrogim ośmiobitowym mikrokontrolerze ) i ich zastosowaniach w urządzeniach IoT (np. Regresja do przewidywania rzeczy na podstawie danych wejściowych z czujników itp.).

Wydaje się to idealne w przypadku prostych aplikacji, w których przetwarzanie nie jest czasochłonne, a dane do przetworzenia będą stosunkowo rzadkie. Jednak dalsze badania sugerują, że szkolenie sieci neuronowej w środowisku ograniczonym zasobami jest złym pomysłem (patrz odpowiedź na Czy można uruchomić sieć neuronową na mikrokontrolerze ).

Czy nadal dotyczy to podejścia Cotton, Wilamowski i Dündar, które połączyłem? Czy konieczne byłoby szkolenie sieci zaprojektowanej pod kątem niskiego zużycia zasobów na mocniejszym urządzeniu w mojej sieci IoT?

Dla kontekstu, gdybym miał czujnik transmitujący ustawienie ciepła, rozważam sieć neuronową, jak opisano w artykule, aby przewidzieć pożądane ustawienie kotła na podstawie tego i pory dnia itp. Szkolenie byłoby przydatne, aby zmienić sieć neuronową dane wyjściowe w oparciu o więcej danych dostarczonych przez użytkownika. To pytanie Quora dobrze opisuje podobny scenariusz i omawia szczegóły implementacji sieci neuronowej, ale moje pytanie koncentruje się bardziej na tym, czy uruchomienie sieci na samym siłowniku będzie działać.

Aurora0001
źródło
Ciekawostki, czy zamierzasz uruchomić sieć neuronową na każdym węźle czujnik / element wykonawczy lub w jakimś (częściowo) scentralizowanym „mózgu” (wtedy oczywiście ograniczenie 8-bitowe niekoniecznie miałoby zastosowanie)?
Ghanima
@Ghanima, jeśli to możliwe, chciałbym to zrobić w węźle siłownika, aby zaoszczędzić dodatkową warstwę złożoności, chociaż nie jestem pewien, czy to zadziałałoby z ograniczonymi ograniczeniami.
Aurora0001
@ Aurora0001 Określony kontroler, który tu umieszczasz, może nie nadawać się do szkolenia Twojego NN, ale we wbudowanym świecie komputerowym podejmowane są wspólne wysiłki, aby to zrobić. Jeśli próbujesz znaleźć mikrokontroler o architekturze odpowiedniej do takich zadań, sugeruję, abyś spojrzał na firmy opracowujące tego rodzaju sprzęt dla branży komputerowej. Jestem pewien, że niektóre z nich można zmienić i dostosować do twoich wymagań. Dobre miejsce na start
grldsndrs
@grldsndrs fantastycznie, dzięki za odniesienie. Możesz
napisać
1
8-bitowy procesor może zrobić wszystko, co potrafi szerszy procesor tekstu, tylko być może (w zależności od zadania) wolniej. Jednak 8-bitowe procesory mają zwykle ograniczoną natywną przestrzeń adresową, co oznacza, że ​​muszą używać pośrednich środków do zarządzania bardzo dużymi pamięciami, aw przypadku mikrokontrolerów mają tendencję do wysyłania ze stosunkowo małą ilością pamięci na chipie. Różnica kosztów jest coraz niższa niż w najniższych segmentach - głównym czynnikiem napędzającym koszt MCU są prawdopodobnie wspomnienia, a nie szerokość ALU.
Chris Stratton

Odpowiedzi:

9

Według pierwszego artykułu bieganie nie stanowi problemu. To był cel. Ograniczenia dotyczą tylko maksymalnych ciężarów:

Obecnie ograniczenie architektury wbudowanej w ten mikrokontroler jest ograniczone tylko liczbą potrzebnych wag. Sieć neuronowa jest obecnie ograniczona do 256 wag. Jednak w przypadku większości aplikacji osadzonych ta waga 256 nie powinna ograniczać systemu.


Jeśli chodzi o szkolenie, o ile rozumiem opisaną implementację, kontroler PIC odbiera parametry z zewnętrznego źródła.

Obliczenia do przodu dla sieci neuronowej są zapisywane tak, że każdy neuron jest obliczany indywidualnie w szeregu zagnieżdżonych pętli. Liczba obliczeń dla każdej pętli i wartości dla każdego węzła są przechowywane w prostej tablicy w pamięci.

[...]

Te tablice zawierają architekturę i wagi sieci. Obecnie do celów demonstracyjnych tablice te są wstępnie ładowane w momencie programowania układu, ale w ostatecznej wersji nie byłoby to konieczne. Mikrokontroler można łatwo zmodyfikować, aby zawierał prosty moduł ładujący, który korzysta z wbudowanego portu szeregowego RS232, który odbierałby dane dotyczące wag i topografii ze zdalnej lokalizacji. Umożliwiłoby to modyfikację wag, a nawet całej sieci, gdy chip znajduje się w terenie.

Podejrzewam, że szkolenie odbywa się również na zewnątrz.

Artykuł zawiera również odniesienia do trenerów sieci neuronowych, które prawdopodobnie zostały użyte do określenia wartości zaprogramowanych w pamięci PIC.

Teraz zajrzałem do pierwszego, który opisuje architektury sieci i algorytmy, które można z nimi stosować. Ale używane tutaj oprogramowanie trenera sieci neuronowej jest zaimplementowane w MATLAB.

Obecnie dostępnych jest bardzo mało oprogramowania do szkolenia sieci neuronowych, które szkoliłoby w pełni połączone sieci. W tym celu w MATLAB został opracowany pakiet z graficznym interfejsem użytkownika. To oprogramowanie pozwala użytkownikowi na łatwe wprowadzanie bardzo złożonych architektur, a także początkowych wag, parametrów szkolenia, zestawów danych oraz wyboru kilku potężnych algorytmów.

Muszę wspomnieć, że w pełni połączone sieci mają niższą liczbę wag dla tego samego zadania niż architektura warstwa po warstwie. Dzięki temu jest bardziej odpowiedni dla mikrokontrolerów.

Nie jestem ekspertem od sieci neuronowych i jest to dość skomplikowane, więc mogę się mylić, ale na podstawie tych dokumentów powiedziałbym, że podejście Cotton, Wilamowski i Dündar wymaga zewnętrznej, silniejszej platformy do przeprowadzenia szkolenia.


O uruchomieniu sieci neuronowej na mikrokontrolerze firma ST Microelectronics właśnie ogłosiła zestaw narzędzi STM32Cube.AI: Konwertuj sieci neuronowe na zoptymalizowany kod dla STM32 do konwersji wstępnie wyszkolonych sieci neuronowych z popularnych bibliotek do większości MCU STM32.

Bence Kaulics
źródło