SpaceSOM-8Mplus - AI oraz ML w systemach embedded

| Technika

Firma NXP jest jednym z liderów na rynku przemysłowych heterogenicznych układów do aplikacji embedded, także przeznaczonych do stosowania w systemach AI/ML. O ile programowe implementacje sieci neuronowych są obecne na rynku od wielu lat, o tyle nowością są układy wyposażone w zintegrowane koprocesory służące do sprzętowego wspomagania obliczeń w aplikacjach AI/ML. Jedną z takich gorących nowości – heterogeniczny mikroprocesor i.MX8M Plus – przedstawiamy w artykule.

SpaceSOM-8Mplus - AI oraz ML w systemach embedded

W pierwszej połowie 2020 roku została wprowadzona na rynek przez firmę NXP nowa podrodzina mikroprocesorów nazwanych i.MX8 Plus, które jako pierwsze w ofercie tej firmy i jedne z pierwszych na rynku układów przemysłowych wyposażono w zintegrowane koprocesory Neural Processing Unit.

NPU – co to jest i po co?

NPU to wyspecjalizowany koprocesor AI/ML opracowany przez firmę Verisilicon (ex-Vivante), należący do rodziny VIP8000. Zadaniem NPU zastosowanych w i.MX8MPlus jest wydajna realizacja obliczeń charakterystycznych dla sieci neuronowych. Dzięki temu realne czasy klasyfikacji obiektów poddawanych analizie AI/ML są na tyle krótkie, że – przykładowo – jest możliwe jednoczesne monitorowanie za pomocą kamery i klasyfikowanie cech kilku poruszających się obiektów. Firma NXP podaje prędkość wykonywania obliczeń przez NPU na ok. 2,3 TOPS (trillion operation per second – bilion operacji na sekundę), co potwierdzają liczne benchmarki dostępne w Internecie (np. https://ai-benchmark. com/ranking_IoT.html). Wybrane wyniki pomiarów zestawiono w tabeli 1. Dla uświadomienia skali wartości w tabeli zestawiono wyniki mikroprocesorów i układów SoC do aplikacji wymagających niewielkiego poboru mocy (oznaczone w tabeli jako "IoT") oraz układów do aplikacji mobilnych, wśród których znalazł się jeden z mikroprocesorów z rodziny Intel Core i3. Warto w tym miejscu podkreślić, że dzięki niewielkiemu poborowi mocy przez mikroprocesor i.MX8MPlus, plasuje się on na czołowym miejscu w rankingu wartości TOPS/mW – ten parametr wyraźnie określa aplikacje przewidziane przez producenta dla tego mikroprocesora.

Koprocesory NPU zastosowane w mikroprocesorach i.MX8MPlus są przystosowane do wykonywania operacji na danych w formacie INT8, co zapewnia ich kompatybilność z najpopularniejszymi środowiskami i bibliotekami AI/ML: arm NN, ONNX Runtime, TensorFlow Lite oraz DeepViewRT.

 
Rys. 1.

W przypadku zmiennoprzecinkowych modeli sieci neuronowych konieczna jest ich kwantyzacja do postaci stałoprzecinkowej, co z jednej strony upraszcza i przyspiesza obliczenia, z drugiej może mieć wpływ na dokładność rozpoznawania obiektów.

Na rysunku 1 pokazano stos sprzętowo- programowy, z którego mogą korzystać programiści przygotowujący aplikacje na platformy z wbudowanymi mikroprocesorami i.MX8MPlus. Jak widać, NPU jest zgodny z API frameworka OpenCL 1.2 FP oraz standardu OpenVX 1.2.

Warto wspomnieć, że w procesorach rodziny i.MX8 algorytmy AI/ML z wykorzystaniem tych (i innych bibliotek i środowisk) mogą być wykonywane zarówno przez CPU, w niektórych modelach także przez GPU (tabela 2). Na rysunku 2 pokazano przykładowe aplikacje systemu AI/ML z wymaganym zakresem wydajności systemu obliczeniowego oraz zaznaczonymi zakresami wydajności obliczeniowej, jakie można osiągnąć przy implementacji algorytmów obliczeniowych w CPU, GPU i NPU.

GPU nie tylko do AI/ML

Wewnętrzne wyposażenie mikroprocesora i.MX8MPlus predestynuje go do użycia także w zaawansowanych aplikacjach graficznych. Wynika to z faktu zintegrowania w strukturze układu dwóch koprocesorów graficznych (GPU 2D i GPU 3D, obydwa pozwalają na obróbkę obrazów FullHD) oraz trzech rodzajów transceiverów analogowych, służących do dołączenia wyświetlaczy: HDMI, MIPI-DSI oraz LVDS. Rozwiązania sprzętowe zaimplementowane przez firmę NXP pozwalają korzystać z 3 wyświetlaczy niezależnie, co powoduje, że i.MX8MPlus jest wygodną platformą sprzętową do budowy efektownych urządzeń wyposażonych w kilka wyświetlaczy.

i.MX8MPlus jest układem heterogenicznym, co oznacza, że zintegrowano w nim kilka domen obliczeniowych o różnym przeznaczeniu. Są to:

  • 4 rdzenie aplikacyjne Cortex-A53
  • 1 rdzeń czasu rzeczywistego Cortex-M7
  • 1 koprocesor NPU

Szybkie peryferia

Kolejną spektakularną domeną aplikacyjną mikroprocesorów i.MX8MPlus są rozwiązania wymagające szybkich interfejsów komunikacyjnych, za pomocą których do MPU można dołączyć m.in. dysk SSD lub inne urządzenie wyposażone w interfejs PCIe 3.0 oraz szybkie peryferia z interfejsem USB 3.0. Obydwa interfejsy mają zintegrowane warstwy fizyczne, dzięki czemu liczba elementów zewnętrznych niezbędnych do ich użycia jest minimalna: sprowadza się do odpowiednich złączy i kondensatorów separujących.

 
Rys. 2.

Od teorii do praktyki

 
Rys. 3.

Możliwości NPU wbudowanego w mikroprocesor i.MX8MPlus oraz pozostałych bloków mikroprocesora najlepiej jest zweryfikować w praktyce, do czego może posłużyć zestaw ewaluacyjny opracowany i produkowany przez polską markę SoMLabs. Widok płyty bazowej SpaceCB- -8MPlus oraz modułu SpaceSOM-8MPlus z mikroprocesorem i.MX8MPlus pokazano na fotografii 3.

Zestaw umożliwia zweryfikowanie wszystkich cech i możliwości mikroprocesora i.MX8MPlus, bowiem płytę bazową wyposażono: w trzy interfejsy graficzne (HDMI, MIPI-DSI oraz LVDS), złącza dwóch interfejsów MIPI-CSI, dwa kanały ethernetowe 1 Gb/s, złącza interfejsów USB3.0 i USB-C, kodek audio oraz złącze pozwalające zamontować moduły PCIe 3.0 w formacie mechanicznym M.2 z kluczem M. Na złącza szpilkowe w rastrze 2,54 mm wyprowadzono także linie GPIO mikroprocesora, dwa interfejsy CAN (warstwy fizyczne) oraz RS485. Diagnostykę systemu ułatwią zintegrowany na płycie bazowej, licencjonowany debugger J-Link dołączony do interfejsu JTAG mikroprocesora i.MX8MPlus oraz konwerter UART/USB, który służy do dwukierunkowej komunikacji z programem terminalowym.

Moduł SpaceSOM-8Mplus został zaprojektowany w formacie mechanicznym SODIM260. Mikroprocesor zainstalowany w module może współpracować z pamięcią RAM typu LPDDR4 o pojemności od 1 do 4 GB, pamięcią Flash eMMC o pojemności do 32 GB oraz – opcjonalnie – z dwuzakresowym modułem radiowym Wi-Fi 2,4/5 GHz firmy Murata. Standardowym wyposażeniem modułu Space SOM-8MPlus jest wyspecjalizowany, wielokanałowy układ zasilający, którego pracą może zarządzać system operacyjny, minimalizując straty energii w strukturach półprzewodnikowych elementów modułu.

 
Rys. 4.

Domyślnym systemem operacyjnym rekomendowanym przez SoMLabs dla modułu SpaceSOM-8MPlus – także dla aplikacji AI/ML – jest Linux (w wersji Yocto Project), którego natywną wersję producent udostępnił na Githubie (https://github. com/somlabs). Projektantów systemów multimedialnych zainteresuje zapewne także możliwość użycia jako systemu operacyjnego Androida, który kosztem sporych wymogów co do pojemności pamięci upraszcza tworzenie urządzeń wymagających implementowania graficznych interfejsów użytkownika (GUI).

Dystrybutorem modułów produkowanych pod marką SoMLabs jest dystrybutor komponentów elektronicznych i automatyki firma Elhurt z Gdańska, www.elhurt.com.pl

 

SomLabs
www.somlabs.com