AI a játékokban és azon túl

Az NVIDIA-nál minden RTX, de nem minden AI. Cikkünkben tisztázzuk, hogy ezen pontosan mit kell érteni.

RTX, mint gyűjtőfogalom

Az NVIDIA még a 2018-es év őszén prezentálta az első GeForce RTX szériát, amely a Turing architektúrát használta, és számos érdekes újítást vezetett be. Azóta persze már két újabb generáció is született, de ez volt az a pont, amikor az RTX jelző egyértelműen a köztudatba került. Eredetileg úgy tűnt, hogy ez az NVIDIA saját elnevezése lesz a sugárkövetésre, de azóta kiderült, hogy a cég mindent RTX jelzővel illet, ami valamilyen szinten kapcsolódik egy bizonyos, játékokban vagy azokon túl alkalmazható technológiához. Az RTX emiatt gyűjtőfogalommá vált, ami bizony komoly zavart tud okozni a fejekben, hiszen sokan máig csak a sugárkövetésre gondolnak, ha meghallják ezt a három betűt.

A fentiek miatt érdemes lebontani, hogy az NVIDIA igazából mit is ért ezen. Egyrészt nyilván ott a sugárkövetés, de fontos kihangsúlyozni, hogy teljesen szabványos eljárásról van szó, működjön a játék a DirectX 12 vagy a Vulkan megfelelően modern verziójával. Az említett két API nagyjából ugyanazt kínálja a sugárkövetés szempontjából, emiatt elsődlegesen a DirectX Raytracinget mutatjuk be, de nagyon-nagyon hasonló a Vulkan is.

A Microsoft az első DirectX Raytracing bemutatásakor, amit DXR 1.0-nak szokás hívni, egy úgynevezett dynamic shader based raytracinget kínált fel. Ez leginkább annyit tudott, hogy működött, de egyáltalán nem a teljesítményre volt optimalizálva. A rendszer alapvetően kilőtte a sugarakat, a hardver a gyorsítóstruktúra segítségével megkereste, hogy hol talál el egy háromszöget, ha egyáltalán lesz találat, és ennek megfelelően jöhetett egy hit vagy miss shader. Bármelyiket is hívta meg a program, az be lett linkelve az erre vonatkozó bekötési táblába, és ez alapján tudta a rendszer megosztani a hit vagy miss shaderrel a szükséges adatokat, vagyis ilyen formában volt végigkövetve egy sugár útja, ameddig az tartott.

Control Raytracing kikapcsolva és bekapcsolvaControl Raytracing kikapcsolva és bekapcsolva Control Raytracing kikapcsolva és bekapcsolva (forrás: NVIDIA) [+]

Ezzel önmagában semmi gond nem volt és ma sincs, sőt, jól működő technikáról van szó, ha az adott játék komplex shadereket futtat több virtuális anyag használata mellett a felületeken, hiszen a DXR 1.0-val az árnyalással kapcsolatos munka ütemezését a rendszer kezeli. A probléma a különböző limitációkból származhatott, többek között a gyorsítóstruktúra nem köthető be minden shader lépcsőn, API szintjén kezelt állapotobjektumot és shaderekre vonatkozó bekötési táblát igényel, illetve nem teszi lehetővé a rendszer a relatíve alacsony szintű sugárbejárás kezelését.

Hirdetés

Control Raytracing kikapcsolva és bekapcsolvaControl Raytracing kikapcsolva és bekapcsolva Control Raytracing kikapcsolva és bekapcsolva (forrás: NVIDIA) [+]

A felmerült tényezőkre reagálva a Microsoft később bevezette a DXR 1.1-et, amely az úgynevezett inline raytracinget kínálja fel. Itt igazából nem az 1.0 leváltásáról, hanem kiegészítéséről van szó, mivel az 1.1-es verzió a korábbi módszerhez képest megszünteti a bekötési táblát, illetve nem lesz több elszeparált dinamikus shader. Ehelyett már az eredeti shader tartalmazza a kontextus struktúráját, és utasítja a hardvert, hogy kezdje meg a bejárási lépcsőt. Ha egy sugárnak lesz találata, akkor a függvény visszatér, viszont már ott van a kontextus struktúrája a shaderben, amivel rögtön megkezdődhet a munka, nem kell már semmiféle adatmozgás, illetve elszeparált dinamikus shader indítása ehhez. Cserébe az árnyalással kapcsolatos munka ütemezése is kikerül a rendszer alól, de ez a legtöbb esetben kedvező, mert hatékonyabb optimalizálásra ad lehetőséget. Csak ritka esetben van úgy, hogy az eredeti 1.0-s specifikáció működik gyorsabban.

A jó hír, hogy ezzel nem igazán kell a felhasználóknak törődnie, mert minden olyan GPU, amely alkalmas hardveresen gyorsított sugárkövetésre, egyszerre támogatja a DXR 1.0-t és 1.1-et, tehát a fejlesztők tetszőlegesen kiválaszthatják, hogy melyik opciót építik be a játékokba; manapság inkább az utóbbit szokták, de kivétel azért akad.

Az NVIDIA az RTX jelzővel nem igazán különbözteti meg a két eltérő specifikációjú sugárkövetési módszert, és azt is lényegtelennek tekintik, hogy ezek melyik API-ban vannak használva. Valószínűleg a cég úgy látja, hogy túl bonyolult lenne ezt kommunikálni a vásárlók felé, így inkább egyszerűbb üzeneteket közvetítenek, de technikai szempontból fontos hangsúlyozni, hogy itt több, teljesen szabványos módszerről van szó.

RTX, ami nem csak sugárkövetés

Az RTX ugyanakkor nem csak sugárkövetés, ahogy az előző oldalon említettük, hanem más technológiák összefoglaló neve is. Emiatt nem igazán célravezető egy játék esetében, ha az alkalmazott, teljesen szabványos sugárkövetési módszerét, legyen az dynamic shader based vagy inline raytracing, RTX-nek nevezzük. Kevésbé zavarodunk össze a sok jelzőben, ha szimplán RT-nek hívjuk ezt az eljárást, ami egyébként a raytracing rövidítésének felel meg.

De felmerülhet a kérdés: mire vonatkozik még az RTX? Igazából mindenre, ideértve a DLSS-t, ezen belül is a DLSS 3-at, a Reflex technológiát, amellyel nemrég egy blogban foglalkoztunk, továbbá olyan technológiákat, amelyek nem feltétlenül köthetők a játékokhoz – ezekről kicsit később értekezünk.

DLSS 3

Ha már a Reflexet körbejártuk a linkelt blogban, a sugárkövetést pedig az előző oldalon, akkor érdemes a DLSS-re fókuszálni, célzottan a DLSS 3-ra, amely az aktuális legmodernebb verzió. Ez az eljárás a DLSS 2 továbbfejlesztése, és alapvetően egy temporális technikáról van szó, amely a felskálázás tekintetében alacsonyabb felbontású képet képes magasabb felbontásra skálázni. A rendszer az éppen számolt képkocka szín- és mélységadatait igényli a mozgásvektorok mellett, továbbá a korábban elkészült felskálázott képek információit is beolvassa előzményminták formájában.

