Skip to content

Install Mochi 1 Preview: Open Sora Alternative

Deploy Genmo Mochi 1 preview (package 0.1.0), the open-source Sora alternative. Exact uv install, weights download, VRAM specs, and real error fixes.

6 min readIntermediate

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.

  1. Package: python -c "import genmo; import genmo.mochi_preview" – no ImportError.
  2. Weights: ls -lh weights/ shows the three big safetensors files.
  3. FFMPEG: ffmpeg -version.
  4. Launch Gradio or CLI with --cpu_offload and a short prompt. Watch nvidia-smi for staged load/offload, not one giant allocation.
  5. 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.