Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak karty PCIe z FPGA wspomagają systemy AI i ML

ghost666 11 Cze 2020 15:04 1248 3
  • Jak karty PCIe z FPGA wspomagają systemy AI i ML
    BittWare, spółka zależna firmy Molex, zaprezentowała niedawno nowe karty PCIe z układami FPGA, dedykowane do pracy w systemach akceleracji algorytmów uczenia maszynowego. BittWare 520N oferują istotne zalety w porównaniu z przetwarzaniem na CPU czy GPU, o czym opowiada dokładniej poniższy artykuł. Karty te znajdują się obecnie w dystrybucji firmy Arrow, która oprócz samych modułów oferuje również szkolenia z ich wykorzystania, noty aplikacyjne i program, w ramach którego wypożyczać można karty do testów.

    Uczenie maszynowe (ML) jest szczególnym wdrożeniem technologii sztucznej inteligencji (AI), najczęściej działa z wykorzystaniem programowalnych macierzy bramkowych (FPGA). Technologia ta cieszy się znaczącym wzrostem zainteresowania w ostatnich latach. Zapotrzebowanie na ML wynika głównie z zainteresowaia biznesowego, które jednocześnie naciska na tworzenie systemów znajdujących się na krawędzi chmury, to znaczy w systemach embedded, dzięki czemu nie muszą one polegać na posiadaniu szerokopasmowego połączenia internetowego lub dostępu do wysokiej klasy chmury do realizacji tych algorytmów.

    Kluczową zaletą systemów wnioskowania opartych na ML działających lokalnie na układach FPGA, w których znajdują się również czujniki, jest to, że topologia ta oferuje wyjątkowo małe opóźnienia. Zdolność do szybkiego działania na danych przetwarzanych lokalnie (w porównaniu do wysyłania danych do chmury w celu ich przetworzenia i oczekiwanie na wyniki) ma kluczowe znaczenie w aplikacjach, w których nawet milisekundy mogą mieć znaczenie, takich jak wykrywanie kolizji w przypadku samochodów autonomicznych. Inne obszary zastosowań, w których sensowne jest przybliżenie obliczeń tak blisko fizycznie, jak to możliwe dla użytkownika końcowego, to drony, roboty przemysłowe i automatyka budynkowa.

    BittWare nieustannie opracowuje rozwiązania, które w unikalny sposób rozwiązują problemy jej klientów i pozwalają im osiągnąć sukces rynkowy, zmniejszyć ryzyko związane z dojrzałością technologii i minimalizują czas do wprowadzenia systemu na rynek. Obecnie spółka skupiła się na wprowadzaniu kart FPGA, które implementują stos ML. Obecny model akceleratora - BittWare 520N - wykorzystuje układ programowalny Intel Stratix 10.

    Dlaczego warto wybrać FPGA zamiast CPU lub GPU?

    Po pierwsze, koszty układów FPGA stale maleją wraz ze wzrostem popytu. Układy FPGA były historycznie traktowane jako tylko platformy testowe dla systemów ML, przed implementacją systemów w krzemie w postaci układu scalonego specyficznego dla aplikacji (ASIC). Jednak obecnie układy FPGA są coraz częściej postrzegane jako ważne w innych przypadkach użycia, z których najważniejszymi są aplikacje ML. Możliwość rekonfiguracji układu FPGA jest postrzegana jako ogromny plus, ponieważ biblioteki oprogramowania ML wciąż powstają i szybko ewoluują. Możliwość ciągłego ulepszania sprzętu w czasie jest bardzo atrakcyjna zarówno dla projektantów, jak i użytkowników końcowych. Układy FPGA są również szybkie obliczeniowo. Ponadto narzędzia programistyczne do programowania układów FPGA stają się bardziej dostępne.

    Jak karty PCIe z FPGA wspomagają systemy AI i ML
    Sieć YOLOv3 nie tylko identyfikuje obiekty,
    ale także umieszcza ramki wokół obiektów,
    co jest przydatne w aplikacjach wymagających
    śledzenia obiektów
    Wdrażanie oprogramowania w sprzęcie

    Podzbiorem technologii ML są sieci neuronowe, które luźno naśladują sposób działania neuronów w mózgu biologicznym. BittWare wykorzystało najnowocześniejszy system detekcji obiektów w czasie rzeczywistym YOLOv3, który jest częścią napisanej w języku C otwartej biblioteki sieci neuronowej. Aby zaimplementować kod YOLOv3 w układzie FPGA, który jest sercem karty akceleratora BittWare 520N, zespół wykorzystał strukturę OpenCL. Korzyści z używania OpenCL nad implementacją YOLOv3 w języku opisu sprzętu (HDL), takim jak Verilog czy VHDL, są trzy. Po pierwsze, przejście do funkcjonalnego prototypu jest znacznie szybsze, ponieważ programiści mogą korzystać z bardziej znanego sobie łańcucha narzędzi programistycznych i przepływu pracy. Po drugie, znacznie szybsze jest przenoszenie aplikacji OpenCL na różne układy FPGA w porównaniu do czasu, jaki w innym przypadku zajęłoby tworzenie bibliotek ML na wiele platform sprzętowych za pomocą HDLa. Wreszcie, projektowanie iteracyjne jest znacznie łatwiejsze, ponieważ wypuszczane są nowsze wersje bibliotek ML, dzięki czemu programiści mogą cały czas używać najaktualniejszych narzędzi.

    Jak karty PCIe z FPGA wspomagają systemy AI i ML
    Wykres wydajności przedstawiający przyspieszenie
    BWWN dla karty FPGA 520N w porównaniu do
    wcześniejszej karty FPGA i procesora
    Optymalizacja sieci neuronowych dla układów FPGA

    Jednakże FPGA nie jest rozwiązaniem idealnym. Należy zachować szczególną ostrożność na etapie projektowania i inżynierii, aby zapewnić optymalizację sieci neuronowych dla różnych zestawów danych. Istotnym problemem jest również osiągnięcie akceptowalnej równowagi między dokładnością wykrywania a zużyciem energii. Ma to zasadnicze znaczenie dla urządzeń brzegowych, które mogą być implementowane w systemach, gdzie wymagane jest minimalne zużycie energii, np. w systemach bateryjnych.

    Jednym ze sposobów osiągnięcia tej równowagi w systemie BittWare jest zastosowanie wariantu splotowej sieci neuronowej (CNN) znanej jako binarnie ważona sieć neuronowa (BWNN). Pomyśl o konwolucji przetwarzania CNN jako dwuwymiarowej tablicy wypełnionej 32-bitowymi liczbami. Splot jest matematycznym terminem, który odnosi się do określonego zestawu operacji wykonanych na dwóch funkcjach, co skutkuje postaniem trzeciej funkcji. 32-bitowe współczynniki stanowią połowę operacji splotu, przy czym sygnały wejściowe czujnika są przechowywane w drugiej funkcji. Skutkuje to powstaniem trzeciej funkcji, zwanej mapą obiektów. Z praktycznego punktu widzenia bardzo interesujące jest to, że badania wykazały, że zastosowanie współczynników o długości 16 bitów nie ma znaczącego wpływu na dokładność działania sieci przy jednoczesnym zmniejszeniu zużycia zasobów o połowię.

    Sieć BWNN idzie jeszcze dalej i redukuje filtry wagowe do wartości jednobitowych. Ponadto eliminuje potrzebę kosztownych operacji mnożenia i ogranicza matematykę do prostego dodawania i odejmowania. Ulepszenia te mogą przełożyć się na wzrost prędkości i poprawę wydajności energetycznej. Dalsze ulepszenia wydajności zależą od dodatkowych czynników, w tym:

    * Prędkości urządzenia
    * Głębokość logiki kombinatorycznej, zastosowanej w projekcie
    * Liczby sygnałów, które są wspólne dla wielu punktów
    * Przeciążenie prowadzenia połączeń w sieci neuronowej, co powodować może przeładowanie układu
    * Przepustowość pamięci urządzenia

    Wiele z kwestii, związanych z realną implementacją sieci neuronowych w układach FPGA w akceleratorze PCIe, objaśnionych jest w internetowym seminarium dostępnym na żądanie na podstronach Arrow.com i w innej dokumentacji dostarczanej przez dystrybutora.

    Jeśli chcesz samodzielnie przetestować opisane urządzenie, to Arrow ma teraz taką możliwość. W ramach programu Arrow Test Drive możliwe jest wypożyczenie karty do testów, jak opisywaliśmy tutaj.

    Źródło: https://www.arrow.com/en/research-and-events/articles/molex-accelerating-machine-learning-with-field-programmable-gate-arrays?utm_source=elektroda

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9836 postów o ocenie 8049, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #2
    Mallecki
    Poziom 2  
    W artykule mówi się o CPU, GPU, FPGA, a porównywane są wydajności tylko między CPU a FPGA.
    Więc jakie względne szybkości może mieć GPU?
  • #3
    Bojleros
    Poziom 16  
    Swego czasu słyszałem o programowalnej logice która miała być fizycznie integrowana w cpu. Ktoś coś ?
  • #4
    ghost666
    Tłumacz Redaktor
    Bojleros napisał:
    Swego czasu słyszałem o programowalnej logice która miała być fizycznie integrowana w cpu. Ktoś coś ?


    W jakim CPU? Są ukłądy ZYNQ, które integrują w sobie CPU z FPGA