Ha az NVENC nem indul el: egy modellekkel zsúfolt GPU és egy renderelő, amely tartalék módba vált

Videó

A videórenderelőnk ugyanazon a gépen fut, mint a nyelvi modell, amely a szkriptjeit írja. Egy este a hardveres kódoló egyszerűen nem akart megnyílni: „CUDA_ERROR_OUT_OF_MEMORY: out of memory”, majd „No capable devices found”.

Mi történt

A gép egy NVIDIA GB10 asztali számítógép, amelynek CPU-ja és GPU-ja egyetlen memóriakészletet oszt meg. A helyi modellt vLLM-en keresztül szolgálja ki, a Studio pedig ugyanazon a gépen renderel ffmpeg segítségével, NVENC használatával, ha lehetséges. Egy tesztelés során a kódoló nem tudta létrehozni a CUDA-kontextusát. A hiba másodpercek alatt jelent meg és tűnt el: egy rövid NVENC-teszt sikeres volt, az azt követő renderelés pedig elbukott; a következő futtatáskor már maga a teszt bukott el; az azt követő futtatáson pedig mind a teszt, mind a renderelés NVENC-en keresztül zajlott.

Miért

A vLLM induláskor a GPU memóriájának egy rögzített hányadát lefoglalja a modell és a gyorsítótára számára. Az NVENC-nek minden munkamenet CUDA-kontextusához szüksége van egy kis saját memóriára. Amikor a modellszerver és a többi feladat nem hagy szabad helyet, a kódoló nem tud elindulni, noha a chipen egy különálló motor, amely alig terheli a GPU számítási kapacitását.

A megoldás: döntés a kódoláskor, ne a teszteléskor

Az induláskor végzett teszt csak azt mutatja meg, hogy az NVENC egy pillanattal ezelőtt működött, nem azt, hogy a következő fájlnál is működni fog. Ezért a Studio minden renderelésnél megpróbálja az NVENC-et, és ha az ffmpeg elbukik, ugyanazt a szűrőgráfot újra lefuttatja libx264-gyel. Az élő csatorna minden indítás előtt egy fél másodperces teszt-kódolást végez az élő beállításaival, és libx264-re vált, ha az NVENC elbukik; az élő közvetítés során fellépő NVENC- vagy CUDA-hiba esetén a következő indítás már libx264-gyel történik. Minden elkészült videó rögzíti, melyik kódoló készítette, így a tartalék mód megjelenik a feladatfájlban, és nem marad észrevétlen.

Mibe kerül a tartalék mód

Kevesebbe, mint vártuk. Ugyanezen a gépen lévő 20-magos Arm CPU-n a libx264 12 másodpercnyi 1080p-s videót renderelt, kameraforgatással, beégetett felirattal és hangerő-normalizálással, 7,6 másodperc alatt. Napi egyszer készített rövid videókhoz a CPU tökéletesen alkalmas kódoló. A GPU sokkal fontosabb a képmodell számára, mint a kódoláshoz.

A tanulság

Közös gépen a GPU-kódolót opcionálisan kezeld: használd, ha elérhető, és lépj vissza, ha nem az, majd naplózd, melyiket használtad. Ugyanez vonatkozik minden olyan GPU-funkcióra, amelynek saját memóriára van szüksége egy olyan gépen, ahol egy modellszerver már lefoglalta annak nagy részét. A(z) Studio alapértelmezés szerint ezzel a viselkedéssel érkezik.

Frissítve: