Viggle/viggle-animate

Space

48

stars

24

commits

Sep 9, 2026

updated

gradio

README

Upload a driving video and a character still. The clip's first frame is repainted with gpt-image-2 so it shows your character in that exact pose and framing, and that repainted frame is the only conditioning the model gets besides the clip itself — no pose estimation, no segmentation, no masks.

Takes 4–10 s of driving video and renders it at 4 sampling steps; anything longer is cut to 10.1 s. The model itself only renders frame counts of the form 17k+5 and never fewer than 124 (5.17 s), so shorter clips are held out to 124 frames with a frozen last frame and the render is trimmed back — what comes out is exactly as long as what went in.

Weights: Viggle/Viggle-Animate.

No sign-in. The GPU comes out of your own ZeroGPU quota, and the render asks for more of it than a free account's day holds — in practice rendering needs PRO. The repaint calls an image model this Space pays for, on the CPU, before any GPU is involved, and is limited to five a day per visitor. The finished examples at the bottom of the page need neither, and are there so the model can be judged for free.

Hardware. The transformer is 62 GiB in bf16; with the VAEs that is 73.5 GiB on the card. ZeroGPU xlarge (96 GB) is required — large is 48 GB and cannot hold it. xlarge bills at 2× the normal quota rate, so a free account's day does not go far here; PRO gets 40 min.

The weights stay on the CPU at startup. Pre-staging them through ZeroGPU's tensor pack was tried and cannot fit: the pack plus the source weights need ~159 GB on disk at once, and the container enforces a write quota that df does not show — the pack's fallocate dies with ENOSPC while the boot log prints over a terabyte free. The cost is one host-to-device copy on the first render a cold worker handles (measured 14 s, from warm page cache); queued renders after it skip the copy. What did land instead: the decode step quantizes to uint8 on the card rather than walking the clip to fp32 numpy on the CPU (bit-identical frames, several seconds of GPU time saved), the frame count rides along from prepare instead of being re-counted in the billed window, and trimming plus watermarking run in the parent process after the GPU window closes.

When AOT-compiled copies of the transformer's two repeated block classes exist in the weights repo (<ClassName>/package.pt2, built once on this hardware from an owner-only maintenance button), they are downloaded at boot and swapped in after the weights reach the card; without them the Space renders the same model eagerly.

Contributors

yycc

24 commits

Viggle/viggle-animate

Space

48

stars

24

commits

Sep 9, 2026

updated

gradio

README

Upload a driving video and a character still. The clip's first frame is repainted with gpt-image-2 so it shows your character in that exact pose and framing, and that repainted frame is the only conditioning the model gets besides the clip itself — no pose estimation, no segmentation, no masks.

Takes 4–10 s of driving video and renders it at 4 sampling steps; anything longer is cut to 10.1 s. The model itself only renders frame counts of the form 17k+5 and never fewer than 124 (5.17 s), so shorter clips are held out to 124 frames with a frozen last frame and the render is trimmed back — what comes out is exactly as long as what went in.

Weights: Viggle/Viggle-Animate.

No sign-in. The GPU comes out of your own ZeroGPU quota, and the render asks for more of it than a free account's day holds — in practice rendering needs PRO. The repaint calls an image model this Space pays for, on the CPU, before any GPU is involved, and is limited to five a day per visitor. The finished examples at the bottom of the page need neither, and are there so the model can be judged for free.

Hardware. The transformer is 62 GiB in bf16; with the VAEs that is 73.5 GiB on the card. ZeroGPU xlarge (96 GB) is required — large is 48 GB and cannot hold it. xlarge bills at 2× the normal quota rate, so a free account's day does not go far here; PRO gets 40 min.

The weights stay on the CPU at startup. Pre-staging them through ZeroGPU's tensor pack was tried and cannot fit: the pack plus the source weights need ~159 GB on disk at once, and the container enforces a write quota that df does not show — the pack's fallocate dies with ENOSPC while the boot log prints over a terabyte free. The cost is one host-to-device copy on the first render a cold worker handles (measured 14 s, from warm page cache); queued renders after it skip the copy. What did land instead: the decode step quantizes to uint8 on the card rather than walking the clip to fp32 numpy on the CPU (bit-identical frames, several seconds of GPU time saved), the frame count rides along from prepare instead of being re-counted in the billed window, and trimming plus watermarking run in the parent process after the GPU window closes.

When AOT-compiled copies of the transformer's two repeated block classes exist in the weights repo (<ClassName>/package.pt2, built once on this hardware from an owner-only maintenance button), they are downloaded at boot and swapped in after the weights reach the card; without them the Space renders the same model eagerly.

Contributors

yycc

24 commits