A DLSS 3 a felskálázás tekintetében részben AI alapokon dolgozik, az aktuális képkocka rekonstrukciójával kapcsolatban ott nyúl a neuronhálóhoz, amikor eldönti, hogy miképp kombinálja a korábbi képkockáról származó előzménymintákat az új képkocka felskálázásához. Tehát összességében egy olyan analitikai módszerről beszélünk, amely bizonyos munkafolyamatokban egy neuronháló alapján hoz döntéseket. Utóbbit az NVIDIA általánosan tréningeli, tehát időnként frissítik ezt. Persze figyelembe kell venni, hogy az adott játékok eltérőek, így alapvetően a fejlesztők döntésétől is függ, hogy melyik DLSS 3 alverziót alkalmazzák, emellett több felskálázási profilt is kínál a rendszer, itt is az adott leképező igényeit figyelembe véve érdemes kiválasztani a megfelelő paraméterezést. Valójában ezzel nincs dolga a játékosoknak, a program és a meghajtó oldalán intéződik minden, ugyanakkor megjegyzendő, hogy manuálisan kicserélhető az adott alkalmazás által szállított DLSS állomány, noha ezt hivatalosan nem szokás ajánlani. Nem azért, mert nem működik vagy működhet, hanem azért, mert ez egy nem tesztelt környezetet hoz létre, és ebben a formában nem tudja garantálni az NVIDIA, illetve a programfejlesztők, hogy a DLSS elvárt, letesztelt módon funkcionáljon. Próbálkozni viszont lehet, de csak saját felelősségre.

Bármilyen konfiguráció mellett is dönt az adott játék fejlesztője, végeredményben a felskálázás több minőségi profil alapján valósulhat meg, és ezek között az eltérés a valóban számolt felbontás mértéke a felskálázandó célfelbontáshoz viszonyítva. Könnyen kitalálható, hogy minél gyengébb a minőségi profil, annál gyorsabb lesz a sebesség, de annál több részlet vész el. Ezeket a lehetőségeket az NVIDIA jól értelmezhetően jelzi, így a játékos kiválaszthatja, hogy a DLSS 3 működése teljesítményre vagy inkább minőségre legyen állítva. Ezt azonban nem érdemes túl általánosan értelmezni. Nincs egy egzakt beállítás, ami biztosan mindig jó. Általában játékonként érdemes ellenőrizni az egyes minőségi szinteket, mivel elképzelhető, hogy egy adott címben a quality opció is okozhat furcsaságokat, míg más alkalmazásban a performance beállítás is egész jó képminőséget kínál. Ezt a célfelbontás is nagyban befolyásolja. Ha esetleg a minőségből nem szeretnénk engedni, akkor bizonyos programok lehetővé teszik a natív módot is, ami DLAA néven fut. Ilyenkor magán a DLSS futószalagon végigmegy a képszámítás, de a számolt felbontás megegyezik a célfelbontással, tehát effektíve a felskálázás nem történik meg, de a rendszer élsimítási része működni fog.

Az élesítés esetleges szükségessége is megjegyzendő, mert a DLSS 3 temporális jellegéből adódóan hajlamos lehet arra, hogy különböző, jellemzően kisebb, általában nehezen észrevehető képtorzulások mellett általánosan homályosítson a képkockán. Ez igazából nem hiba, a technológia velejárója, és lehet alkalmazni élesítő szűrőt, hogy korrigálható legyen a homályos hatás. Utóbbi beépítése mindig a fejlesztő feladata, és alapértelmezetten nem szokott aktív lenni ez a rendszer, a felhasználónak kell kérnie a program beállításain belül.

RTX, azaz képgenerálás és sugárrekonstrukció

A DLSS 3 kapcsán látható, hogy felskálázásban mennyire jól tud segíteni, de valójában nem csak ennyiből áll, van a rendszernek egy képgeneráló, illetve egy sugárrekonstrukcót végző része is. Azért érdemes ezeket külön tárgyalni, mert nem kötelezően aktiválható technikákról van szó, tehát a játékos kérheti az eljárásnak csak a felskálázó részét, anélkül hogy a többi kiegészítést aktiválná.

Frame Generation, vagyis képkocka-generáló

A DLSS 3 egyik kulcselemének számít, és a lényege annyi, hogy két egymás után számolt képkocka közé generál egy köztes tartalmat. Ezt a feladatot az NVIDIA GeForce RTX 40-es szériában található Optical Flow Accelerator hardverelem végzi, amely képes kiszámolni az úgynevezett optikai áramlási vektorokat. Ezeket a rendszer arra használja, hogy megpróbálja megbecsülni, hogy a kép egyes pixelei hogyan és merre mozognak az egymást követő képkockák között. Az információ, amire így szert tesz a technológia, arra használható fel, hogy a GPU egy köztes képet generáljon a vizsgált tartalmak alapján.

