Počítačové neuronové sítě se už podle svého názvu skládají z hromady logických neuronů, které napodobují ty biologické a provádějí relativně primitivní rozhodování. Síla neuronové sítě pak spočívá v tom, že má takových neuronů poměrně velké množství a může je organizovat do posloupnosti vrstev, z nichž každá provádí něco jiného.
Dejme tomu, že by měla jedna z vrstev za úkol detekovat světlé pixely. Když bychom tedy takové síti předložili třeba vaši fotografii z dovolené, k neuronům naší vrstvy by postupně docestovaly všechny pixely snímku. Každý z matice neuronů by se věnoval jednomu z nich a podle hodnoty kanálů R, G a B a svého vnitřního rozhodovacího mechanizmu by určil, který z neuronů další vrstvy aktivuje.
Neuronová síť a její vstupní, skryté/vnitřní a výstupní vrstvy neuronů. Na vstupu mohou být třeba pixely obrázku a na výstupu pak objekty, které s různou pravděpodobností síť v datech vidí. Vnitřní vrstvy provádějí samotnou analýzu. Foto: Glosser.ca, CC BY-SA 3.0
Když by byl pixel dostatečně světlý, aktivoval by neuron X, pokud by byl naopak příliš tmavý, aktivoval by neuron Y. V každém případě, postupným průchodem pixelů neuronovou sítí by na nás nakonec ta nejspodnější vrstva vyplivla informaci, že na snímku vidí třeba psa.
Tomuto procesu se říká inference a doplňuje samotné strojové učení neuronové sítě. Zatímco během strojového učení nastavujeme rozhodovací mechanizmy jednotlivých neuronů sítě, během inference tuto získanou znalost používáme v praxi.
Klasický CPU procesor je žalostně pomalý
Má to jeden háček. Biologický mozek je perfektní paralelní stroj, kdy se v jeden okamžik může rozhodovat neuvěřitelné množství neuronů a aktivovat zase ty další, jenže klasický procesor vašeho počítače je uzpůsoben k poněkud odlišné práci. Je tu od toho, aby spustil webový prohlížeč, Týden Živě a tu tam zobrazil BSOD ve vysokém rozlišení.
CPU procesor je skvělý univerzální mikropočítač, ale pro neuronové sítě se nehodí
Ne snad, že by na klasických procesorech CPU byla práce s neuronovými sítěmi nemožná, ale je prostě pomalá a neefektivní. CPU dnes naštěstí není jediným procesorem počítače, a tak se dají algoritmy A.I. i o několik řádů zrychlit pomocí specializovaných čipů, které jsou díky hromadě jader přímo navržené ke zpracovávání ohromného množství primitivních paralelních úloh.
CPU je tramvaj, GPU pražské metro
Už jste o nich možná slyšeli, říká se jim totiž GPU – Graphics Processing Unit – a inženýři je původně navrhli k co nejrealističtějšímu zobrazení explodujícího ruského tanku třeba v herní sérii Battlefield.
GPU sice díky důrazu na paralelizmus dokáže zrychlit strojové učení a inferenci až o několik řádů, jenže to nebude zadarmo. Výkonné grafické karty jsou drahé, velké a hladovější než Jakub Čížek v sedm večer.
Moderní GPU je naopak specializovaný mikropočítač pro specifické matematické výpočty na desítkách a stovkách logických jader. Pro neuronové sítě je mnohem vhodnější.
Stručně řečeno, pokud je výkonné CPU tramvaj, pak je GPU celé pražské metro. Oba vás dopraví do cíle a během odpolední špičky snad i rychleji než osobní vůz, jenže nedojedou kamkoliv a jejich energetické nároky jsou ohromné.
Proto se s rozvojem technologií z ranku A.I. před několika málo lety na scéně objevily i ASIC akcelerátory. Jedná se o specializované čipy vyrobené na míru nějakému konkrétnímu účelu. V našem případě pro co nejrychlejší a energeticky nejefektivnější zpracovávání neuronové sítě.
TPU je vysokorychlostní maglev
Tím nejznámějším je dnes TPU – Tensor Processing Unit, ačkoliv drobné akcelerátory se pomalu objevují třeba i v mobilních čipsetech, chytrých dronech nebo kamerách. TPU vyrobil Google a dnes je už nabízí ve svých datových centrech jako komerční službu svého ekosystému Google Cloud.
Výpočetní karta se čtyřmi TPU v3. Souhrnný výpočetní výkon dosahuje 420 TFLOPS.
TPU třetí generace dosahuje výpočetního výkonu okolo 100 TFLOPS a Google z nich skládá speciální karty. Každá z nich má čtyři TPU a souhrnný výkon 420 TFLOPS. A když z těchto výpočetních karet složíte celou rackovou skříň – TPU pod, získáte A.I. superpočítač s výkonem přes 100 PFLOPS.
Jen připomenu, že současný nejvýkonnější superpočítačový cluster světa – americký Summit – disponuje ověřeným výkonem 148,6 PFLOPS a zabere celou halu.
Pod, tedy racková skříň plná karet s TPU v3. Souhrnný výkon dosahuje 100+ PFLOPS.
Na stranu druhou, podobné srovnání není úplně fér, Summit totiž tvoří 2,5 milionů univerzálních CPU jader IBM POWER9, na kterých běží Red Hat Enterprise Linux. TPU jsou vhodné jen ke strojovému učení.
Edge TPU, tedy TPU do dámské kabelky
Abychom dodrželi naše srovnání s pražskou hromadnou dopravou, jeden TPU pod bude – dejme tomu – vysokorychlostní maglev, který vás dopraví z Můstku na Letnou za 15 sekund. To je sice skvělé, ani maglevem ale nedojedete na libovolné místo a doma na zahradě si jej asi také nepostavíte.
První zveřejněný prototyp čipu Edge TPU z loňského léta
Krátce poté, co se Google pochlubil první generací TPU, tedy začal usilovně vyvíjet i jeho zjednodušenou, miniaturní a hlavně energeticky velmi úspornou podobu. Poprvé se s ní pochlubil loni uprostřed prázdnin a dal ji jméno Edge TPU.
Slovíčkem edge v informatice zpravidla označujeme elektroniku, která nepracuje kdesi v datacentru, ale v přední linii – doslova na hraně. Může to být bezpečnostní kamera na stěně vašeho domu, může to být nějaké čidlo internetu věcí, anebo třeba populární Raspberry Pi.
Coral: Raspberry Pi na steroidech s Edge TPU
Přesně pro tento typ elektroniky Google navrhl i Edge TPU, který je určený pro inferenci zjednodušených neuronových sítí vytvořených pomocí jeho technologie Tensorflow Lite. Drobný čip o rozměrech několika milimetrů se pyšní výkonem 4 TOPS, zpracuje tedy až 4 biliony operací za sekundu.
Prototypovací deska Google Coral Dev Board a Coral USB Accelerator s čipem Edge TPU. Další fotky najdete v galerii.
Ještě podstatnější je ale to, že má skvělou energetickou bilanci. K dosažení 1 TOPS totiž potřebuje pouze 0,5 W elektrické energie. Celkový odběr v plné zátěži je tedy 2 W! Díky tomu jej mohl Google namontovat společně s armovým mikroprocesorem na prototypovací desku s rozměry populárního Raspberry Pi.
Jmenuje se Google Coral Dev Board a společně s USB akcelerátorem, uvnitř kterého je také Edge TPU a zrychlí tak jakýkoliv počítač nebo i zmíněné Raspberry Pi, nám oba před pár dny dorazily do redakce.
Hardwarová specifikace Google Coral
- CPU: NXP i.MX 8M SoC (Cortex-A53, Cortex-M4F)
- NPU: Google Edge TPU
- GPU: GC7000 Lite (dekódování 4K při 60 fps)
- RAM: 1 GB LPDDR4
- Úložiště: 8 GB eMMC, microSD
- Operační systém: Mendel Linux (Debian)
- Konektivita: 1Gb ethernet, Wi-Fi 5 (802.11ac), Bluetooth 4.2
- USB: 1× USB-A 3.0, USB-C OTG, microUSB 2.0 sériová linka
- Obraz: HDMI 2.0a, FFC konektor pro DSI displej
- Periferie: 40pinová lišta (3,3V GPIO, I2C, SPI, PWM, UART), FFC konektor pro CSI2 kameru, 3,5mm audio jack, 2,54mm 4pin svorkovnice pro reproduktor
- Napájení: USB-C (5V, 2A a více dle připojených periferií)
- Cena: 150 dolarů (bez cestovních/celních poplatků)
Málem bych zapomněl na srovnání s pražskou dopravou. Edge TPU není ani tramvaj, ani metro a není to ani maglev. Je to elektrický skútr, kterým prosvištíte odpolední zácpou ze všech nejrychleji a v pořizovacích nákladech za dopravní prostředek samotný také zdaleka nejlevněji.
V rychlosti A.I. porazí i desktop
Na podrobné testy a představení je ještě brzy, musím si s nimi totiž náležitě pohrát a hlavně je srovnat s jejich přímým konkurentem od Nvidie – prototypovací deskou Jetson Nano s čipsetem Tegra. Dnes si tedy jen ukážeme, jak Coral vypadá, jak je papírově rychlý a jak v praxi vypadají některé optické detekční neuronové sítě pro hledání objektů ve fotografii nebo videu.
V některém z podzimních pokračování našeho seriálu o programování elektroniky si pak ukážeme jednoduché skriptování Coralu a jeho akcelerátoru Edge TPU na několika málo řádcích jazyka Python.
Srovnávací test inference Nvidia Jetson Nano a Coral Dev Board podle Nvidie. Kde šlo spolehlivě oba identické testy vyzkoušet na obou deskách, tam Coral zvítězil i podle samotné Nvidie.
Takže jak je Edge TPU vlastně rychlý? Stručně řečeno, aktuálně je z veškeré dostupné konkurence této kategorie zdaleka nejrychlejší. V testech komunity zdolává jak speciální USB akcelerátor Intel Neural Compute Stick 2 s čipem Movidius Myriad X pro počítačové vidění, tak už zmíněný Nvidia Jetson Nano, o jehož A.I. výkon se zase stará 128jádrové GPU architektury Maxwell.
Vítězství Edge TPU v rychlosti zpravování některých neuronových sítí na svém webu v přímém srovnání potvrdila v minulosti jak Nvidia, tak další, přičemž Google samotný si troufl i na srovnání s desktopovým/serverovým procesorem.
Srovnání výkonu desktopu, Raspbbery Pi a Coralu podle Googlu
Když se podíváte na odkazovanou tabulku výše, uvidíte rychlosti inference pomocí několika vizuálních neuronových sítí na čtyřech různých počítačích:
- Na mašině s procesorem Intel Xeon E5-1650 (3,6 GHz)
- Na stejné mašině s USB akcelerátorem Google Coral
- Na Raspberry Pi 3 Model B+ (Cortex-A53 při 1,5 GHz)
- A konečně na prototypovací desce Google Coral Dev Board
V tabulce vidíte délku inference v milisekundách, tedy jak dlouho na daném železe trvalo třeba rozpoznání koťátka na vstupní fotografii. Jak vidno, s výjimkou první sítě DeepLab, která vyžaduje i klasické CPU (a Xeon je opravdu svižnější než armový SoC), ve všech ostatních případech s přehledem zvítězil titěrný akcelerátor Edge TPU na deskách Coral.
Detekce objektů v obrazu rychlostí 300 fps:
Zatímco Google Coral Dev Board analyzoval obraz u některých dalších sítí za necelé 3 milisekundy, desktop se serverovým procesorem Xeon (byť starším) k tomu samému potřeboval necelých 50 milisekund! Byl zhruba dvacetkrát pomalejší. Stačilo však k počítači skrze USB 3 připojit akcelerátor Coral a doba inference klesla opět na jednotky milisekund.
K desce Coral lze připojit skrze konektor FFC CSI2 kameru. Google dodává vlastní přímo pro Coral s pětimegapixelovým snímacím čipem OV5645. Postavil jsem si tedy základnu pro testování rozpoznávání objektů v obrazu.
Zástupce embedded elektroniky s procesorem stejné kategorie a se stejným taktem jako má Raspberry Pi 3 Model B+ (čtyřjádrový ARM Cortex-A53 @ 1,5 GHz) pak stejnou úlohu vypočítal za 150 až několik set milisekund a byl tedy až o dva řády pomalejší než Edge TPU. Google Coral si přitom vystačí se stejným zdrojem napájení jako zmíněné Raspberry Pi (5V při 2A).
Podobá se Raspberry Pi
I když se do vlastních testů a srovnání této nové kategorie prototypovacích destiček pro všemožné makery vrhnu opravdu až v průběhu podzimu, pojďme se přesto alespoň v rychlosti podívat, jak se vlastně s deskou Google Coral pracuje.
Google Coral Dev Board, Nvidia Jetson Nano a Raspberry Pi 3 Model B se svými kamerami. Desky jsou zleva seřazené podle výkonu a připravené pro počítačové vidění.
Stručná odpověď, pokud už dá číst nechcete: Vlastně docela podobně jako s Raspberry Pi nebo Nvidia Jetson Nano. V nitru totiž běží operační systém Mendel Linux, což není nic jiného než kosmeticky upravený Debian, ve kterém jsou doinstalované všechny potřebné nástroje včetně prostředí TensorFlow Lite pro samotnou inferenci neuronových sítí ideálně v jazyku Python.
Coral Dev Board má identické rozměry a orientaci 40pinového pole jako Raspberry Pi
Coral Dev Board má stejně jako Raspberry Pi 40pinové pole pro elektrokutily všeho druhu, kteří na něm mohou používat GPIO, PWM, sériovou linku nebo sběrnice I2C a SPI. Zároveň má deska jedno velké USB 3, USB-C v režimu OTG, microUSB s vyvedenou sériovou linkou a také HDMI.
Na plnohodnotný grafický desktop ale zapomeňte. Minimalistické prostředí nabízí jen okno linuxového terminálu, a spíše než pro práci slouží k přímému zobrazování videovýstupu z neuronových sítí v kioskovém režimu.
Operační systém Mendel (tedy Debian)
Druhým citelným rozdílem oproti Raspberry Pi a Jetson Nano je vlastní 8GB eMMC úložiště pro systém, i když na spodní straně nechybí ani microSD slot, ze kterého by měla deska umět nastartovat OS. Ten se ale primárně instaluje právě do flashové paměti, která je v tovární podobě prázdná.
Jednoduchý grafický desktop systému Mendel
Po prvním rozbalení desky z krabičky na ni tedy najdete jen zavaděč – bootloader, který musíte skrze microUSB kabel a sériovou linku přepnout do flashovacího režimu a skrze druhý USB-C OTG a program fastboot, který znají všichni fanoušci flashování telefonů s Androidem, do eMMC paměti konečně dostat celou linuxovou distribuci Mendel.
K úvodnímu nahrání firmwaru s Mendel Linuxem je třeba macOS nebo právě Linux, k flashování jsem proto použil Raspberry Pi, které jsem z vlastního laptopu ovládal skrze vzdálený terminál SSH.
Úvodní setup je sice něco složitější, rychlá flashová paměť ale na oplátku zajistí svižný start systému a hlavně rychlé nahrávání modelu neuronové sítě i inferovaných dat do paměti RAM.
Je to opravdu ďábelsky rychlé
Jakmile Mendel nastartuje, můžete jej ovládat buď skrze zmíněné jednoduché grafické rozhraní, anebo ideálně po připojení k Wi-Fi nebo ethernetu skrze vzdálené SSH spojení. Inženýři Googlu vytušili, že oblast A.I. bude pro většinu začátečníků poměrně komplikovaná a těžko uchopitelná, a tak vedle všeho potřebného softwaru nezapomněli ani na hromadu příkladů, které můžete okamžitě spustit a sledovat, co neuronové sítě na akcelerátoru Edge TPU skutečně dokážou.
A zde se už potvrzují čísla z tabulky výše. Relativně jednodušší rozpoznání objektu v obrazu (bez zjištění rozměrů a souřadnic) trvá u neuronových sítí ImageNet opravdu jednotky milisekund. Obraz videa s obnovovací frekvencí okolo typických 30 fps by tedy mohlo v reálném čase analyzovat i několik neuronových sítí naráz, aniž by došlo k jakémukoliv zpoždění.
Google Coral a detekce vozidel ve videu z dálnice:
A stejně ohromující byla i rychlost mnohem komplikovanější sítě, která nejen že v obrazu nalézá objekty, ale také zjistí jejich pixelové rozměry a souřadnice, takže program okolo nich může pro názornost ještě nakreslit rámeček.
Výkon Edge TPU tak můžeme otestovat třeba v předinstalovaném programu, který v reálném čase analyzuje smyčku videa natočeného z mostu nad dálnicí. Akcelerátor pak dokáže v obrazu během několika milisekund identifikovat necelou dvacítku vozů v obou směrech. A co víc, zvládne zároveň rozlišit různé typy automobilů.
Edge TPU je k dispozici i jako Coral USB Accelerator. V takovém případě může fungovat jako externí NPU procesor třeba pro Raspberry Pi.
Kdyby byl tedy drobný čip součástí třeba dopravní kamery, dokázal by automaticky detekovat vozy a třeba porovnávat jejich registrační značky s databází hledaných vozidel. Teď mi možná namítnete, že podobné systémy přece již existují. Ano, samozřejmě, ale jedná se o specializovaná a velmi drahá řešení na míru.
Miniaturní čip Edge TPU na deskách Coral a princip fungování neuronových sítí všechny tyto technologické výdobytky zpřístupňuje široké mase za 150 dolarů v případě Coral Dev Board a za 75 dolarů v případě Coral USB Accelerator.
A to jsme přitom stále na začátku jedné velké technologické éry.