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