logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Głębokie uczenie maszynowe na mikrokontrolerach - przyszłość obliczeń brzegowych

ghost666 13 Wrz 2020 20:01 1269 3
  • Głębokie uczenie maszynowe na mikrokontrolerach - przyszłość obliczeń brzegowych
    Przykłady modeli MobileNet V1 o różnych mnożnikach szerokości pokazują drastyczny wpływ na liczbę parametrów, obliczeń
    i dokładność. Jednak sama zmiana mnożnika szerokości z 1,0 na 0,75 minimalnie wpływa na dokładność TOP-1, ale znacząco
    wpływa na liczbę parametrów i obliczeń (Zdjęcie: NXP)[/align]Jeszcze kilka lat temu zakładano, że uczenie maszynowe (ML) - nie mówiąc już o uczeniu głębokim (DL) - może być realizowane tylko na wysokiej klasy sprzęcie. Bramy czy serwery brzegowe lub centra danych znajdujące się na krawędzi odpowiedzialne miały być za trening algorytmów oraz inferencję. W tamtym czasie było to słuszne założenie, ponieważ trend w kierunku dystrybucji zasobów obliczeniowych między chmurą a brzegiem był na wczesnym etapie rozwoju. Ten scenariusz jednakże zmienił się obecnie radykalnie, dzięki intensywnym pracom badawczo-rozwojowym podjętym przez przemysł i środowisko akademickie.

    W rezultacie obecnie procesory zdolne do wykonywania wielu bilionów operacji na sekundę (TOPS) nie są wymagane do wykonywania zadań ML. W coraz większej liczbie przypadków najnowsze mikrokontrolery, niektóre z wbudowanymi akceleratorami ML, mogą przenosić ML z chmury na urządzenia brzegowe.

    Urządzenia te nie tylko mogą wykonywać algorytmy ML, ale potrafią to zrobić dobrze, niskim kosztem, bardzo niskim zużyciem energii, łącząc się z chmurą tylko wtedy, gdy jest to absolutnie konieczne. Krótko mówiąc, mikrokontrolery ze zintegrowanymi akceleratorami uczenia maszynowego to kolejny krok w przenoszeniu obliczeń do czujników, takich jak mikrofony, kamery i systemy monitorujące warunki środowiskowe, które generują dane, na podstawie których realizowane są wszystkie korzyści płynące z Internetu Rzeczy (IoT).

    Jak głęboka jest krawędź?

    Chociaż brzeg jest powszechnie uważany za najdalej wysunięty punkt w sieci IoT, ogólnie jest to jakiegoś rodzaju zaawansowana brama lub serwer brzegowy. Jednak to nie koniec krawędzi. Kończy się ona realnie na czujnikach w pobliżu użytkownika. Logiczne staje się umieszczenie jak największej mocy analitycznej blisko użytkownika, do czego idealnie nadają się mikrokontrolery.

    Deep Learning na mikrokontrolerze

    Można by wysunąć argument, że komputery jednopłytkowe mogą być również używane do przetwarzania brzegowego, ponieważ są mają one dosyć dużą wydajność, a w klastrach mogą nawet rywalizować z małymi superkomputerami. Jednakże nadal są zbyt duże i zbyt kosztowne, aby można je było wdrożyć w setkach lub tysiącach wymaganych sztuk w aplikacjach realizowanych na dużą skalę, takich jak rozproszone sensory. Wymagają one również zewnętrznego źródła zasilania, które w niektórych przypadkach może wykraczać poza to, co jest dostępne w danym systemie. Typowy mikrokontroler zużywa tylko miliwaty i może być zasilane bateriami pastylkowymi lub nawet kilkoma ogniwami słonecznymi, oferując podobną wydajność w zakresie uczenia maszynowego.

    Nic więc dziwnego, że zainteresowanie mikrokontrolerami do wykonywania algorytmów ML na krawędzi stało się bardzo gorącym obszarem rozwoju. Ma to nawet swoją nazwę – TinyML. Celem TinyML jest umożliwienie realizacji wnioskowania i ostatecznie szkolenia na małych, ograniczonych zasobach urządzeniach o niskim poborze mocy, a zwłaszcza na mikrokontrolerach, zamiast na większych platformach lub w chmurze. Wymaga to zmniejszenia rozmiarów modelów sieci neuronowych w celu dostosowania ich do stosunkowo skromnych zasobów przetwarzania, przechowywania i przepustowości tych urządzeń, bez znacznego zmniejszania funkcjonalności i dokładności.

    Te zoptymalizowane pod względem zasobów algorytmu umożliwiają urządzeniom pobieranie wystarczającej ilości danych z czujników, aby spełnić swoje zadanie, przy jednoczesnym dostrojeniu ich dokładności i zmniejszeniu wymagań dotyczących zasobów. Tak więc, chociaż dane mogą być nadal wysyłane do chmury (lub być może najpierw do bramy brzegowej, a następnie do chmury), będzie ich znacznie mniej, ponieważ przeprowadzono już wstępną analizę.

    Popularnym przykładem TinyML w akcji jest oparty na kamerze system wykrywania obiektów, który może przechwytywać obrazy w wysokiej rozdzielczości, ale ma ograniczoną pamięć i wymaga zmniejszenia rozdzielczości tegoż obrazu. Jeśli jednak kamera obejmuje analizę na urządzeniu, przechwytywane są tylko interesujące obiekty, a nie cała scena, a ponieważ odpowiednich obrazów jest mniej, można zachować je w wyższej rozdzielczości. Ta zdolność jest zwykle związana z większymi, mocniejszymi urządzeniami, ale niewielka technologia ML pozwala realizować to na mikrokontrolerach.

    Głębokie uczenie maszynowe na mikrokontrolerach - przyszłość obliczeń brzegowych
    Przypadki użycia uczenia maszynowego (Zdjęcie: NXP)


    Mały, ale wariat

    Chociaż TinyML jest stosunkowo nowym paradygmatem, już teraz daje zaskakująco dobre wyniki w zakresie wnioskowania (nawet ze stosunkowo słabymi mikrokontrolerami) i uczenia (na mocniejszych układach) przy minimalnej utracie dokładności. Najnowsze przykłady obejmują rozpoznawanie głosu i twarzy, polecenia głosowe i przetwarzanie języka naturalnego, a nawet równoległe uruchamianie kilku złożonych algorytmów widzenia maszynowego.

    W praktyce oznacza to, że mikrokontroler kosztujący mniej niż 2 dolary (np. z rdzeniem ARM Cortex-M7 taktowany 500 MHz i pamięcią od 28 KB do 128 KB) może zapewnić wydajność wymaganą do uczynienia czujników naprawdę inteligentnymi. Nawet na tym poziomie ceny i wydajności te mikrokontrolery mają wiele funkcji bezpieczeństwa, w tym AES-128, obsługę wielu typów pamięci zewnętrznych, Ethernet, USB i SPI, a także obejmują lub obsługują różne typy czujników, a także Bluetooth, wejścia audio Wi-Fi oraz SPDIF i I²C. Jeśli sięgnąć po trochę droższy układ, z łatwością znaleźć można układ, który będzie oferował taktowany zegarem 1-GHz rdzeń ARM Cortex-M7 z dodatkowym rdzeniem ARM Cortex-M4 taktowanym 400 MHz, 2 MB pamięci RAM i akceleratorem grafiki. Zużycie energii jest nawet w takim wypadku nie większe niż kilka miliamperów przy zasilaniu 3,3 V.

    Kilka słów o TOPS

    Konsumenci nie są sami, kiedy starają się używać jednego, uniwersalnego wskaźnika do zdefiniowania wydajności obliczeniowej systemu; projektanci robią to cały czas, a działy marketingu wręcz to uwielbiają. Dzieje się tak, ponieważ taka jednoliczbowa specyfikacja upraszcza rozróżnianie urządzeń, a przynajmniej tak może się wydawać. Klasycznym przykładem jest procesor, który przez wiele lat był definiowany przez częstotliwość taktowania. Na szczęście zarówno dla projektantów, jak i konsumentów, już tak nie jest. Używanie tylko jednego wskaźnika do oceny procesora jest podobne do oceniania osiągów samochodu na podstawie tego, gdzie na obrotomierzu znajduje się czerwona kreska. Nie jest to bez znaczenia, ale ma niewiele wspólnego z realną mocą silnika lub osiągami samochodu, ponieważ wiele innych czynników łącznie określa te cechy.

    Niestety, to samo jest coraz bardziej prawdziwe w przypadku akceleratorów sieci neuronowych, w tym tych w wysokowydajnych procesorach czy mikrokontrolerach. Zazwyczaj są one parametryzowane poprzez podawanie liczby - miliardy lub biliony operacji na sekundę - ponieważ jest to łatwa do zapamiętania metryka. Ale w praktyce same GOPS czy TOPS są stosunkowo bezsensownymi miernikami i reprezentują pomiar (bez wątpienia najlepszy) wykonany w laboratorium, a nie reprezentują rzeczywiste środowisko operacyjne. Na przykład pomiar TOPS nie bierze pod uwagę ograniczeń przepustowości pamięci, wymaganego obciążenia procesora, przetwarzania wstępnego i końcowego oraz innych czynników. Biorąc pod uwagę wszystkie te i inne czynniki, takie jak wydajność w przypadku zastosowania na konkretnej płytce podczas rzeczywistej pracy, wydajność na poziomie systemu może prawdopodobnie wynosić 50% lub 60% wartości TOPS w karcie katalogowej.

    Wszystkie te liczby mówią o liczbie elementów obliczeniowych w sprzęcie pomnożonym przez ich częstotliwość zegara, a nie o częstotliwości, z jaką dane będą realnie dostępne, gdy będą potrzebne do działania systemu. Gdyby dane były zawsze natychmiast dostępne, zużycie energii nie stanowiło problemu, ograniczenia pamięci nie istniały, a algorytmy zostałby bezproblemowo zmapowany na sprzęt, to wartości TOPS miałyby pełen sens. Niestety – prawdziwy świat nie przedstawia na ogół tak idealnych warunków.

    Po zastosowaniu do akceleratorów ML w mikrokontrolerach metryka ta jest jeszcze mniej wartościowa. Te małe urządzenia mają zwykle wartość od 1 do 3 TOPS, ale mogą zapewniać możliwości wnioskowania wymagane w wielu aplikacjach ML. Urządzenia te opierają się również na procesorach ARM Cortex, ale zaprojektowanych specjalnie do zastosowań w systemach uczenia maszynowego o niskim poborze mocy. Wraz z obsługą zarówno operacji na liczbach całkowitych, jak i zmiennoprzecinkowych oraz wielu innych funkcji mikrokontrolera, staje się oczywiste, że TOPS lub jakakolwiek inna pojedyncza metryka nie jest w stanie odpowiednio zdefiniować wydajności ani samodzielnie, ani w systemie.

    Podsumowanie

    Chęć realizacji algorytmów wnioskowania na mikrokontrolerach bezpośrednio przy sensorach lub podłączonych do czujników, takich jak kamery i kamery wideo, pojawia się teraz, gdy IoT zbliża się do wykonywania jak największego przetwarzania na krawędzi. Tempo rozwoju procesorów aplikacyjnych i akceleratorów sieci neuronowych w mikrokontrolerach jest szybkie i często pojawiają się bardziej sprawne, nowsze rozwiązania. Trend zmierza w kierunku konsolidacji rozwiązań i systemów bardziej skoncentrowanych na sztucznej inteligencji z funkcjami takimi, jak przetwarzanie w sieciach neuronowych wraz z procesorem aplikacyjnym w mikrokontrolerze bez dramatycznego zwiększania zużycia energii lub rozmiaru.

    Obecnie modele ML można trenować na mocniejszym CPU lub GPU, a następnie zaimplementować na mikrokontrolerze przy użyciu silników wnioskowania, takich jak TensorFlow Lite, w celu zmniejszenia ich rozmiaru i spełnienia wymagań dotyczących zasobów mikrokontrolera. Można łatwo przeprowadzić skalowanie, aby dostosować się do konkretnych wymagań. Wkrótce powinno być możliwe nie tylko wnioskowanie, ale i szkolenie algorytmów na tych urządzeniach, co skutecznie uczyni mikrokontroler jeszcze groźniejszym konkurentem dla większych i droższych rozwiązań obliczeniowych.

    Źródło: https://www.eetimes.com/deep-learning-on-mcus-is-the-future-of-edge-computing/
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11961 postów o ocenie 10267, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #3 18922059
    ghost666
    Tłumacz Redaktor
    Posty: 11961
    Pomógł: 157
    Ocena: 10267
    khoam napisał:
    Tak, żeby nie było, że tylko ARM, to Espressif też ogłosił dostępność TensorFlow Lite dla ESP32 :)
    https://www.espressif.com/en/news/TensforFlow_blogpost


    Oooo - ciekawe czy Arduino to będzie obsługiwało :O
  • #4 18922075
    Konto nie istnieje
    Poziom 1  
REKLAMA