Kun NVENC ei käynnisty: GPU on täynnä malleja ja renderöijä palautuu vararatkaisuun
Video
Videorenderöijämme toimii samalla koneella kuin kielimalli, joka kirjoittaa sen skriptit. Eräänä iltana laitteistokooderi ei yksinkertaisesti auennut: "CUDA_ERROR_OUT_OF_MEMORY: out of memory", sitten "No capable devices found".
Mitä tapahtui
Kone on NVIDIA GB10 -työpöytäkone, jonka suoritin ja näytönohjain jakavat saman muistialueen. Se tarjoaa paikallisen mallimme vLLM:n kautta, ja Studio renderöi samalla koneella ffmpegillä käyttäen NVENC:iä, kun se vain onnistuu. Testiajon aikana kooderi ei pystynyt luomaan CUDA-kontekstiaan. Vika tuli ja meni sekunneissa: lyhyt NVENC-testi onnistui ja heti sen jälkeen tullut renderöinti epäonnistui; seuraavalla ajolla itse testi epäonnistui; sitä seuraavalla ajolla sekä testi että renderöinti menivät NVENC:n kautta.
Miksi
vLLM varaa kiinteän osan näytönohjaimen muistista käynnistyessään mallille ja sen välimuistille. NVENC tarvitsee hieman omaa muistia kunkin istunnon CUDA-kontekstille. Kun mallipalvelin ja muut työt eivät jätä mitään jäljelle, kooderi ei voi käynnistyä, vaikka se on erillinen moottori sirulla ja koskettaisi harvoin näytönohjaimen laskentatehoa.
Korjaus: päätetään koodauksen aikana, ei testin aikana
Käynnistyksen aikainen testi kertoo, että NVENC toimi hetki sitten, ei että se toimii seuraavan tiedoston kanssa. Siksi Studio kokeilee NVENC:iä jokaisessa renderöinnissä ja, jos ffmpeg epäonnistuu, ajaa saman suodinkaavion uudelleen libx264:llä. Live-kanava ajaa puolen sekunnin testikoodauksen live-asetuksilla ennen jokaista käynnistystä ja käyttää libx264:ää, jos NVENC epäonnistuu testissä; NVENC- tai CUDA-virhe striimin aikana vaihtaa seuraavan käynnistyksen libx264:ään. Jokainen valmis video tallentaa, mikä kooderi sen teki, joten vararatkaisu näkyy työtiedostossa eikä jää huomaamatta.
Mitä vararatkaisu maksaa
Vähemmän kuin odotimme. Saman koneen 20-ytimisellä Arm-suorittimella libx264 renderöi 12 sekuntia 1080p-videota, jossa on kameran liikkeitä, poltettuja tekstityksiä ja äänenvoimakkuuden normalisointia, 7,6 sekunnissa. Lyhyille, kerran päivässä tehdyille videoille suoritin on täysin kelvollinen kooderi. Näytönohjain on paljon tärkeämpi kuvamallille kuin koodaukselle.
Pääpointti
Käsittele jaetulla koneella GPU-koodausta valinnaisena: käytä sitä, kun se avautuu, palaa vararatkaisuun, kun se ei avaudu, ja kirjaa ylös, kumpaa käytit. Sama pätee kaikkiin GPU-ominaisuuksiin, jotka tarvitsevat omaa muistia koneella, jossa mallipalvelin on jo vienyt suurimman osan siitä. Studio sisältää tämän toiminnon oletuksena päällä.