A módszer elég hatékony, mert gyakorlatilag megduplázható a képkockasebesség, miközben relatíve kevés képtorzulással kell számolni. Ráadásul a generált tartalom sosem használ processzoridőt, nem tartozik hozzá számolt jelenet, tehát a teljes munka csak a GPU-n belül valósul meg.

A DLSS 3 felskálázás és képgenerálás sebességelőnyeA DLSS 3 felskálázás és képgenerálás sebességelőnyeA DLSS 3 felskálázás és képgenerálás sebességelőnye A DLSS 3 felskálázás és képgenerálás sebességelőnye (forrás: NVIDIA) [+]

Némi hátrány is kíséri azonban a képgenerálót, mivel a generáláshoz mindenképpen szükséges két képkocka, ezért a második kép ideiglenesen vissza lesz tartva, hogy előtte egy generált tartalom jelenhessen meg a kijelzőn. Ebből keletkezik némi extra késleltetés, de ezt az NVIDIA a Reflex nevű, fejlesztőknek szánt szoftvercsomaggal igyekszik csökkenteni, és emiatt ez a technika kötelezően implementálandó a DLSS 3 beépítésével. Használni persze nem kötelező, csak ajánlott.

A képgenerálás viszonylag rugalmasan aktiválható, akármilyen felskálázási paraméterezéssel üzemképes, sőt, akár felskálázás nélküli is.

Ray Reconstruction, vagyis a sugárrekonstrukció

Ez a DLSS 3 másik opcionális elemének számít. Mielőtt belemennénk a lényegébe, azt azért leszögezzük, hogy a felskálázás során mindenképpen kevesebb információval dolgozik a rendszer, mint felskálázás nélkül. Egyszerűen kevesebb a számolt pixel, tehát a natív felbontásban való kalkulációhoz képest az eredmény nem lesz olyan pontos. És itt hangsúlyozzuk, hogy ez nem azt jelenti, hogy nem lehet jó a felskálázott kép minősége, hanem azt, hogy nem áll olyan információmennyiség rendelkezésre, hogy az eredmény annyira pontos legyen, mint natív felbontás során. Ettől még az emberi látás láthatja elég jónak vagy akár jobbnak is azt, amit felskálázással kapunk, de ez egy nagyon szubjektív tényező, viszont a feldolgozott információmennyiség biztosan kevesebb, tehát objektíven tekintve a natív felbontású képszámítás eredménye pontosabb.

DLSS Ray Reconstruction a Cyberpunk 2077-benDLSS Ray Reconstruction a Cyberpunk 2077-ben DLSS Ray Reconstruction a Cyberpunk 2077-ben (forrás: NVIDIA) [+]

A sugárkövetéses effektek tekintetében különösen látványos a minőségbeli eltérés, mert a felskálázás során keletkező képtorzulások erőteljesebbek lehetnek. Ezeket próbálja helyreállítani a sugárrekonstrukció. Kicsit általánosabban szemlélve, az egész felskálázási folyamat egy részét az teszi ki, hogy a kevesebb számolt pixel miatti információhiányt a rendszer megpróbálja valahogy elfedni, ehhez pedig rekonstrukciós folyamatokat használ. Az eredmény nem lesz olyan pontos, mint natív felbontáson, de elég jó lesz ahhoz, hogy kellemes hatást keltsen, sőt, ezt tényleg lehet jobbnak látni a natív minőségnél is, de ez preferencia kérdése.

RTX a játékokban

Az elmélet után érdemes szemügyre venni, hogy mindez hogyan hasznosul. Ahogy említettük, az RTX nem feltétlenül jelent AI-t, például a sugárkövetés nem az, de a DLSS 3 részben erre építkezik. Tehát effektíve amelyik játék a DLSS 3-at használja felskálázásra, az AI eljárást is tartalmaz. Hogy mely játékok ezek, az az alábbi linken tekinthető meg.

A két legújabb cím ilyen szempontból a S.T.A.L.K.E.R. 2: Heart of Chornobyl, illetve az Indiana Jones and The Great Circle. Ezek azért jó példák, mert eltérő API-t használnak, az előbbi DirectX 12-n, míg utóbbi a Vulkan API-n fut.

A S.T.A.L.K.E.R. 2: Heart of Chornobyl az Unreal Engine 5 egyedileg módosított verziójára építkezik, és abból a szempontból nagyon érdekes, hogy nem használ hardveresen gyorsított sugárkövetést. Erről jelen cikkben még nem volt szó, de ilyen, mondhatni szoftveres formában is lehetséges ezt az eljárást alkalmazni. Ennek jellemzően akkor van előnye, ha a geometriai részletesség igencsak magas, mivel a DXR 1.0 és 1.1 esetében ez az egyik gyenge pont. A mai hardverek ezt a tényezőt nem igazán szeretik, elsődlegesen azért, mert a sugárkövetés bejáráslépcsője a DirectX Raytracing API-ban még nem programozható. Persze vannak különböző trükkös kerülőutak, de végeredményben majd a programozhatóság hozza el az igazi áttörést, addig is a komoly geometriai részletességgel dolgozó játékok esetében igencsak trükkösen kell a sugárkövetést használni.

Az új S.T.A.L.K.E.R. konkrétan egy Lumen nevű rendszert alkalmaz, amely platformfüggetlen, és teljesen dinamikus globális illuminációt, illetve visszatükröződéseket kínál. Az RTX jelző tehát ennél a játéknál nem a sugárkövetésre vonatkozik, hanem a DLSS 3 elérhetőségére, továbbá a képgenerálás következtében a Reflex is elérhető.

Az Indiana Jones and The Great Circle már az id Tech 7 módosított verzióját használja, és ez a játék el sem indul hardveresen gyorsított sugárkövetés nélkül. Két mód érhető el: a hagyományos csupán globális illuminációt kínál, míg az úgynevezett Full Ray Tracing beállítás a direkt mellett indirekt fényekkel is dolgozik, a sugarak áthatolhatnak a növényzeten, teljes értékű a visszatükröződés, illetve a nap realisztikus árnyékokat generál. Ezt a módot egyébként szokás path tracingnek is nevezni. Itt megint egy olyan fogalomról van szó, ami nem biztos, hogy leegyszerűsíti a dolgok megértését, de a lényege annyi, hogy a path tracing a sugárkövetés egy altípusa, ami annyiban kínál többet, hogy a fény és az adott felület kölcsönhatásának módját több szempontból is figyelembe veszi, így valósághűbb lesz a képi hatás.

Sajnos Full Ray Tracing paraméter rendkívül erőforrás-igényes, mivel mindent vagy semmit alapon működik, nem lehet egyenként bekapcsolni az egyes előnyös részeit, vagy az összes eljárás aktív, vagy semmi sem. Az alapértelmezett globális illumináció ugyanakkor viszonylag kedvezően fut a hardvereken, tehát oda nem kell túl combos grafikus vezérlő. A DLSS 3 az új Indiana Jones esetében is elérhető, természetesen a Reflexszel együtt.

A hardvereket figyelembe véve igazából bármelyik DirectX Raytracinget támogató grafikus vezérlő megfelel a célnak, de a komolyabb effektekhez érdemesebb combosabb megoldásokban gondolkodni. Egy GeForce RTX 4070 Ti Super jó alternatíva lehet, nem is legdrágább, továbbá elég erősnek számít. A gyártók közül számos alternatíva van, például az ASUS sok különböző modellt kínál fel, gondolva itt a ROG Strix, a TUF, vagy éppen a Dual opciókra. A maximalistáknak érdemes az első kettőben gondolkodni, de árban a Dual megoldások a kedvezőbbek, például az ASUS Dual GeForce RTX 4070 Ti SUPER, amivel ugyanúgy el lehet érni minden cikkben tárgyalt funkciót.


