You want a finished clip on disk – 848×480, solid motion, from a text prompt – running on hardware you control. That’s the end state after installing Mochi 1 preview (Python package genmo 0.1.0), Genmo’s open-source Sora alternative. No waitlist. Apache 2.0 weights. Here’s the path that actually worked for me on a clean Linux box with a big NVIDIA card.
Mochi 1 is a 10B AsymmDiT text-to-video model. Upstream ships quality/hackability first; it does not try to fit a 24GB card. Consumer VRAM? Use ComfyUI wrappers. This guide stays on the official repo so you get the reference pipeline, Gradio UI, CLI, and LoRA hooks.
System requirements before you touch git
~60GB VRAM for single-GPU inference in this repo (as of the current README for package 0.1.0). Genmo recommends at least one H100. Diffusers bf16 + offload/tiling is documented around ~22GB; full Diffusers path nearer ~42GB. Pure upstream is hungrier.
| Resource | Painful minimum | Recommended |
|---|---|---|
| GPU VRAM | ~42GB-class path with offload/tiling (Diffusers-style) | ~60GB+ / H100 for upstream demos |
| Disk | 60-100GB free (weights + workspace + caches) | SSD with headroom for T5-XXL + outputs |
| OS | Linux (CUDA) | Ubuntu 22.04+ , recent NVIDIA driver |
| Python | ≥ 3.10 | 3.10+ matching requires-python in pyproject |
| CUDA / torch | CUDA 12.x-friendly stack | torch ≥ 2.4.1 |
| Extras | FFMPEG on PATH | FFMPEG + optional flash-attn extra |
I burned an evening once because FFMPEG was installed but not on PATH. The model ran; nothing became a playable MP4. Check ffmpeg -version before anything else.
Get the code and create the env (Mochi 1 / genmo 0.1.0)
Official source is the genmoai/mochi repo – not random mirrors.
git clone https://github.com/genmoai/mochi
cd mochi
pip install uv
uv venv .venv
source .venv/bin/activate # Windows: .venvScriptsactivate
uv pip install setuptools
uv pip install -e . --no-build-isolation
Want flash-attn (faster attention when it builds cleanly)?
uv pip install -e .[flash] --no-build-isolation
Skip --no-build-isolation and builds get messy. Metadata pulls torch, transformers, gradio, ray, einops, and friends; uv drops them in the venv.
Pro tip: After install, run
python -c "import genmo; print('ok')"immediately. If that fails, stop and reinstall editable before downloading tens of gigabytes of weights.
Download weights – the long pole
Weights live on Hugging Face as genmo/mochi-1-preview. Repo script pulls what the demos expect:
python3 ./scripts/download_weights.py weights/
That fetches dit.safetensors, decoder.safetensors, and encoder.safetensors into weights/. Optional: --hf_transfer (install huggingface_hub[hf_transfer] first) or --fast_model for the FastMochi dit variant.
Script misbehaving? Direct zip at https://weights.genmo.dev/weights.zip, the HF UI, or the magnet in the README. First pipeline run also pulls T5-XXL through the text-encoder factory – budget disk and time for that, not just the three safetensors.
Coffee break territory. Don’t start a second download in parallel on a slow link; you’ll just thrash the disk.
First-time run configuration
CPU offload first. Big modules should not all sit in VRAM at once:
# Gradio UI
python3 ./demos/gradio_ui.py --model_dir weights/ --cpu_offload
# Or headless CLI
python3 ./demos/cli.py --model_dir weights/ --cpu_offload
Programmatic smoke test (paths adjusted to your weights/):
from genmo.mochi_preview.pipelines import (
DecoderModelFactory,
DitModelFactory,
MochiSingleGPUPipeline,
T5ModelFactory,
linear_quadratic_schedule,
)
pipeline = MochiSingleGPUPipeline(
text_encoder_factory=T5ModelFactory(),
dit_factory=DitModelFactory(
model_path="weights/dit.safetensors", model_dtype="bf16"
),
decoder_factory=DecoderModelFactory(
model_path="weights/decoder.safetensors",
),
cpu_offload=True,
decode_type="tiled_spatial",
)
video = pipeline(
height=480,
width=848,
num_frames=31,
num_inference_steps=64,
sigma_schedule=linear_quadratic_schedule(64, 0.025),
cfg_schedule=[6.0] * 64,
batch_cfg=False,
prompt="A red fox walking through shallow snow at dusk, cinematic lighting",
negative_prompt="",
seed=12345,
)
decode_type="tiled_spatial" exists so VAE decode does not blow memory in one shot. Start at 31 frames / 64 steps; climb only after one clean success. After you fine-tune, demos take --lora_path /path/to/lora.safetensors (LoRA path landed in the Nov 26 2024 README news).
Verify the install actually works
The catch is simple: no health endpoint. Success is a playable file and a quiet GPU.
- Package:
python -c "import genmo; import genmo.mochi_preview"– no ImportError. - Weights:
ls -lh weights/shows the three big safetensors files. - FFMPEG:
ffmpeg -version. - Launch Gradio or CLI with
--cpu_offloadand a short prompt. Watchnvidia-smifor staged load/offload, not one giant allocation. - Open the written video. Latent tensors or PNG dumps only means export/FFMPEG failed.
Common install errors and fixes
ImportError: No module named ‘mochi_preview’ (or under genmo). GitHub issue #43 is the usual trail after a half-finished editable install. Fix: git pull, then re-run uv pip install -e . --no-build-isolation inside the activated venv. Don’t PYTHONPATH the src tree and hope.
CUDA OOM – yes, even on a single A100 80GB (issue #126). Always pass --cpu_offload, keep tiled decode, cut num_frames/steps first, kill other GPU jobs. Still stuck? Diffusers with enable_model_cpu_offload() + VAE tiling is the practical fallback; upstream’s flexible path really sits near that ~60GB baseline.
flash-attn build fails. Drop the [flash] extra. Default attention still runs; you only lose the speedup.
Blurry or warped extreme motion. Preview checkpoint limitation (README/HF card), not your drivers. Photoreal prompts fare better than pure animation; weak animated styles are called out upstream.
Upgrade, alternatives, uninstall
No classic semver train for the weights – still “Mochi 1 preview.” Refresh code only:
cd mochi
git pull
source .venv/bin/activate
uv pip install -e . --no-build-isolation
Re-download weights only when HF files change. Fine-tunes use demos/fine_tuner/ and typically want an 80GB-class GPU.
Prefer Diffusers? Load MochiPipeline.from_pretrained("genmo/mochi-1-preview", variant="bf16") from a recent diffusers install with cpu offload and VAE tiling – see the Diffusers Mochi docs. Sub-24GB cards: ComfyUI native nodes (README news: Nov 5 2024) beat forcing this repo.
Cleanup:
deactivate
rm -rf mochi/ # or keep the folder and only drop .venv + weights
# optional: purge HF cache if you need the disk back
# rm -rf ~/.cache/huggingface/hub/models--genmo--mochi-1-preview
Also kill systemd/tmux sessions still holding GPU memory.
FAQ
Is Mochi 1 a drop-in Sora alternative open source replacement right now?
For local, Apache-licensed 480p with strong motion: yes – one of the strongest open options. Not feature-parity with closed 1080p products. HD 720p still has no public ETA (GitHub issue #132 remains open; README still marks 480p preview).
Can I run it on a single RTX 4090?
Not with the stock upstream demos. You’ll OOM unless you leave this repo for community quantization or ComfyUI graphs that unload the text encoder and pack lower precision. Rent an H100-class box for the reference path, or accept Diffusers bf16 + tiling (~22GB in documented examples) – knowing that path is not identical to Genmo’s native quality settings. Offload latency is real; budget wall-clock, not just VRAM.
Do I need the Gradio UI?
No. CLI and the Python API cover batch work. Gradio is a first-night convenience so you can poke prompts without editing scripts. When a seed and CFG schedule stick, script it and walk away.
Next action: clone the repo, create the uv venv, and run the editable install before weights. Confirm import genmo works. After that you’re waiting on disk and GPU memory.