Umelá inteligencia

Peter Frasch

Data Center Systems Engineer

peter.frasch@alef.com

Umelá inteligencia (ang. Artificial Intelligence, skratka AI)  sa stáva fenoménom, s ktorým sa stretávame stále viac ... a to minimálne v médiách, v prezentáciách rôznych firiem, či organizácií. Väčšinu informácií však máme z médií na úrovni vedeckej popularizácie témy, či dokonca bulváru. Ak sa však človek hlbšie zamyslí nad AI, či sa jej chce dokonca začať venovať, tak zistí, že sa v problematike stráca. Netuší kde začať, čo si má naštudovať, akú knihu si má kúpiť, aký kurz má absolvovať, aký „programovací jazyk“ sa má naučiť, či nebodaj aký hardvér si kúpiť, dokonca nevie ani len popísať čo je a čo už nie je AI. Preto skúsim načrtnúť svoj pohľad.

Začnem citátom, ktorého autorom by mal byť Pablo Picasso: „počítače sú nepoužiteľné, lebo vedia len odpovedať na otázky, ale nevedia ich klásť“. Ak máte doma, či v rodine, malé dieťa v predškolskom veku, museli ste si všimnúť, že tá malá „organická výpočtová jednotka“ dáva veľké množstvo otázok, z ktorých ostanete občas dokonca zaskočený. Na druhej strane váš robotický vysávač, smartfón, či počítač vám otázky nedáva žiadne. Ešte aj asistenti Siri, Alexa, Cortana otázky nedávajú len tak samé od seba. Majú ich zapracované vo svojich algoritmoch, ktoré boli buď explicitne nakódované, alebo sa to naučili, kedy majú dávať aké otázky. Čiže schopnosť klásť otázky bez vonkajších podnetov považujem za jeden zo znakov vyspelosti AI. Túto schopnosť, ktorá je ľudským tvorom tak vlastná, musí mať každý systém s tzv. všeobecnou inteligenciou.

Okrem už použitých pojmov všeobecná inteligencia a AI, sa však v odbornej diskusii objavujú aj pojmy strojové učenie (ang. Machine Learning, skratka ML), hĺbkové učenie (ang. Deep Learning, skratka ML), alebo neurónová sieť. Ale aj menej známejšie pojmy ako napríklad umelá všeobecná inteligencia (Artificial General Intelligence, skratka AGI), či umelá zúžená inteligencia (Artificial Narrow Intelligence, skratka ANI). Skúsme si preto najprv poupratovať v terminológii. A to napriek tomu, že napríklad oficiálne dohodnutá definícia AI neexistuje.

V prvom rade, nie je inteligencia ako inteligencia. Čo je možné označiť za AI sa dá namiesto definície pojmu opísať skôr vymenovaním charakteristických vlastností inteligencie, či už ľudskej, alebo stroja. Tými vlastnosťami sú autonómia a adaptabilita.

  • Autonómia - Schopnosť vykonávať úlohy v komplexných prostrediach bez neustáleho vedenia používateľom (cudzou osobou).
  • Adaptabilita - Schopnosť zlepšiť svoj (intelektuálny) výkon učením sa zo skúseností.

Ak je našim cieľom vytvoriť všestrannú umelú inteligenciu zvládajúcu veľké množstvo rôznorodých úloh približujúcu sa úrovni schopností človeka, takúto AI označujeme ako umelá všeobecná inteligencia (AGI). Napriek pokusom (...samozrejme) je v súčasnosti funkčná AGI nedosiahnuteľná méta. Zatiaľ medzi nami nebehajú roboti ako Sony vo filme Ja, robot. Ak však úloh kladených na AI je len niekoľko, prípadne len jedna, AI môže dosahovať pozoruhodné výsledky. Dokonca výsledky, ktoré predčia schopnosti človeka v danej partikulárnej úlohe (napr. hry ako šach, či go). Takúto AI nazývame umelá zúžené inteligencia (ANI).  Je veľa vecí ktoré stroje, nech už majú akúkoľvek HW a SW architektúru dnes jednoducho nezvládnu. Proste byť schopný postarať sa o mačku tak, aby nám nezdochla je exponenciálne náročnejšia úloha ako rozpoznanie mačky nejakým AI systémom.

