text_encoder_cpu_offload means params rest on CPU between calls but compute on GPU: FSDP-wrapped encoders (T5/llama/clip) already get this via CPUOffloadPolicy streaming, but encoders without _fsdp_shard_conditions (reason1/Qwen2.5-VL) were parked on CPU and, after the encoder-device input routing added for kandinsky5, silently ran their 7B forward on CPU (crashing outright with flash-attn installed). Move plain CPU-parked encoders to the target device for the forward and back afterwards, mirroring the image-encoder/VAE offload pattern; FSDP (DTensor) encoders keep the existing input routing. Revert the examples to text_encoder_cpu_offload=True now that the default works. Verified e2e: T2V/I2V outputs are metric-identical to GPU-resident runs, with ~12GB lower VRAM during denoising. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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()