Eszközök

Mesterséges intelligenciával generált szöveg

AI-ügynökökkel gyorsított UDF-átírások: GPU-gyorsítás Apache Sparkban a NVIDIA cuDF segítségével

A főszereplő az NVIDIA cuDF és az Apache Spark együttese, kiegészülve az AI-ügynökökre épülő cuDF skills for Apache Spark eszközkészlettel.

AI-ügynökökkel gyorsított UDF-átírások: GPU-gyorsítás Apache Sparkban a NVIDIA cuDF segítségével

Az NVIDIA bemutatja, hogyan lehet AI-ügynökökkel és a cuDF pluginnal az Apache Sparkban futó user-defined function (UDF) kódokat rövid idő alatt GPU-kompatibilissé alakítani. A bemutatott munkafolyamat szerint ügynökök és a "cuDF skills for Apache Spark" nevű készlet segítségével több mint 30 éles UDF-et konvertáltak GPU-gyorsított megoldássá; egy konkrét mérésben egy UDF operátori futási ideje 274.55 óráról 12.78 órára csökkent, ami több mint 22-szeres gyorsulást jelent egy 600 milliárd soros munkaterhelésen. Az érintett UDF több mint 3,000+ Spark-futtatást érintett.

Miért problémásak a UDF-ek Sparkban?

Apache Spark deklaratív SQL/DataFrame interfésze miatt a cuDF plugin könnyen tudja a lekérdezések egyes részeit áthelyezni a GPU-ra: a relációs és kifejezés-alapú logika részletei láthatóak a tervező számára, így a plugin párhuzamosítható GPU-implementációkra cseréli őket. A UDF-ek viszont tetszőleges felhasználói kódot tartalmaznak, amelyekről a futtatórendszer általánosan nem tud következtetni, ezért végrehajtáskor gyakran visszafallbackelnek a CPU-ra. Ennek következményei:

  • adatok oszlopos (columnar) formátumból sor-orientált formátumba konvertálása és vissza;
  • hálózati/PCIe és memória átvitel miatti overhead;
  • a GPU által kínált számítási sebesség kihasználatlansága.

Ezek az okok részben magyarázzák, miért okoznak a UDF-ek jelentős teljesítményromlást GPU-gyorsított pipeline-okban.

Hogyan lehet gyorsítani a UDF-eket?

Az NVIDIA három szintű megközelítést vázol a UDF-átírásokra, a komplexitás és flexibilitás növekedésével:

  • SQL: alacsony komplexitás, legmagasabb absztrakció; egyszerű relációs logika esetén a legegyszerűbb út.
  • cuDF: közepes komplexitás, nagyobb kontroll és GPU-oszlopokra épülő API (például a RapidsUDF és a ColumnVector használata); alkalmas összetettebb feldolgozásra, például string-parszolásra és beágyazott típusokra.
  • CUDA: magas komplexitás, kernel szintű vezérlés; leginkább a legösszetettebb vagy legkritikusabb teljesítményű logikánál alkalmazandó.

Példaként egy egyszerű Scala UDF, amely Celsiust Fahrenheitre alakít, háromféleképpen helyettesíthető: közvetlen SQL-kifejezéssel, cuDF-alapú RapidsUDF implementációval (evaluateColumnar metódussal, amely ColumnVector-okat fogad és GPU-n dolgozik), vagy szükség esetén saját CUDA-kernellel JNI-n keresztül.

AI-ügynökök szerepe — a cuDF skills for Apache Spark

A gyakorlatban a UDF-ek átalakítása manuálisan sok időt és ellenőrzést igényel: a megfelelő API kiválasztása, a sémamegfelelés és a teljesítmény validálása mind fontos lépések. Az NVIDIA által bemutatott "cuDF skills for Apache Spark" készlet négy, egymásra épülő skillre bontja a folyamatot: scaffolding és tervezés, konverzió, benchmarkolás és optimalizáció, mindegyikhez verifikációs visszacsatolással. A készlet tartalmaz projektvázat, teszt- és benchmark-harness-t, automatizált kimenet-ellenőrzési rutinokat és build konfigurációt, így az ügynökök az UDF-re koncentrálhatnak a környezet újrateremtése helyett.

A készlet továbbá GPU-programozási jógyakorlatokat is kínál (memóriakezelés, konfigurációs tippek), és lehetővé teszi, hogy az ügynök különböző megvalósításokat próbáljon ki, majd az automatikus tesztek és mérések alapján döntsön.

Teljesítmény és gyakorlat

Egy nagy fogyasztói technológiai vállalat a munkafolyamat alkalmazásával több mint 30 UDF-et alakított át éles adatfolyamaiban. Egy példa esetben a CPU-alapú UDF operátori ideje 274.55 óráról 12.78 órára csökkent egy 600 milliárd soros inputon, az átalakítás eredményeként több mint 22-szeres gyorsulás érhető el. Az átalakított UDF közvetlenül érintett több mint 3,000 Spark-futtatást.

NVIDIA hangsúlyozza, hogy az ügynökök segítségével az átalakítási ciklusok órás nagyságrendűek lehetnek ahelyett, hogy napokat vagy heteket venne igénybe, miközben megőrzik az eredeti UDF-ek viselkedését.

Hogyan kezdje el a munkát

Az érdeklődők telepíthetik a cuDF skills for Apache Spark készletet GitHubról, közvetlenül vagy az npx skill installerrel:

npx skills add NVIDIA/cudf-spark --skill ‘*’

További források közé tartozik az NVIDIA által ajánlott Data + AI Summit előadás ("Coding with AI Agents to Supercharge Your Spark UDFs with GPU Acceleration"), valamint a cuDF plugin for Apache Spark getting-started útmutatója és a cuDF dokumentációi.

Összefoglalás

A UDF-ek GPU-ra való átírása jelentős teljesítmény- és költségmegtakarítást hozhat Spark-alapú adatcsövekben. Az NVIDIA által bemutatott munkafolyamat és a cuDF skills for Apache Spark segít automatizálni és felgyorsítani az átírásokat, három szintű átalakítási stratégiát kínálva (SQL, cuDF, CUDA), valamint beépített tesztelést és benchmarkolást biztosítva a helyes működés és a mérhető gyorsulás érdekében.