Toto je hlavný dôvod, prečo je dôležité zúžiť náš záujem v oblasti využívania AI zo všeobecnej inteligencie na parciálnu inteligenciu, teda ANI, ktorá rieši „len“ parciálne úlohy. Inými slovami AI systém bude mať za úlohu výhradne rozpoznávať mačku na obrázku, či videu, no nie mať schopnosť nejaké mačky aj chovať.

Práve definícia úlohy, či cieľa, je prvým krokom na ceste k využívaniu AI v praxi. Cieľ typu stroj sa má správať skoro ako človek (všeobecná inteligencia) je v súčasnosti priamou cestou k neúspechu v AI projekte.  Správnou cestou je mať jasne definovaný use case, teda jednoznačne naformulovanú úloha/cieľ, na ktorý je vhodné použiť niektorú verziu AI. A aké základné typy AI poznáme?

Oblasť umelej inteligencie rozlišuje niekoľko „typov“ tejto technológie:

  1. Umelá inteligencia (Artificial Intelligence, AI)
  2. Strojové učenie (Machine Learning, ML)
  3. Hĺbkové učenie (Deep Learning, DL)

Pojem AI sa teda často používa dvojmo. Raz ako pomenovanie technológie a inokedy ako typová podskupina technológie s rovnakým názvom, čo môže byť občas dosť mätúce. V ďalšom texte budem pojem AI používať prevažne ako typ technológie.

Act of Artificial Inteligence

Rozdiely v skratke: AI je stroj simulujúci správanie sa inteligentného človeka. ML je stroj učiaci sa z dát robiaci rozhodnutia. DL je ML na báze neurónových sietí. Rozdiel medzi ML a DL je teda v tom, že pokým ML pracuje s jednou úrovňou učenia, DL používa viac úrovní učenia. Výstup z jednej úrovne je vstupom pre druhu úroveň. DL je teda schopná riešiť komplexnejšie úlohy než ML.

ML, DL a AI sú vhodné na iné využitie.

1. Artificial Intelligence, ako technológia je sama schopná zanalyzovať zadanie, zadefinovať a získať dataset, ktorý potrebuje k riešeniu zadania a následne spracovať dataset pre získanie výsledku pre zadanie. Teda vytrénovať sa na datasete, čiže naučiť sa. AI sa k výsledkom spravidla dostáva opakovaným spracovaním dát, ktoré navyše v procese riešenia je schopná sama dopĺňať a dokonca aj samotný proces spracúvania vylepšovať. AI si môže v procese učenia vyvinúť postupy, pravidlá, vzory slúžiace k dopracovaniu sa k správnemu výsledku, ktoré sú nové, či už kvôli tomu, že doteraz neexistovali, alebo neboli objavené. Problém je v tom, že človek často nie je schopný zistiť, akým postupom sa AI k výsledku dopracovala, či už je správny alebo nesprávny. Preto nevie skorigovať postup AI, iba dať spätnú väzbu o správnosti výsledku.