[+]

Talán érdemes kihangsúlyozni azt is, hogy érkezik az új generáció. Ha nem túl sürgető a vásárlás, akkor egy kis várakozással bővülhet a lehetőségek sora, de ezekre majd visszatérünk az érkező VGA-k tesztjeiben.

RTX a játékokon kívül

Bár az RTX elsődlegesen a játékokra fókuszáló gyűjtőnév, azért játékokon kívül is van haszna, és itt jön az a pont, amikor az AI, mint technológia igazán előtérbe kerül, nemcsak a munkafolyamat egy kis részében.

Az NVIDIA számos saját szoftvert kínál, amelyek bizonyos területeken alkalmaznak AI-t, ilyen például a NVIDIA Broadcast applikáció, ami leginkább a streamelőket célozza. Segítségével különböző funkciókon keresztül tehetjük jobbá a nézők számára az élményt. Ilyen a zavaró környezeti hangok kiszűrése, a szemkontaktus valós idejű korrekciója, a streamelt videó zajának eltávolítása, illetve a virtuális háttér. Mindegyik hasznos a maga módján, és neuronhálók segítségével módosítják a felvevőeszköz bemeneti adatait, vagyis AI funkciókról van szó.

A másik érdekes alkalmazás a ChatRTX, ami tulajdonképpen egy lokálisan futtatható AI chatprogram. Ilyen formában a betöltött nyelvi modellel való beszélgetésünk teljesen az adott számítógépen marad, ami sok szempontból előnyös.

Persze fontos figyelembe venni azt is, hogy ezek a nyelvi modellek elég sok VRAM-ot igényelnek, ha a GPU-n futnak, tehát nem szabad tőle olyan képességeket várni, amelyeket megkaphatunk az online elérhető alternatíváktól. Egyszerűen maga a lokálisan futtatott modell nem tartalmaz elég sok paramétert ahhoz, hogy mondjuk felérjen az OpenAI-féle ChatGPT képességeihez. Viszont ez így is elfogadható lehet, ha a géppel való privát társalgás kiemelten fontos szempont.

Végül, de nem utolsósorban ott az NVIDIA Studio. Ez megintcsak több szolgáltatást és szoftvert rejt, de mindegyiknek az a lényege, hogy valamilyen módon segítse a célzott területen a munkamenetet. Például az NVIDIA Canvas kifejezetten hasznos alkalmazás lehet, ha az AI lehetőségeit felhasználva, irányított módon szeretnénk képeket generálni.

A fentieken túl azért megemlítenénk, hogy manapság számos lokálisan futtatható AI szoftver létezik. Ezek jó része nem kapcsolódik közvetlenül az NVIDIA-hoz, de nem is feltétlenül kell, elég ha támogatják valamelyik, gépi tanulásra használható API-t, amin keresztül elérhetőek a GeForce hardverek képességei. Legyen szó CUDA-ról vagy DirectML-ről, a futtathatóság szempontjából nincs jelentősége, mert mindkét felületet támogatja az NVIDIA.

Nyugodtan lehet tehát mazsolázni a webet, hátha szembejön valamilyen hasznos AI program, a jelenlegi lehetőségek mellett nagyon nagy eséllyel futni fog a modernebb GeForce-okon. Általánosan véve itt a legnagyobb limitáció a VRAM kapacitása szokott lenni. Ha tehát az AI úgymond produktivitás szempontjából fontos, akkor érdemes minél nagyobb VRAM-mal rendelkező GPU-t beszerezni.

Abu85

Hirdetés

Elképesztő, 60 millió forintos összdíjazású AI hackathon Budapesten!

PR Budapesten rendezi meg egy magyar tech cég az első nemzetközi, 24 órás AI hackathonját! Bárki jelentkezhet, aki a mesterséges intelligenciában jártas és képes 24 óra alatt valami egyedit, kreatívat alkotni!

Azóta történt

Előzmények

Hirdetés