Mesterséges intelligencia

Slonk: Hatékony GPU-klaszter-kezelés Kubernetes és SLURM kombinációjával

A mesterséges intelligencia és gépi tanulás kutatásában a gyors és megbízható számítási erőforrások kezelése kulcsfontosságú. A Character.ai mérnökei ezért fejlesztették ki a Slonk nevű rendszert, amely a jól ismert SLURM ütemezőt ötvözi a Kubernetes rugalmasságával. Ez a megoldás nem csupán belső használatra készült, a fejlesztők most egy nyílt forráskódú kiadással is megosztják a technológia alapjait, hogy más kutatók és fejlesztők is hasznára váljon.

Két világ találkozása: HPC és Kubernetes

Amikor a Character.ai csapata bővíteni kezdte a GPU-alapú tanítóinfrastruktúráját, hamar szembesültek egy ismert problémával: a kutatók a hagyományos, megbízható SLURM rendszerhez ragaszkodtak, amely fair sorokat és komplex ütemezési lehetőségeket kínál, míg az üzemeltetésért felelős csapat a Kubernetes által nyújtott automatizálást, skálázást és állapotellenőrzést szerette volna kihasználni. A Slonk e két igényt ötvözi úgy, hogy a kutatók megszokott HPC-folyamataikat (például sbatch parancs, közös NFS-alapú home könyvtár) változatlanul használhatják, miközben a Kubernetes gondoskodik a háttérben zajló erőforrás-menedzsmentről és hibatűrésről.

Konténerek és Kubernetes – a Slurm új köntösben

A Slonk architektúrájának alapja, hogy a SLURM node-ok valójában hosszú ideig futó Kubernetes podokként jelennek meg. Három fő StatefulSet fut párhuzamosan: a vezérlő, a dolgozó és a bejelentkező podok, amelyek közvetlenül leképezik a SLURM csomópontokat. Ez lehetővé teszi, hogy a kutatók SSH-n keresztül lépjenek be, szerkesszék a kódjukat, beküldjék a munkákat, és valós időben kövessék az eredményeket, miközben a rendszer automatikusan kezeli a GPU-k, hálózat és tároló erőforrások állapotát.

A podok egy könnyű init réteggel indulnak, amely tartalmazza a SLURM démonokat, SSH-t és a szükséges rendszerkomponenseket, így a konfiguráció könnyen kezelhető ConfigMapek segítségével, a felhasználói home pedig NFS-en keresztül megosztott. Ezzel a megközelítéssel a klaszter bármikor skálázható és több feladattípus is együtt tud futni ugyanazon a hardveren.

Műszaki kihívások és megoldások

Az egyik legnagyobb nehézség a SLURM és Kubernetes állapotainak szinkronizálása volt, hiszen mindkettő külön erőforrás-ütemezőként működik. Ezt a csapat folyamatos összehangoló eszközökkel oldotta meg, amelyek biztosítják, hogy mindkét rendszer pontosan tudja, mely node-ok élnek, melyek vannak karbantartás alatt, vagy éppen előzés alatt állnak. Emellett a Slonk egész sor egészségellenőrzést végez GPU-kon, hálózaton és tárolón, hogy a hibás elemeket automatikusan kiiktassa és újraindítsa, mielőtt azok problémát okoznának egy hosszú tanítási folyamatban.

Fontos továbbá a hálózati topológia figyelembevétele: a SLURM ütemező képes arra, hogy a nagyobb, több node-ból álló munkákat olyan GPU-kra ossza szét, amelyek fizikailag is közel vannak egymáshoz, így jelentősen csökken a késleltetés és javul a teljesítmény.

Miért érdemes a Slonkot választani?

A Slonk megoldja a klaszterek kezelésének egyik legnehezebb feladatát: az egyenletes, egységes környezetet több felhő és hardver között, ugyanazzal a CUDA stackkel és megfigyelhetőségi eszközökkel. Így a GPU-k dinamikusan mozgathatók a tréning és az éles alkalmazás között, miközben a Kubernetes prioritási osztályai garantálják, hogy az éles munkák előnyt élveznek. A kutatók pedig pont úgy dolgozhatnak, ahogy megszokták, miközben a háttérben egy modern és stabil rendszer gondoskodik a folyamatos működésről.

A részletes technikai leírás és az eszközök elérhetők a Slonk fejlesztői blogon, amely kiváló alapot nyújt mindazoknak, akik saját gépi tanulási klaszterük korszerűsítésén gondolkodnak.