2. Machine Learning sa z historických dát (dataset) naučí vzory, ktoré následne využíva na spracovanie dát budúcich. Postupy a pravidlá do ML vkladá človek. Na vytrénovanie je však potrebné obrovské množstvo kvalifikovaných dát. Technológia učenia (trénovania ML) je realizované cyklicky opakujúcim sa tým istým procesom. Dataset pre ML aplikáciu definuje a pripraví človek. Ak aj algoritmy v ML aplikácii sú správne, no vstupný dataset je zlý (napr. niektoré mačky na obrázkoch označíme ako psov a niektoré psi označíme ako mačky), alebo v datasete neboli vstupy, z ktorých by sa mohol ML naučiť správnu odpoveď (iba z obrázkov mačiek sa nenaučí rozpoznať kravu), ML nevytrénujeme tak, aby dával správne výsledky. Teda úspech ML projektu významne závisí od kvality datasetu, keďže technológia ML nie je schopná chybné časti datasetu rozpoznať a opraviť. Pri ML poznáme proces ako sa ML aplikácia dostala k výsledkom v kontraste s AI, kde postup je pre človeka neznámi. Preto, ak sa zmenia podmienky pri ML algoritmoch, tie sa musia dodať ML ako nové vstupy. AI na zmeny vie reagovať automaticky. Obe technológie (AI a ML) potrebujú určitú mieru spätnej väzby, kedy človek vyhodnotí správnosť parciálnych výsledkov v procese učenia. V ML je spätná väzba interaktívnejšia a vedie aplikáciu priamočiaro k očakávanému výsledku.

3. Deep Learning používa určité druhy ML techník, kde jednoduchšie procesné/výpočtové jednotky sú zosieťované do jedného DL systému. Výsledok procesovania dát jednej jednotky sú vstupom pre inú jednotku. Jednotky sú štandardne usporiadané do vrstiev. Vstupné informácie pri procesovaní DL systémom musia prejsť viacerými vrstvami procesných jednotiek, kým DL dospeje k nejakému výsledku. Architektúra je inšpirovaná ľudským mozgom, preto tieto DL systémy nazývame neurónovými sieťami. V praxi neurónové siete pozostávajú zo softvérovej reprezentácie neurónov a vzájomných virtuálnych prepojení po vrstvách medzi nimi. Každá sieť má minimálne vstupnú a výstupnú vrstvu, teda vstupnú, cez ktorú sa dostavajú vstupne dáta do siete a výstupnú, cez ktorú sa spracované výsledky dostávajú von z neurónovej siete. Medzi týmito základnými vrstvami sú bežne vkladané vnútorné vrstvy, ktoré dáta rovnako spracúvajú do nejakých medzivýsledkov pre nasledovnú vrstvu neurónov. Toto technické riešenie ML umožňuje DL sieti naučiť sa zložitejšie štruktúry bez toho, aby vyžadovala nereálne veľké množstvo údajov.

Deep neural network

Systém učenia je založený na spätnej väzbe. Z toho vyplýva nutnosť robenia chýb v procese učenia sa. A práve chybovosť môže byť parametrom trénovania AI. Je možné definovať kvalitu AI systému na základe početnosti chýb počas trénovania, kým sa AI dostane na nejakú predom určenú úroveň. Na porovnanie, dieťa potrebuje niekoľko desiatok vizuálnych vnemov, aby sa naučilo rozpoznať napr. psa. Teda chybovosť rozpoznania psa dieťaťom je zanedbateľná pri malom počte predlôh (malý dataset obrázkov). Súčasné systémy AI potrebujú tisíce, či dokonca milióny vstupov (obrázkov, videí) kým spoľahlivo rozlíšia psa od iného objektu. Teda kvalita učenia sa u človeka je mnohonásobne vyššia ako pri AI.

Kde začať?

Pojem AI tu máme od 50-tich rokov minulého storočia. Akurát doteraz sme nemali dostatočný výpočtový výkon a datasety. Súčasne. AI/ML bez výpočtového výkonu, alebo AI/ML bez veľkého množstva vstupných dát, dnes nie je AI, resp. ML. Potrebný výpočtový výkon už máme k dispozícii, a rovnako aj obrovské databázy všetkého možného (big data), no oblasť AI/ML/DL je stále vo fáze búrlivého vývoja. Vyvíja sa hardvér, no hlavne softvérová podpora. Vyvíjajú sa AI platformy, ktoré sa snažia učenie stále viac zefektívniť.

Napriek tomu už existujú aplikácie, ktoré sú funkčné a komerčne využiteľné. Dokonca aj na Slovensku. Napríklad jedna je využívaná na lepšiu diagnostiku onkologických pacientov. No s najväčšou pravdepodobnosťou aplikáciu presne plniacu vaše ciele nenájdete. Navyše aj keby ste našli vhodnú aplikáciu, tá musí byť vytrénovaná pre vaše unikátne prostredie. Veľmi zjednodušene, napríklad nejaká chatbot aplikácia v pizzerii musí poznať zoznam jedál a nápojov, aby vedela, povedzme, prijať objednávku, no chatbot v cestovnej kancelárii potrebuje vedieť niečo o zájazdoch v ponuke CK, aby prijal objednávku. V súčasnosti projekt AI väčšinou začína od nuly. Z čoho vyplýva, že ho realizujú prevažnej miere IT firmy, či už ako nový do budúcnosti perspektívny produkt, alebo na objednávku tretej firmy.

Prvým krokom pri AI/ML projekte je zistiť, či potrebujeme vôbec tieto technológie na dosiahnutie stanoveného cieľa. Potreba ML môže byť špecifikovaná napríklad ako:

  • Jednoduché klasifikačné pravidlá sú nedostatočné
  • Škálovatelnosť je problémom pre veľký počet dataset-ov

ML nepotrebujeme ak:

  • Výsledok je možné predikovať použitím jednoduchých pravidiel a výpočtov
  • Môžeme naprogramovať vopred dané kroky bez potreby akýchkoľvek dát pre učenie sa programu

Použitie AI/ML na bežnú aplikáciu je mrhaním zdrojov.

Pri green field realizácii AI/ML projektu je nevyhnutné vybudovať tím. AI si svojou komplexnosťou vyžaduje tímovú robotu. Vyplýva to aj z procesu (pracovného postupu) vytvárania AI, ML, alebo DL aplikácie.

Aj keď sa na úplnom začiatku projektu do toho pustí jeden človek, ako akýsi majiteľ toho projektu, veľmi rýchlo zistí, že bez ďalších spolupracovníkov nemá šancu na úspech. Proces budovania AI/ML aplikácie si totiž vyžaduje rôznorodé profesie.

Vo fáze Date collection je potrebné dáta najprv pozbierať z rôznych zdrojov. Môžu to byť napríklad streamované dáta, dáta z veľkého množstva IoT zariadení, alebo jednoducho dáta z webových serverov na internete.

Tieto dáta je následne potrebné pripraviť, aby boli vhodné pre trénovanie nášho systému. Nie všetky zhromaždené dáta sú relevantné pre tréning AI/ML systému, preto ich je potrebné vytriediť, či upraviť. Je potrebné zmeniť formát, ktorému rozumie AI/ML systém, je potrebné ich analyzovať a spracovať tak, aby boli užitočné pre učenie, aby ich algoritmy (hlavne pri ML) správne interpretovali, aby boli bezpečné. To je všetko práca pre dátových inžinierov. Musia však spolupracovať s programátormi ML algoritmov a tí zasa so systémovými inžiniermi, ktorí majú na starosti HW a SW infraštruktúru AI/ML systému.

Prax ukázala, že vyše 80% času pri realizácii AI/ML projektu si vyžadujú práve fázy zberu a prípravy dát. Oveľa menej času je už potrebné venovať trénovaniu AI/ML a po vytrénovaní samotnej implementácie AI/ML aplikácie, nasadzovaniu do produkcie. Veľmi to závisí od požadovanej aplikácie AI/ML. Niektorí implementátori hovoria aj o 95% časovej náročnosti fázy zberu a prípravy dát. Je potrebné si totiž uvedomiť, že kvalitný dataset potrebuje viac zdrojov dát ako jeden. Jeden zdroj dát spravidla poskytne málo kvalitný dataset a potom AI/ML bude zle vytrénovaná. Ćiže chybovosťou výstupov sa nikdy nedostane na akceptovateľnú úroveň. Navyše, kompetencie v oblasti AI/ML členovia tímu získavajú primárne skúsenosťami v projektoch. Školenia môže „len“ akcelerovať nárast ich kompetencií. No a na nadobudnutie kompetencií a zdokonaľovaní svojich spôsobilostí cez skúsenosti je potrebný čas.

