Od minulého desetiletí jsme svědky toho, že se GPU stále častěji objevují v oblastech, jako je HPC (High-Performance Computing) a nejpopulárnější oblast, tedy hraní her. GPU se rok od roku zlepšují a nyní jsou schopny dělat neuvěřitelně skvělé věci, ale v posledních několika letech na sebe strhávají ještě větší pozornost díky hlubokému učení.
Jelikož modely hlubokého učení tráví při trénování velké množství času, ani výkonné CPU nebyly dostatečně efektivní, aby zvládly tolik výpočtů v daném čase, a to je oblast, kde GPU díky svému paralelismu jednoduše překonávají CPU. Než se však ponoříme do hloubky, pojďme nejprve pochopit několik věcí o GPU.
GPU neboli „Graphics Processing Unit“ je mini verze celého počítače, ale určená pouze pro konkrétní úlohu. Na rozdíl od CPU vykonává více úloh najednou. GPU je vybaven vlastním procesorem, který je zabudován na vlastní základní desce spolu s v-ram nebo video ram, a také vhodnou tepelnou konstrukcí pro větrání a chlazení.
Pod pojmem „grafická procesorová jednotka“ se rozumí vykreslování obrazu na zadaných souřadnicích ve 2d nebo 3d prostoru. Viewport nebo viewpoint je perspektiva pohledu diváka na objekt v závislosti na typu použité projekce. Rasterizace a Ray-tracing jsou některé ze způsobů vykreslování 3d scén, oba tyto koncepty jsou založeny na typu projekce nazývané perspektivní projekce. Co je to perspektivní projekce?
Krátce řečeno, je to způsob, jakým se obraz vytváří na pohledové rovině nebo plátně, kde se rovnoběžné čáry sbíhají do sbíhajícího se bodu nazývaného „střed projekce“, a také jak se objekt vzdaluje od pohledu, zdá se být menší, přesně tak, jak to naše oči zobrazují v reálném světě, a to také pomáhá při chápání hloubky obrazu, což je důvod, proč vytváří realistické obrazy.
Kromě toho GPU zpracovávají také složitou geometrii, vektory, zdroje světla nebo osvětlení, textury, tvary atd. Protože nyní máme základní představu o GPU, pochopíme, proč se hojně využívá pro hluboké učení.
Proč jsou GPU lepší pro hluboké učení?
Jednou z nejobdivovanějších vlastností GPU je schopnost počítat procesy paralelně. V tomto bodě nastupuje koncept paralelních výpočtů. CPU obecně plní své úkoly sekvenčním způsobem. CPU lze rozdělit na jádra a každé jádro se zabývá vždy jednou úlohou. Předpokládejme, že procesor má 2 jádra. Pak na těchto dvou jádrech mohou běžet procesy dvou různých úloh, čímž se dosáhne multitaskingu.
Ale stále se tyto procesy vykonávají sériově.
To neznamená, že CPU nejsou dost dobré. Ve skutečnosti procesory opravdu dobře zvládají různé úlohy související s různými operacemi, jako je obsluha operačních systémů, zpracování tabulek, přehrávání HD videa, extrakce velkých souborů zip, a to vše najednou. To jsou některé věci, které GPU prostě nezvládne.
V čem spočívá rozdíl?
Jak již bylo řečeno, CPU je rozděleno na více jader, takže se mohou věnovat více úlohám současně, zatímco GPU bude mít stovky a tisíce jader, která se všechna věnují jedné úloze. Jedná se o jednoduché výpočty, které se provádějí častěji a jsou na sobě nezávislé. A obě ukládají často potřebná data do příslušné paměti cache, čímž dodržují princip „reference lokality“.