Files
hao-ai-lab-FastVideo/examples/inference/basic
SolitaryThinker d6e020402e [feat] magi-human: switch all 8 examples to umbrella HF repo + register umbrella paths
Phase 5: with all 4 weight variants now uploaded under
FastVideo/MagiHuman-Diffusers (one HF repo, four sibling subfolders
base / distill / sr_540p / sr_1080p), all magi-human examples now
default to the umbrella string. Local conversion via the
checkpoint_conversion script remains supported and is documented in
the example docstrings.

Files updated:
  * basic_magi_human.py:                      base T2V    -> base
  * basic_magi_human_ti2v.py:                 base TI2V   -> base
  * basic_magi_human_distill.py:              distill T2V -> distill
  * basic_magi_human_distill_ti2v.py:         distill TI2V-> distill
  * basic_magi_human_sr540p.py:               sr-540p T2V -> sr_540p
  * basic_magi_human_sr540p_ti2v.py:          sr-540p TI2V-> sr_540p
  * basic_magi_human_sr1080p.py:              sr-1080p T2V-> sr_1080p
  * basic_magi_human_sr1080p_ti2v.py:         sr-1080p TI2V-> sr_1080p

  * fastvideo/registry.py: hf_model_paths for the base T2V config now
    includes 'FastVideo/MagiHuman-Diffusers/base' and the distill T2V
    config includes 'FastVideo/MagiHuman-Diffusers/distill', alongside
    the existing per-variant repo names. The SR umbrella paths
    (sr_540p / sr_1080p) were already registered by Phases 3/4. TI2V
    variants reuse the same weight subfolders and are selected at
    load time via override_pipeline_cls_name + pipeline_config (see
    basic_magi_human_ti2v.py for the pattern).

Verified end-to-end:
  * pytest tests/local_tests/magi_human/ -v -s: 14 passed, 0 failed.
    All bit-exact (diff_max=0.0, diff_mean=0.0).
  * basic_magi_human.py with local converted_weights/magi_human_base
    moved out, forcing snapshot_download from the umbrella repo:
    mp4 byte-identical md5 dcf5f2bf6534c7c0d91e7353e42b23db (matches
    pre-upload local-path output exactly).

Notes:
  * fastvideo/utils.py:maybe_download_model already supports the
    'org/repo/subfolder' umbrella form (committed in e2ef3234), and
    fastvideo/pipelines/basic/magi_human/magi_human_pipeline.py
    lazy-loads the four shared components (Wan VAE, T5-Gemma encoder
    + tokenizer, Stable Audio VAE) from their canonical upstream HF
    repos so each umbrella subfolder only ships transformer/ +
    scheduler/ + (sr_transformer/) + model_index.json.
  * Total HF Hub footprint after upload: ~165 GB raw, server-side
    deduped. User cache footprint per variant is ~5-30 GB transformer
    (+ ~30 GB sr_transformer for SR) plus a single ~25 GB upstream
    cache shared across all variants.
2026-05-05 10:55:49 -07:00
..
2026-02-21 16:06:55 -08:00

Basic Video Generation Tutorial

The VideoGenerator class provides the primary Python interface for doing offline video generation, which is interacting with a diffusion pipeline without using a separate inference api server.

Requirements

  • At least a single NVIDIA GPU with CUDA 12.4.
  • Python 3.10-3.12

Installation

If you have not installed FastVideo, please following these instructions first.

Usage

The first script in this example shows the most basic usage of FastVideo. If you are new to Python and FastVideo, you should start here.

# if you have not cloned the directory:
git clone https://github.com/hao-ai-lab/FastVideo.git && cd FastVideo

python examples/inference/basic/basic.py

For an example on Apple silicon:

python examples/inference/basic/basic_mps.py

For an example running DMD+VSA inference:

python examples/inference/basic/basic_dmd.py

For the typed config/request path added during the inference API refactor:

python examples/inference/basic/basic_dmd_new_api.py

Basic Walkthrough

All you need to generate videos using multi-gpus from state-of-the-art diffusion pipelines is the following few lines!

from fastvideo import VideoGenerator

def main():
    generator = VideoGenerator.from_pretrained(
        "Wan-AI/Wan2.1-T2V-1.3B-Diffusers",
        num_gpus=1,
    )

    prompt = ("A curious raccoon peers through a vibrant field of yellow sunflowers, its eyes "
             "wide with interest. The playful yet serene atmosphere is complemented by soft "
             "natural light filtering through the petals. Mid-shot, warm and cheerful tones.")
    video = generator.generate_video(prompt)

if __name__ == "__main__":
    main()