[WARSZTATY] AI oraz ML w praktyce na i.MX8M Plus

Firma NXP jest jednym z liderów na rynku przemysłowych, heterogenicznych układów dla aplikacji embedded, także przeznaczonych do stosowania w systemach AI/ML. O ile programowe implementacje sieci neuronowych są obecne na rynku od wielu lat, to 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.

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).

 

Zapraszamy do udziału w warsztatach z cyklu Hands-on Linux Academy:

 

NPU – co to jest i po co?

NPU to wyspecjalizowany koprocesor AI/ML opracowany przez firmę Verisilicon, 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 jest możliwe jednoczesne monitorowanie 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).

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.

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.

Rys. 1. Stos sprzętowo-programowy, z którego mogą korzystać programiści przygotowujący aplikacje na platformy z wbudowanymi mikroprocesorami i.MX8MPlus

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.

Rys. 2. Przykładowe aplikacje systemu AI/ML z wymaganymi zakresem wydajności systemu obliczeniowego

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. Na rysunku 2 pokazano przykładowe aplikacje systemu AI/ML z wymaganymi 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: GPU2D i GPU3D – obydwa pozwalają na obróbkę obrazów FullHD. Integralną częścią wyposażenia MPU są także oraz transceivery analogowe, służące 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.

 

Szybkie peryferia

Spektakularną domeną aplikacyjną mikroprocesorów i.MX8MPlus są ozwiązania wymagające szybkich interfejsów komunikacyjnych. Za ich pomocą do MPU można dołączyć m.in. dysk SSD lub inne urządzenie wyposażone w interfejs PCIe 3.0. Interesującym wyposażeniem jest także kompletny interfejs USB 3.0.

Obydwa interfejsy mają zintegrowane warstwy fizyczne, dzięki czemu BOM projektu jest skromny: sprowadza się do odpowiednich złącz i kondensatorów separujących.

 

Od teorii do praktyki

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

Fot. 3. Wygląd zestawu SpaceSOM-8Mplus i SpaceCB-8Mplus-ADV

Zestaw umożliwia zweryfikowanie wszystkich cech i możliwości mikroprocesora i.MX8MPlus. Płytę bazową wyposażono w trzy interfejsy graficzne: HDMI, MIPI-DSI oraz LVDS. Dodatkowe interfejsy komunikacyjne: dwa MIPI-CSI, dwa kanały ethernetowe 1Gb/s, złącza interfejsów USB3.0 i USB-C oraz kodek audio. Standardowym wyposązeniem jest także 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 (JTAG). DO celów diagnostycznych służy także konwerter UART/USB, spełniający rolę interfejsu terminala.

Moduł SpaceSOM-8Mplus został zaprojektowany w formacie mechanicznym SODIM260. Mikroprocesor zainstalowany w module może współpracować z pamięcią RAM typu LPDDR4 (1 do 4 GB) i Flash eMMC (do 32GB). Wyposązeniem modułu jest także dwuzakresowy moduł radiowy WiFi 2,4/5GHz firmy Murata. Standardowym wyposażeniem modułu Space SOM-8Mplus jest wyspecjalizowany, wielokanałowy układ zasilający PMIC. Jego pracą może zarządzać system operacyjny, minimalizując straty energii w strukturach półprzewodnikowych elementów modułu.

Domyślnym systemem operacyjnym rekomendowanym przez SoMLabs dla modułu SpaceSOM-8MPlus – także dla aplikacji AI/ML – jest Linux (w wersji Yocto Project). Jego natywną wersję producent udostępnił na githubie. Projektantów systemów multimedialnych zainteresuje zapewne także możliwość użycia Androida jako systemu operacyjnego.

O autorze