rfihjref / README.md
rtgfreuui's picture
Copy files from spaces/Viggle/viggle-animate
37e06dc verified
|
Raw History Blame Contribute Delete
2.9 kB
---
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`](https://huggingface.co/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.