Memóriakeretet kapnak a megosztott GPU-k a Kubernetesben

· Tech, Hírek

Új lehetőség a megosztott GPU-k használatára

Az NVIDIA CUDA 13.4 olyan memóriakorlátozást vezet be, amely a Kubernetes környezetében megosztott GPU-k kezelését teszi kiszámíthatóbbá. A fejlesztés elsősorban azokat a mesterségesintelligencia-munkaterheléseket célozza, amelyeknek nincs szükségük egy teljes grafikus processzorra. Ha egy feladathoz csak a GPU egy része kell, a teljes eszköz lefoglalása kihasználatlan kapacitást hagyhat maga után. A megosztás ezzel szemben több munkaterhelés egyidejű kiszolgálását is lehetővé teszi ugyanazon az infrastruktúrán.

Az új képességről az NVIDIA fejlesztői blogja 2026. október 27-én számolt be. A részleteket az aihirek.info ismertetése is bemutatja.

Memóriakeret és kétféle számításmegosztás

A CUDA 13.4 memóriakerete az alkalmazás számára átlátható módon működik. A munkaterhelés meghatározhatja a pontos memóriaigényt, amely fölé az allokáció nem mehet. Emellett külön megadható egy garantált minimum, valamint egy felső határ is. A folyamat a maximális értékig akkor terjeszkedhet, ha a GPU-n rendelkezésre áll szabad memória. Ha a felhasználó nem ad meg külön maximumot, az megegyezik a kért memória mennyiségével.

A számítási erőforrások kétféle módon oszthatók fel. Az alapértelmezett time slicing esetén a munkaterhelések egymást váltva használják a teljes GPU-t. Az sm sharing ezzel szemben párhuzamos működést biztosít, mert a grafikus processzor streaming multiprocesszorai oszlanak meg a feladatok között. Ha minden munkaterhelés aktív, mindegyik nagyjából a számítási kapacitás azonos részét kapja. Amikor valamelyik feladat leáll, a felszabaduló kapacitást a többi használhatja.

A node oldali szabályozást az operator végzi

A memóriakorlátozás lehetőségét maga a CUDA biztosítja, a Kubernetesnek azonban szüksége van egy olyan, az adott node-on futó komponensre, amely beállítja és felügyeli a szükséges szolgáltatásokat. Ezt a feladatot az NVIDIA GPU Operator mellett működő, nyílt forráskódú GPU Fractioning Operator látja el. A projekt a KAI Scheduler GitHub szervezetében érhető el.

Az operator minden GPU csomóponton beállítja és futtatja az NVIDIA Multi Process Service-t. Emellett alkalmazza az egyes konténerekhez tartozó memória és számítási módot, valamint a teljes GPU helyett frakciónként méri a használatot. A scheduler kiválasztja a munkaterheléshez szükséges GPU-kat, majd konténerenkénti Pod annotációkban rögzíti a memóriaigényt, a korlátot, a számítási módot és a hozzárendelt eszközöket.

A rendszer használata nem kötődik kizárólag a KAI Schedulerhez. Bármely Kubernetes scheduler érvényesítheti a GPU frakciókat, ha képes létrehozni a szükséges annotációkat. A schedulernek kell megállapítania azt is, hogy melyik GPU-n áll rendelkezésre elegendő memória. Különböző számítási módot használó munkaterheléseket nem helyezhet ugyanarra a GPU-ra.

A KAI Scheduler v0.18.0 hozza az NvFractions módot

A KAI Scheduler v0.18.0 verziója bevezeti az NvFractions nevű GPU megosztási módot. A scheduler választja ki, hogy az egyes munkaterhelések melyik GPU melyik részét kapják, majd elkészíti az operator által értelmezett annotációkat. Az NvFractions a KAI telepítésekor Helm beállítással engedélyezhető, a GPU Fractioning Operator pedig függőségként települ.

A felhasználók abszolút memóriaértéket, vagy a GPU egy részét jelölő gpu fraction értéket adhatnak meg. Igény esetén burstkorlát is beállítható, a számítási mód pedig konténerenként lehet time slicing vagy sm sharing. Ha egy munkaterhelés több GPU-t igényel, a gpu fraction num devices annotációval adható meg az eszközök száma. Ilyenkor a megadott memóriaigény minden hozzárendelt GPU-ra külön érvényes.

Ez a működés a Kubernetesben kiszámíthatóbbá teheti a GPU-k megosztását. A munkaterhelések garantált memóriaigényt és választható maximális keretet kaphatnak, miközben a számítási kapacitás időben egymást váltva vagy párhuzamosan osztható fel. A telepítéshez és a konfigurációhoz a GPU Fractioning Operator, valamint a KAI Scheduler dokumentációja ad részletes útmutatást.