rfihjref / README.md
rtgfreuui's picture
Copy files from spaces/Viggle/viggle-animate
37e06dc verified
|
Raw History Blame Contribute Delete
2.9 kB

A newer version of the Gradio SDK is available: 6.32.0

Upgrade
metadata
title: Viggle-Animate
emoji: 🕺
colorFrom: indigo
colorTo: purple
sdk: gradio
sdk_version: 5.50.0
python_version: '3.10'
app_file: app.py
hf_oauth: true
pinned: false
models:
  - Viggle/Viggle-Animate
short_description: Put the person from a still into a driving video, in 4 steps

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.