Čeští vědci vyvinuli nástroj pro zjednodušení programování počítačů, které se používají pro ChatGPT a další

21. 2. 2023
Doba čtení: 5 minut

Sdílet

TNL Autor: ČVUT
TNL
Software TNL z ČVUT zásadně zjednodušuje programování pro superpočítače využívající grafické karty a klasické procesory.

Dnešní fenomény jako ChatGPT, Stable Diffusion, Midjourney a řada dalších mají společnou jednu věc – jejich modely a základy se počítají na obrovském množství grafických akcelerátorů (GPU) v rámci superpočítačů (HPC) a cloudových clusterů. Tyto superstroje se používají i na řadu dalších operací, což je ostatně důvod, proč Česko pro zdejší vědce provozuje národní superpočítačové centrum v čele s nejrychlejším počítačem Karolina.

Jak si pokecat (a programovat) s neuronkou ChatGPT, aby to stálo za ten čas Přečtěte si také:

Jak si pokecat (a programovat) s neuronkou ChatGPT, aby to stálo za ten čas

HPC mají kromě části s GPU také běžné procesory (CPU). Způsob programování pro GPU se v některých aspektech výrazně liší od programování pro zpracování na CPU. Na Katedře matematiky Fakulty jaderné a fyzikálně inženýrské ČVUT ve spolupráci s Fakultou informačních technologií a Fakultou strojní proto vyvinuli softwarovou knihovnu, která programování takového prostředí usnadňuje. Podle českých vědců je zjednodušení zásadní.

Knihovna se jmenuje TNL (Template Numerical Library) a je k dispozici jako open source pro grafické akcelerátory od společnosti Nvidia.

„Do budoucna plánujeme zavést podporu GPU karet firmy AMD, ale také čipů M1 a M2 od firmy Apple. Dále je potřeba testovat a optimalizovat efektivitu TNL při běhu na velkých superpočítačích. V neposlední řadě chceme přidávat nové paralelní algoritmy a datové struktury, aby s pomocí TNL bylo možné řešit stále širší třídu úloh,“ popsal docent Tomáš Oberhuber, který stál u zrodu TNL a nyní jej koordinuje.

Grafiky od AMD začínají získávat zajímavou pozici. Používá je například Frontier, což je nejvýkonnější superpočítač na světě (USA), který překonal jeden exaflop. Na stejných akcelerátorech AMD Instinct MI250X běží i LUMI, což je světová trojka a evropská jednička, ke které má přístup i Česko.

Startuje nejrychlejší superpočítač Evropy. Přispělo na něj i Česko a vyrábět se bude v Kutné Hoře Přečtěte si také:

Startuje nejrychlejší superpočítač Evropy. Přispělo na něj i Česko a vyrábět se bude v Kutné Hoře

Nvidia je díky technologii CUDA považována za jakýsi standard v oboru. Firmy jako Meta nebo Tesla mají v provozu až desetitisíce těchto karet. Ostravský superpočítač Karolina jich má 576, a jde tak o jednu z největších instalací na světě. Na SemiAnalysis je článek, který říká, že se nadvláda CUDA bortí alespoň ve strojovém učení, mimo jiné díky nástrojům PyTorch 2.0 a OpenAI Titan.

Autoři TNL, mezi které patří Tomáš Oberhuber, Jakub Klinkovský, Radek Fučík, Vítězslav Žabka a další, k projektu zveřejnili podrobné vědecké práce. Jsou k dispozici na webu ČVUT a v elektronické knihovně Association for Computing Machinery. Další materiály jsou k dispozici zde. Stručnější popis je k dispozici níže.

Vědci z ČVUT popisují TNL takto:

Vysoce výkonné výpočty se využívají třeba při simulacích výpočetní dynamiky tekutin (computational fluid dynamics, CFD), která je nezbytná například pro meteorologické modely v předpovědí počasí, pro výpočet aerodynamiky při návrhu letadel nebo automobilů nebo v energetice při návrhu vodních či větrných turbín. Výše zmíněné simulace by na jednom počítači trvaly i řadu měsíců nebo let, nicméně HPC s využitím GPU je právě pro tento typ úloh výrazně vhodnější a řádově rychlejší.

Během osmdesátých a devadesátých let dvacátého století rostl výkon osobních počítačů zejména díky výraznému zvyšování taktu procesorů. Tento růst však kolem roku 2000 narazil na takzvané power wall a memory wall. První pojem znamená, že další navyšování výkonu pomocí vyššího taktu by vedlo k neúměrně vysoké spotřebě energie a tomu odpovídajícímu vyzářenému teplu. Druhý pojem popisuje situaci, kdy výkon procesorů rostl výrazně rychleji než výkon pamětí, a vznikl tak propastný rozdíl mezi těmito dvěma klíčovými komponentami. Přitom řada programů těží hlavně právě z rychlosti paměťových modulů. 

Dušan Janovský: Vyhledávače bude do budoucna nejvíc používat AI Přečtěte si také:

Dušan Janovský: Vyhledávače bude do budoucna nejvíc používat AI

Po roce 2000 se výkon procesorů přestal zvyšovat vyšším taktem, ale pomáhal mu rostoucí počet jader. Vedle toho se ukázalo, že již zmíněné grafické karty, do té doby využívané zejména pro akceleraci počítačových her, jsou pro mnoho typů algoritmů vhodnější a výkonnější než procesory. 

Společnost Nvidia vytušila tento potenciál GPU a v roce 2006 uvedla nástroj CUDA, který zjednodušil programování GPU pro obecné účely, a od té doby také vyvíjí nové generace svých GPU i s ohledem na vysoký výkon nejen v počítačových hrách a 3D grafice, ale také v oblasti HPC. Díky svému návrhu GPU umožňuje snáze zvyšovat počet výpočetních jednotek v porovnání s vícejádrovými CPU.

Výkon se dá dále zvyšovat zapojením několika GPU do jednoho počítače a následným propojením několika takových počítačů. Vznikají takzvané distribuované klastry nebo superpočítače, které mohou obsahovat až desetitisíce procesorů a GPU akcelerátorů.

Programování GPU je náročné a vyžaduje detailní znalost jejich architektury. Tím se stávají těžko dostupné například pro matematiky nebo fyziky, kteří potřebují provádět náročné počítačové simulace, ale nemají dostatečně dobré zkušenosti s programováním. Vývoj paralelních algoritmů pro GPU je navíc časově velmi náročný a často zabere několikanásobně více času než vývoj stejného algoritmu pro běžný procesor.

Cílem knihovny TNL je nabídnout sadu datových struktur a algoritmů s jednotným rozhraním pro různé architektury, což umožňuje psát jeden kód jak pro vícejádrová CPU, tak pro GPU. Tyto struktury a algoritmy jsou na vyšší úrovní abstrakce, takže snáze umožňují vývoj i poměrně pokročilých algoritmů.

Knihovna TNL je napsána v jazyce C++ a využívá jeho nejnovější vlastnosti, jako je šablonové metaprogramování nebo lambda funkce. Díky tomu lze programovat překladač tak, aby generoval kód požadovaný uživatelem. U každé datové struktury překladač ví, zda s ní má pracovat CPU, nebo GPU. 

TNL dále využívá takzvané výrazové šablony, které umožňují zasáhnout do způsobu, jakým překladač vyhodnocuje třeba vektorové algebraické výrazy. Díky tomu ho lze naprogramovat tak, aby pro každý výraz vygeneroval specializovanou funkci právě pro GPU. Na rozdíl od klasického přístupu, který staví na knihovně BLAS/cuBLAS napsané v čistém jazyce C, je tento přístup jednodušší, a navíc vede k efektivnějšímu využití CPU a GPU.

Pomocí lambda funkcí jazyka C++ je implementována takzvaná flexibilní paralelní redukce. Pokud například potřebujeme sečíst dlouhou řadu čísel na CPU, stačí tři řádky jednoduchého kódu. To samé na GPU ale zabere několik desítek řádků relativně komplikovaného kódu. Je to jeden z nejextrémnějších příkladů toho, jak jednoduchá věc na CPU může být poměrně komplikovaná na GPU. 

Při vývoji TNL byl také kladen velký důraz na kvalitní implementaci datových struktur pro matice. Dále byla implementována datová abstrakce formátů pro řídké matice zvaná segmenty a na ní založená datová struktura pro numerické sítě. 

Do budoucna chceme zlepšit podporu maticových operací a zaměřit se na efektivní řešiče soustav lineárních rovnic, které jsou zásadní pro mnoho úloh z aplikované matematiky.  

Knihovna TNL se v loňském roce stala afiliovaným projektem organizace pro podporu numerického open source software Numfocus.

Výrobce iPhonů v Česku rozjel první mimoamerickou produkci superpočítačů pro Hewlett Packard Přečtěte si také:

Výrobce iPhonů v Česku rozjel první mimoamerickou produkci superpočítačů pro Hewlett Packard

Autor článku

Reportér Lupa.cz a E15. O technologiích píše také do zahraničních médií.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).