Vissza az eszközökhöz

Média generálás

FramePack

A FramePack next-frame videógenerátor: a bemeneti kontextust állandó hosszra tömöríti, ezért 6 GB GPU memórián fut, a számítási igény pedig nem nő a videó hosszával.

3 perc olvasás

A FramePack next-frame predikciós videógeneráló modell: nem a teljes videót diffundálja egyszerre, hanem szakaszonként jósolja meg a következő képkockákat. A bemeneti kontextust állandó hosszra tömöríti, ezért a generálás számítási és memóriaigénye nem nő a videó hosszával: a 13 milliárd paraméteres HunyuanVideo modell 6 GB GPU memórián elfut, és 30 fps mellett 60 másodperces, 1800 képkockás klip is előállítható. A projekt nyílt forrású, Apache-2.0 licenc alatt, és desktop szoftverként, Gradio felülettel érkezik.

A gyakorlatban a videó a generálás közben hosszabbodik: először egy rövid szakasz jelenik meg, majd egymás után épülnek fel a továbbiak. A felület minden szakaszhoz folyamatjelzőt mutat, és előnézetet ad a következő szakaszról, így a klip iránya a teljes videó elkészülte előtt is látható.

Miért lesz állandó a kontextus

  • Minden bemeneti képkocka változó patch mérettel kerül tokenizálásra: a fontosabb képkockák hosszabb, a távolabbiak rövidebb kontextust kapnak, a teljes tokenmennyiség viszont egy felső korlát alatt marad.
  • A fontosság mérhető időbeli közelséggel, jellemzőhasonlósággal vagy a kettő kombinációjával. A tömörítési mintázat (FramePack scheduling) a videó hosszától függetlenül állandó költségű.
  • Ezért a számítás bonyolultsága képkockánként O(1): az ezredik képkocka nagyjából ugyanannyiba kerül, mint a harmincadik.
  • A hosszú videóknál jelentkező drift, vagyis a minőségromlás ellen a projekt anti-drifting mintavételezést használ. A képből induló generálásnál a végpont előre rögzített, és a köztes szakaszok fordított időrendben, a rögzített végpont felé közelítve készülnek el, így a hiba nem halmozódik korlátlanul.
  • Az F1 változat “vanilla” mintavételezéssel fut, a tervezett P1 pedig tervezett anti-driftingot és diszkrét előzmény-reprezentációt hoz.

Mire van szükség

  • NVIDIA GPU az RTX 30XX, 40XX vagy 50XX sorozatból, fp16 és bf16 támogatással. A GTX 10XX és 20XX sorozat nincs tesztelve.
  • Legalább 6 GB GPU memória, Windows vagy Linux operációs rendszer.
  • Windows alatt egy előre csomagolt kiadás tölthető le (CUDA 12.6 és PyTorch 2.6): kicsomagolás, majd update.bat, végül run.bat. A modell súlyok automatikusan letöltődnek, és 30 GB fölötti adatforgalmat jelentenek.
  • Linux alatt külön Python 3.10 környezet javasolt: PyTorch CUDA 12.6 build, majd a requirements.txt telepítése, végül python demo_gradio.py. A felület -port és -share kapcsolókat is elfogad.
  • A példák 480p közeli felbontással készültek, 30 képkocka másodpercenként.
  • Nálunk a FramePack Docker konténerben fut a Windows munkaállomáson, NVIDIA GPU-val, és egy helyi wrapper szkript indítja.

Idő és minőség: amire számítani kell

  • A sebesség nagyságrendje a dokumentált érték: asztali RTX 4090-en 2,5 másodperc képkockánként optimalizálás nélkül, TeaCache-csel 1,5 másodperc, laptop GPU-n pedig 4-8-szor lassabb. Egy 60 másodperces klip így több órás futás.
  • A TeaCache nem veszteségmentes, és a sage-attention, a kvantálás vagy a GGUF súlyok is befolyásolják az eredményt. A repository javaslata szerint ezekkel érdemes ötletet tesztelni, a végleges kimenetet viszont teljes diffúziós folyamattal kell elkészíteni.
  • Ha a felület eleinte csak 1 másodperces videót mutat, az normális: a modell szakaszonként dolgozik, tovább kell várni a következő szakaszokra.
  • A next-frame modellek érzékenyek a zaj és a hardver apró eltéréseire, ezért az első saját bemenet előtt érdemes végigfutni a hivatalos sanity check példát.
  • A rövid klipek kis mozgással dolgozhatók ki kiszámíthatóan: a promptban érdemes tiltani a kameramozgást (pan, tilt, zoom, dolly), és csak lassú mikro-mozgást engedni.
  • A repository figyelmeztet, hogy kizárólag a GitHub repository a hivatalos forrás, és a hasonló nevű weboldalakról nem szabad letölteni vagy fizetni.

Kötegelt feldolgozás

  • Egy futó példányhoz egyszerre csak egy feladatot adunk. Egyetlen feladat is közel telítésbe viszi a GPU-t, ezért a párhuzamos beküldés nem gyorsít, csak összekeverheti a kimeneteket.
  • A köteg soros ciklusban, egy újrafelhasznált klienssel dolgozik, és megvárja az előző feladat befejezését, mielőtt a következő képre lép.
  • A kimenetet a forráskép neve alapján, a forráskép mellé írjuk ki, és a már létező, olvasható videót kihagyjuk, hacsak nincs explicit felülírás.
  • A wrapper szkript naplózza a forrást, a feladat állapotát és a célfájl útvonalát. Sikert csak akkor jelentünk, ha a célfájl létezik, nem nulla méretű és megnyitható.
  • Rövid, 5 másodperces klipekből álló kötegeknél a prompt és a napló együtt adja a visszaellenőrizhető láncot a bemeneti képtől a kész videóig.

Tovább olvasás

A CyberElectrónál a FramePack a rövid, képből induló klipek eszköze: konténerben, wrapper szkripttel, egyszerre egy feladattal fut, és csak a helyben ellenőrzött kimenetet vesszük át. A bemeneti képeket többek között FLUX modellel és saját LoRA súlyokkal készítjük.

Címkék
  • videógenerálás
  • diffúzió
  • GPU
  • konténer
  • kötegelt feldolgozás