No predtým, ako sa tím pustí do budovania AI/ML aplikácie sa musí rozhodnúť na akých HW a SW zdrojoch sa AI/ML aplikácia má vybudovať. A to sa nedá predtým, ako sa zadefinuje jasný cieľ projektu, teda aké úlohy má aplikácia plniť. Až po stanovení cieľov môže začať diskusia, či stačí ísť cestou ML technológií, alebo radšej DL a hľadať riešenie v nejakej verzii neurónových sietí.

ML architektúra je bližšia tradičnému computingu. Teda k sade serverov poprepájaných vzájomne i k dátovým úložiskám cez nejakú sieť. Je možné nato použiť riešenia pre Big Data ako napr. Hadoop, čo je softvérovou platformou pre distribuované úložisko a spracúvanie úloh vhodné pre obrovské databázy. Pomocou Hadoop sa budujú serverové klastre. Nad klastrami následne vznikajú celé ekosystémy určené pre AI/ML využitie. Ekosystémy sú popísané v prípade použitia Cisco hardvéru v dobre známych Cisco Validated Design dokumentoch.

Neurónové serveri DL sú architektonicky viac podobné architektúre ľudského mozgu, kde obrovské množstvo samostatne fungujúcich malých výpočtových jednotiek (v podstate minipočítače s vlastnou CPU a RAM) je vzájomne prepojených a tvoria jeden systém. Vďaka prelomovej zmene vo využívaní grafických kariet (GPU) niekedy v roku 2009 firmou NVIDIA sa záujem o DL výrazne zvýšil. Pomocou GPU HW vytvorili neurónovú sieť (Deep Neural Network, DNN), ktorá sa ukázala cca. 100 násobne rýchlejšia než štandardná architektúra využívajúca CPU. Takže dlhé týždne trénovania DL systémov sa skrátili na pár dní. GPU sú súčasťou pracovných staníc už dlho, aby akcelerovali zobrazovanie na displejoch. Bolo len otázkou času, kedy sa objavia aj v serveroch. Najprv ako HW podpora pre procesorovo náročné aplikácie a po dovyvíjaní výkonných komunikačných rozhraní medzi GPU modulmi aj pre DNN. Z tohto dôvodu je dnes možné prevádzkovať neurónové siete aj na hardvéry, ktorý je podobný štandardnému serveru, akurát obsahuje sadu GPU kariet vzájomne prepojených vysokými rýchlosťami.

Cisco UCS C480 ML M5

Cisco má v portfóliu server Cisco UCS C480 ML M5. Je určený primárne na trénovanie aplikácií, nie na produkciu. Trénovanie DL aplikácií si vyžaduje násobne vyšší výkon od hardvéru, než vytrénovaná aplikácia. Pre produkciu má Cisco server Cisco UCS 240 M5, či Cisco UCS 220 M5 s GPU modulmi.

Cisco C480 ML M5 obsahuje 8 kusov NVIDIA V100 SXM2 32GB GPU moduly, ktoré sú vzájomne prepojené cez NVLink riešenie. Z pohľadu štandardného server dizajnu má C480 ML M5 2 CPU socket-y a RAM pamäť s maximálnou kapacitou 3TB.

Každý V100 modul má 6 prepojov s celkovým pásmom 300 GB/s (GB/s, nie Gb/s!!!). Každý V100 GPU modul obsahuje 5120 tzv. CUDA jadier.

