Czym jest TinyML?
| Gospodarka AktualnościSztuczna inteligencja rozwija się w bezprecedensowym tempie. Szybko też przybywa dla niej nowych zastosowań. Najnowszą gałęzią AI jest TinyML. W artykule wyjaśniamy, czym jest i jak z niej korzystać.
Dane, generowane w niespotykanym dotąd tempie, uznaje się za złoto XXI wieku. Same w sobie nie mają jednak wartości, dopóki nie zostaną poddane analizie, z której wnioski można wykorzystać w rozwiązywaniu problemów i optymalizacji procesów. W tym zastosowaniu na znaczeniu zyskują ostatnio technologie sztucznej inteligencji. Jej najbardziej rozwinięta gałąź to uczenie maszynowe (machine learning, ML). W podejściu tym tworzone są modele, które na podstawie danych uczą się i doskonalą, jak ludzie, przez doświadczenie.
Najszybciej rozwijająca się gałąź uczenia maszynowego to z kolei głębokie uczenie (deep learning, DL), które wykorzystuje głębokie sieci neuronowe, czyli sieci neuronowe z wieloma warstwami. Algorytmy te implementuje się tak, aby symulowały pracę ludzkiego umysłu. Charakterystyczne jest dla nich również to, że na im większej ilości danych mogą trenować, tym lepsze wyniki osiągają. Złożoność algorytmów uczenia maszynowego zwiększa się wykładniczo, głównie dzięki rosnącej szybkości procesorów i postępom w technice przetwarzania dużych zbiorów danych Big Data.
AI w chmurze
Modele sztucznej inteligencji początkowo były dość proste, więc uruchamiano je na komputerach z jednym albo kilkoma rdzeniami w jednostce centralnej. Szybko jednak stopień komplikacji operacji na macierzach i wektorach, na których opierają się algorytmy sieci neuronowych, zwiększył się na tyle, że zaczęto wykorzystywać GPU (Graphics Processing Unit) i TPU (Tensor Processing Unit). Kluczowy okazał się także rozwój chmury obliczeniowej, która zapewnia zdalny dostęp na żądanie do potrzebnych zasobów obliczeniowych.
Korzystanie z chmury nie zawsze jest jednak najlepszym pomysłem. Dotyczy to zwłaszcza aplikacji opartych na algorytmach sztucznej inteligencji, które muszą być uruchamiane blisko użytkowników końcowych i powinny działać płynnie. Wynika to stąd, że przesyłanie danych do chmury wymaga odpowiedniej przepustowości i wiąże się z nieuniknionymi opóźnieniami. Ponadto liczyć się trzeba z zagrożeniami prywatności, jeżeli dojdzie do wycieku danych. Coraz większą uwagę zwraca się też na rosnące w bardzo szybkim tempie zużycie energii przez centra danych udostępniające zasoby obliczeniowe w chmurze.
Embedded ML
Korzyści płynące z możliwości uruchamiania algorytmów głębokiego uczenia lokalnie doceniają już miliony użytkowników, którzy korzystają na smartfonach z takich aplikacji jak Siri, OK Google oraz Apple FaceID. Opierają się one na modelach uczenia maszynowego ML/DL, które są wstępnie trenowane w chmurze, a uruchamiane na urządzeniach o ograniczonych zasobach obliczeniowych.
Oprócz smartfonów mogą to być także różnego typu systemy wbudowane. Podejście to klasyfikuje się jako embedded machine learning (EML). Opiera się ono na następującej zasadzie: modele AI trenuje się w klastrach obliczeniowych albo w chmurze, zaś operacje wnioskowania i wykonywanie modeli odbywa się już w systemach wbudowanych.
Jak się bowiem okazuje, po wytrenowaniu, operacje macierzowe modeli głębokiego uczenia można efektywnie przeprowadzać na urządzeniach z procesorami o ograniczonej mocy obliczeniowej, a nawet na małych, na przykład 16- i 32-bitowych, mikrokontrolerach. Nową dziedzinę sztucznej inteligencji typu EML w wersji na mikrokontrolery zoptymalizowane pod kątem ograniczenia poboru mocy określa się jako TinyML (Tiny Machine Learning).
Zalety EML
Wykonywanie modeli ML w systemach wbudowanych w porównaniu z podejściem, w którym są uruchamiane w chmurze, ma liczne zalety. Przede wszystkim, ponieważ nie ma potrzeby przesyłania dużych ilości danych na zdalny serwer, nie występują wiążące się z tym znaczne opóźnienia. Dzięki temu technika EML sprawdza się w aplikacjach czasu rzeczywistego, przykładowo w przemyśle, w sterowaniu procesami i predykcyjnym utrzymaniu ruchu czy w rolnictwie precyzyjnym, w zdalnym monitorowaniu stanu upraw.
Uruchamiając algorytmy ML na energooszczędnych mikrokontrolerach, ogranicza się też nadmierne zużycie energii, a zatem i znaczący ślad węglowy sztucznej inteligencji, uważany za jedną z jej ważniejszych wad. Mniejsze zużycie energii jest ponadto korzystne dla wydłużenia czasu pracy na baterii. To przyczynia się do upowszechniania się aplikacji uczenia maszynowego w urządzeniach mobilnych.
Eliminując konieczność przesyłania surowych danych do serwerów brzegowych i tych w chmurze, zmniejsza się wymagania co do przepustowości i oszczędza zasoby sieciowe. Dzięki temu, że dane nie są przesyłane do chmury ani nie są w niej przechowywane, mniejsze jest prawdopodobieństwo ich naruszeń i wycieków. To jest kluczowe szczególnie w przypadku aplikacji, które przetwarzają informacje wrażliwe, jak na przykład dane osobowe, dotyczące własności intelektualnej czy tajemnic organizacji.
Trzeba jednocześnie podkreślić, że nie należy postrzegać EML jako zamiennika dla uruchamiania algorytmów sztucznej inteligencji w chmurze. Stanowi ono raczej uzupełnienie i zapewnia wartość dodaną w postaci możliwości realizacji zadań w czasie rzeczywistym i poprawienia bezpieczeństwa danych.
TinyML
Jak pisaliśmy wyżej, TinyML definiuje się jako dziedzinę sztucznej inteligencji, w której modele są wykonywane w systemach wbudowanych w mikrokontrolerach, procesorach sygnałowych i innych specjalizowanych układach scalonych. Aplikacje TinyML muszą spełniać określone warunki.
Pierwszym jest możliwość uruchomienia na mikrokontrolerach o ograniczonym poborze mocy w urządzeniach zasilanych bateryjnie przez możliwie długi czas bez ładowania i bez wymiany baterii. Przykładem ostatnich są węzły sieci Internetu Rzeczy. Przyjmuje się, że pobór mocy powinien być rzędu miliwatów albo mikrowatów. Ponadto aplikacje TinyML powinny implementować algorytmy uczenia maszynowego na brzegu (edge computing), to znaczy nie mogą wymagać przesyłania ani wymiany danych z chmurą ani z serwerem. Ewentualna komunikacja ze zdalnymi zasobami może jedynie służyć przekazywaniu wniosków do chmury/ serwera, powinna jednak pozostawać bez wpływu na działanie algorytmu uczenia maszynowego i realizowane przez niego zadanie. Dzięki temu jakość łącza internetowego nie ma dla jego wydajności ani rezultatów znaczenia.
Ważne też, żeby model ML zajmował w pamięci jak najmniej miejsca, typowo maksymalnie kilka kilobajtów i realizował określone zadanie. Takimi są na przykład rozpoznawanie słów kluczowych, identyfikacja osób i obiektów czy wyciąganie wniosków na postawie danych pomiarowych z czujnika. Model musi być również łatwo przenoszalny do dowolnego mikrokontrolera, procesora sygnałowego lub innego mikroprocesora.
TensorFlow Lite
Tytułowa aplikacja to najpopularniejsza platforma dedykowana TinyML. TensorFlow Lite (TF Lite) to uproszczona wersja frameworku TensorFlow, zaprojektowana pod kątem wdrażania algorytmów uczenia maszynowego w systemach wbudowanych z wykorzystaniem zoptymalizowanych bibliotek i środowisk wykonawczych. Konwertując modele do wersji o zmniejszonym rozmiarze i złożoności, TF Lite zapewnia, że są gotowe do uruchomienia w systemach o ograniczonych zasobach. Oprócz sieci neuronowych obsługuje też różne inne algorytmy uczenia maszynowego, umożliwiając wybór najlepszego modelu dla konkretnego przypadku użycia.
Oprócz TensorFlow Lite pojawiło się także kilka podobnych bibliotek i frameworków. Przykładem jest Edge Impulse, platforma internetowa, która upraszcza proces gromadzenia danych, tworzenia modeli szkoleniowych i generowania osadzonego kodu. uTensor to lekki framework zoptymalizowany pod kątem procesorów ARM. Micro TVM to projekt Apache, który z kolei umożliwia uruchamianie modeli Apache TVM na urządzeniach IoT typu bare-metal bez konieczności instalowania systemu operacyjnego.
TinyML w praktyce
W praktyce wdrożenie modelu ML w systemie wbudowanym rozpoczyna się od tego, że interfejs mikrokontrolera przechwytuje dane z czujników jak mikrofony, kamery lub sensory środowiskowe. Są one wykorzystywane do trenowania modelu uczenia maszynowego w chmurze przed jego wysłaniem do mikrokontrolera. Szkolenie ma zwykle charakter wsadowy w trybie offline. Dane do trenowania dobiera się w zależności od zastosowania. Na przykład, jeżeli model wymaga szkolenia w zakresie rozpoznawania słów kluczowych, jest projektowany pod kątem przetwarzania ciągłego strumienia audio z mikrofonu. Decyzje w zakresie wyboru zbioru danych i przebiegu operacji trenowania (m.in. zadań normalizacji, regularyzacji) są podejmowane w chmurze.
Wyszkolony model konwertuje się do formatu kompatybilnego z mikrokontrolerem i zmniejsza się jego rozmiar. Potem przesyła się go do systemu wbudowanego. Zwykle nie jest więcej poddawany treningowi, a jedynie operuje na danych z czujników i innych urządzeń wejściowych. Prawidłowe szkolenie warunkuje to, jak długo model będzie przydatny – jego trafność zależy głównie od właściwego doboru danych i realizacji operacji ich normalizacji oraz regularyzacji.
Wybierając model do wdrożenia w konkretnym systemie wbudowanym, należy wziąć pod uwagę kilka kwestii. Taką jest ocena jego wydajności i skomplikowania w porównaniu z dostępnymi zasobami mikrokontrolera. Ważna jest też kompatybilność modelu z danym mikrokontrolerem i to, jakiej dokładności od niego oczekujemy.
Monika Jaworowska