Sztuczna inteligencja (AI) może sprawić, że systemy wbudowane dla przemysłowego Internetu rzeczy (IIoT) będą znacznie bardziej responsywne i niezawodne. Użytkownicy już teraz wykorzystują tę technologię do monitorowania stanu maszyn i określania, czy awaria jest nieuchronna, a także do planowania rutynowych prac konserwacyjnych w bardziej kosztowo efektywny sposób. Jak wdrażać algorytmy sztucznej inteligencji?
— artykuł firmowy—
Ważna decyzja dotycząca wdrażania technologii sztucznej inteligencji w systemach wbudowanych polega na określeniu, gdzie odbywa się większość tego przetwarzania danych. Algorytmy sztucznej inteligencji różnią się znacznie pod względem wydajności obliczeniowej, której wymagają, co będzie miało duży wpływ na to, co jest wymagane do przetwarzania algorytmu i gdzie to przetwarzanie jest wykonywane. Istnieją trzy wyraźne podejścia dla projektantów systemów opracowujących wbudowane systemy oparte na sztucznej inteligencji, w tym korzystanie z usługi sztucznej inteligencji opartej na chmurze, wdrażanie systemu z wbudowaną sztuczną inteligencją lub tworzenie własnych algorytmów, zazwyczaj opierając się na oprogramowaniu typu open source.
Korzystanie z usługi opartej na chmurze
Architektura głębokich sieci neuronowych (DNN) jest przykładem algorytmu, który jest szczególnie intensywnie obliczeniowy, szczególnie w fazie uczenia, gdzie za każdym razem, gdy model musi zostać zaktualizowany, potrzebne są miliardy obliczeń zmiennoprzecinkowych. Ze względu na duże zapotrzebowanie na DNN, typowym podejściem jest wysyłanie danych do chmury w celu zdalnego przetworzenia. Przetwarzanie w chmurze jest już szeroko stosowane w urządzeniach konsumenckich, takich jak inteligentne głośniki. Urządzenia obsługujące sztuczną inteligencję w sterowaniu przemysłowym mogą podobnie wykorzystać to zdalne przetwarzanie, a także narzędzia i struktury stworzone do pracy z usługami w chmurze, z których wiele jest udostępnianych w formie open source.
Popularnym przykładem sztucznej inteligencji opartej na chmurze jest TensorFlow od Google. Zapewnia to wiele poziomów abstrakcji, aby umożliwić korzystanie z nich inżynierom doświadczonym w tworzeniu algorytmów sztucznej inteligencji, a także tym, którzy dopiero zaczynają. Interfejs API Keras, który stanowi część struktury TensorFlow, został zaprojektowany w celu ułatwienia eksploracji technik uczenia maszynowego oraz uruchamiania i działania aplikacji.
Wadą przetwarzania w chmurze jest jednak przepustowość komunikacji wymagana do jego obsługi. Niezawodne połączenie internetowe jest niezbędne do utrzymania usługi i warto zauważyć, że wiele konsumenckich aplikacji chmury AI opiera się na połączeniach szerokopasmowych. Urządzenia w fabryce mogą nie mieć dostępu do szybkości transmisji danych wymaganych do aktualizacji zdalnego modelu AI w czasie rzeczywistym.
Wykonując więcej przetwarzania lokalnie, możliwe jest zmniejszenie wymagań dotyczących przepustowości, czasami radykalnie. W przypadku wielu zastosowań przemysłowych ilość danych, które muszą zostać przesłane do zdalnej lokalizacji, można zmniejszyć, zwracając uwagę na zawartość. W aplikacji monitorującej zmienne środowiskowe wiele z nich nie zmienia się przez długi czas. W modelu istotne są zmiany powyżej lub poniżej określonych progów. Nawet jeśli czujnik może potrzebować analizować dane wejściowe czujnika milisekunda po milisekundzie, częstotliwość aktualizacji dla serwera w chmurze może być rzędu kilku aktualizacji na sekundę lub nawet rzadziej.
Budowanie oprogramowania sztucznej inteligencji AI
W przypadku bardziej złożonych form danych, takich jak audio lub wideo, wymagany będzie większy stopień wstępnego przetwarzania. Przetwarzanie obrazu przed przekazaniem danych wyjściowych do modelu AI (algorytmy sztucznej inteligencji) może nie tylko zaoszczędzić na przepustowości komunikacji, ale także poprawić ogólną wydajność systemu. Na przykład odszumianie przed kompresją często poprawia wydajność algorytmów kompresji. Jest to szczególnie istotne w przypadku technik kompresji stratnej, które są wrażliwe na sygnały o wysokiej częstotliwości. Wykrywanie krawędzi może być używane z segmentacją obrazu, aby skupić model tylko na obiektach zainteresowania. Zmniejsza to ilość nieistotnych danych, które należy wprowadzić do modelu zarówno podczas uczenia, jak i wnioskowania.
Chociaż przetwarzanie obrazów to złożona dziedzina, w wielu przypadkach programiści mogą przetwarzać algorytmy lokalnie, korzystając z łatwo dostępnych bibliotek. Eliminuje to konieczność korzystania z połączeń internetowych o dużej przepustowości i może zmniejszyć opóźnienia. Popularnym przykładem jest biblioteka OpenCV wizji komputerowej typu open source, z której wiele zespołów korzysta do wstępnego przetwarzania danych dla modeli sztucznej inteligencji. Napisany w C ++ dla wysokiej wydajności, programiści mogą wywoływać go z kodu C++, Java, Python i Matlab, wspierając łatwe prototypowanie przed przeniesieniem algorytmów do osadzonego celu.
Wykorzystując OpenCV i przetwarzając dane lokalnie przez algorytmy sztucznej inteligencji, integratorzy eliminują również zagrożenia bezpieczeństwa związane z przesyłaniem i przechowywaniem danych w chmurze. Głównym problemem użytkowników końcowych jest prywatność i bezpieczeństwo danych przekazywanych do chmury. Monitorowanie stanu i inspekcja przemysłowa to krytyczne procesy, które wymagają jak najlepszej analizy danych, ale zawierają informacje, które mogłyby być korzystne dla pozbawionych skrupułów konkurentów, gdyby je uzyskali. Inne systemy, np. te stosowane w medycynie, borykają się z dalszymi problemami dotyczącymi ochrony prywatności. Chociaż operatorzy chmury wdrożyli środki zapobiegające złamaniu danych, dane przechowywane w każdym urządzeniu (w miarę możliwości) ograniczają ryzyko ujawnienia w przypadku udanego włamania.
Oprócz obsługi przetwarzania obrazu, najnowsze wersje OpenCV zawierają bezpośrednie wsparcie dla modeli uczenia maszynowego zbudowanych przy użyciu wielu popularnych platform, w tym Caffe, PyTorch i Tensorflow. Jedną z metod, która okazała się sukcesem dla wielu użytkowników, jest użycie chmury do wstępnego rozwoju i prototypowania przed przeniesieniem modelu na wbudowaną platformę.
Wydajność jest głównym problemem w przypadku każdego modelu uczenia maszynowego, który jest przenoszony na urządzenie wbudowane. Ponieważ dane szkoleniowe mają bardzo wysokie wymagania dotyczące wydajności, jedną z opcji jest wykonanie ich na serwerach lokalnych lub w chmurze (w zależności od kwestii prywatności), z wnioskowaniem – gdy trenowany model jest zasilany danymi w czasie rzeczywistym – wykonywanym na samym urządzeniu.
Tam, gdzie wymagana jest wydajność lokalna, możliwym rozwiązaniem jest Avnet Ultra96-V2, który zawiera Xilinx Zynq UltraScale+ ZU3EG MPSoC. Połączenie rdzeni procesorów Arm z wbudowanymi maszynami przetwarzania sygnałów oraz w pełni programowalnym układem logicznym zapewnia efektywną obsługę modeli DNN oraz procedur przetwarzania obrazu. Ultra96-V2 rozszerza zakres temperatur produktu do pełnego zakresu przemysłowego, umożliwiając stosowanie go w pobliżu maszyn pracujących w trudnych warunkach. Rekonfiguracja zapewnia możliwość obsługi szkolenia lokalnie, a także wnioskowanie, gdzie aplikacja ma wymagania dotyczące wysokiej przepustowości.
Wnioskowanie wiąże się z mniejszym obciążeniem niż uczenie, a w przypadku strumieni czujników, a nie obrazów, zadowalający może być mikrokontroler obsługujący jądro DNN w oprogramowaniu. Jednak strumienie o niższej szybkości transmisji danych mogą być nadal zbyt duże, aby urządzenie o niskim poborze mocy mogło sobie z nimi poradzić. Niektóre zespoły stosują techniki optymalizacji, aby zmniejszyć liczbę obliczeń potrzebnych do wnioskowania, mimo że zwiększa to złożoność rozbudowy. Modele AI często zawierają wysoki stopień nadmiarowości. Ucinając połączenia między neuronami i zmniejszając precyzję obliczeń do 8-bitowej liczby całkowitej lub nawet niższej rozdzielczości, można uzyskać znaczne oszczędności mocy obliczeniowej.
Korzystanie z urządzenia Edge z wbudowaną sztuczną inteligencją
Alternatywną opcją jest przeniesienie wnioskowania przez algorytmy sztucznej inteligencji na lokalne urządzenie bramki. Jedna bramka mogłaby obsłużyć obowiązki wnioskowania dla wielu węzłów czujników, jeśli przepustowość na węzeł jest stosunkowo niska. Na przykład w komputerowych aplikacjach wizyjnych nie ma potrzeby wysyłania danych do wnioskowania AI, gdy narzędzie nie działa lub nie ładuje nowej części do kontroli.
Inni wiodący na rynku dostawcy, tacy jak Schneider Electric i Festo, włączyli lokalne wsparcie sztucznej inteligencji do produktów sterujących do określonych aplikacji. Pierwsza z nich oferuje aplikację Predictive Analytics do identyfikowania subtelnych zmian w zachowaniu systemu, które mają wpływ na wydajność. W 2018 r. Festo przejęło firmę Resolto, specjalistę w dziedzinie nauki o danych, a jej oprogramowanie SCRAITEC uczy się zdrowego stanu systemu, aby wykrywać każdą anomalię.
To, jakie podejście podejmie producent oryginalnego sprzętu lub integrator przy wdrażaniu sztucznej inteligencji, będzie zależało od indywidualnych okoliczności. Oprócz dostępnej mocy obliczeniowej pojawią się inne czynniki, które zachęcają do korzystania z przetwarzania w chmurze, tworzenia nowego oprogramowania i/lub integracji urządzenia brzegowego w celu zarządzania sztuczną inteligencją. Przykładowo, gdy użytkownicy próbują wykorzystać analitykę dużych zbiorów danych, mogą chcieć przenieść informacje z wielu systemów do większej bazy danych, a tym samym faworyzować korzystanie z usług w chmurze. Inni będą chcieli zapewnić wysoki poziom prywatności swoich danych. Tam, gdzie odciążanie przetwarzania jest kluczowym czynnikiem, istnieją sposoby, aby do niego podejść, począwszy od stosowania urządzeń odciążających opartych na lokalnych bramkach, a skończywszy na szerokim zastosowaniu przetwarzania w chmurze. Ważne, że istnieje wiele środowisk, które umożliwiają łatwe prototypowanie i wdrażanie w wybranej architekturze.
Cliff Ortmeyer
Globalny Dyrektor ds. Marketingu Technicznego, Farnell