CUDA (Compute Unified Device Architecture) je platforma na paralelný computing a API model vytvorený firmou NVIDIA pre využívanie GPU na všeobecné účely (GPGPU - General-Purpose computing on Graphics Processing Units). CUDA platforma je softvérová vrstva pre priamy prístup ku GPU zdrojom, resp. virtuálnym inštrukčným sadám GPU elementov paralelného computingu. CUDA v podstate poskytuje knižnice a pravidlá pre kompilátory pre rôzne OS.  Základnú logiku práce s dátami pomocou CUDA schematicky zobrazuje obrázok z Wikipédie:

Optimalizovaná verzia technológie CUDA pre ML a DL existuje ako nadstavba technológie CUDA s názvom CUDA-X AI. CUDA-X AI obsahuje sadu knižníc, nástrojov a technológii, ktoré majú za cieľ zvýšiť výkon vyvíjaných aplikácií, alebo aj už vyvinutých, ktoré potrebujete zoptimalizovať pre vlastné účely.

Softvérová výbava

Existuje už množstvo aplikácii, ktoré boli vyvinuté pre AI/ML. Otázkou je, či danú aplikáciu je možné prispôsobiť  k požiadavkám vášho projektu. Ak nie, potom je potrebné AI/ML aplikáciu vytvoriť. Samotná aplikácia je sadou množstva kontajnerov. Môže bežať na jednom serveri, ak výkonnostne stačí, ale aj v multi node prostredí. 

Z rôznych kontajnerových technológií sa najčastejšie používajú Docker kontajnery, ktoré štandardne spravujeme cez Kubernetes orchestračný nástroj. AI/ML aplikácie majú množstvo „prerekvizít“, ktoré musia byť splnené. Nejde len o to, aby server mal GPU moduly od NVIDIA. Či CUDA-X nadstavbu pre AI v OS.  Aplikácia musí mať pripravené aj prostredie podporujúce požadované funkcionality s príslušnými knižnicami, či podporovanou databázou pre AI/ML. Ide o multi vendor prostredie, resp. o kombináciu vendor a open-source produktov.

Celé riešenie môže pozostávať z viacerých aplikácií. Napríklad pre spracovanie real-time dátových zdrojov vhodných pre AI/ML sa často používa Kafka softvérová platforma od LinkedIn. Kafka nie je súčasťou AI/ML aplikácie, len spracúva life streaming zdroje, zdroje dát z IoT, alebo webové zdroje dát tak, aby ďalšia aplikácia prijímané konsolidované dáta efektívnejšie vedela spracúvať. Kafka konsoliduje dáta z rôznych zdrojov, mení zápis nárazového stream-u náhodných správ na lineárny zápis.

Samotné AI/ML aplikácie potrebujú svoje prostredie, resp. tzv. framework. Najpoužívanejšie framework-y sú TensorFlow a PyTotch.

Napr. PyTorch je framework, ktorého aplikácie sú akcelerované na GPU moduloch v serveroch, má Python front end a obsahuje množstvo Python knižníc, cez ktoré je možné rozšíriť PyTorch funkcionality. Pre testovanie je možné PyTorch prostredie rozbehnúť aj na počítači bez GPU. Stačí zadať správny príkaz pre inštaláciu bez CUDA (CUDA voľba: None).

Ak však existuje potreba implementovať hotovú AI/ML aplikáciu, na webe NVIDIA sa nachádza katalóg aplikácií, ktoré sú funkčné na NVIDIA GPU moduloch: https://www.nvidia.com/en-us/gpu-accelerated-applications/. No stále je potrebné aplikáciu vytrénovať. Okrem veľkého množstva aplikácii pre rôzne oblasti, sú v linku aj aplikácie pre AI/ML (zoznam dostanete zapnutím filtra „Machine Learning & AI“).

V prípade záujmu nás neváhajte kontaktovať