Mochi 1 preview 是 Genmo 开源的文生视频模型,主干是一个 10B 参数的非对称扩散 Transformer(AsymmDiT):48 层、24 个注意力头,视觉流 3072 维、文本流 1536 维,QKV 和输出投影都是非方阵,靠这种不对称把推理显存压下来。配套的 AsymmVAE 只有 362M 参数,却做到空间 8×8、时间 6× 的压缩,把视频压进 12 通道潜空间,整体压缩比 128×。提示词侧只挂了一个 T5-XXL,没有第二编码器,权重和授权都干净——Apache 2.0,商用不用问。
它的显存故事分三档,差距接近三倍,原因不玄学:T5-XXL、DiT、VAE 这三段各自用什么精度装。genmo/mochi 官方仓库为了保真度,文本编码器和 VAE 跑 fp32、DiT 跑 bf16 并锁 EFFICIENT_ATTENTION 内核,单卡约需 60GB 显存,官方建议至少 1 张 H100;diffusers 的 MochiPipeline 全精度路径要 42GB 起步,换成 variant="bf16" 并打开 enable_model_cpu_offload() 与 vae.enable_tiling() 后降到 22GB,官方注明画质有轻微下降;ComfyUI 自 2024 年 11 月起原生支持,配 Comfy-Org 重打包的 mochi_preview_fp8_scaled.safetensors,官方口径是 20GB 显存以内就能跑。真正会把你顶到 OOM 的往往不是采样,而是 VAE 解码:帧数一上去就得开 tiled decode,官方复现脚本里那条 163 帧、全精度解码的例子直接标注需要 70GB。
还有几处只有踩过才知道的坑:pipeline 的 num_frames 默认只有 19 帧,按 30fps 算就是 0.6 秒,不改参数你会以为模型坏了;微调脚本要求帧数落在 6 的倍数加一上,也就是 25、31、37…… 一直到 85;diffusers 明确不支持加载 fp8 scaled 的单文件权重,拿 ComfyUI 那份 fp8 去喂 from_single_file 一定失败;开了 force_zeros_for_empty_prompt 又把整条流水线塞进 autocast,T5 会数值溢出,文本编码这一步得拎到全精度里单独跑。这些都是本地部署当天就会撞上的,不如直接在 NexGPU 上按秒开一台合适显存的卡,把三小时的试错做完再决定要不要长期占机器。
01 —
Mochi 有哪些权重路径,各自吃多少显存
公开权重至今只有 mochi-1-preview 一档,区别全在加载精度和推理框架上。
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| mochi-1-preview(genmo 官方仓库推理) | DiT 10B + AsymmVAE 362M | 单卡约 60GB,官方建议 1×H100 | 480×848 · 30fps | 保真度最高的一条路:T5 与 VAE 走 fp32、DiT 走 bf16 并锁 EFFICIENT_ATTENTION 内核。支持把模型切到多张卡上,也支持 --cpu_offload 换时间。 |
| diffusers MochiPipeline 全精度 | 10B | ≥42GB(须开 cpu_offload + VAE tiling) | num_frames 最高做到 163 帧(≈5.4 秒) | 官方文档标注画质最好但门槛最高;如果还要在全精度下解码 163 帧潜变量,显存需求会抬到 70GB,减帧数或把解码降到 bf16 是标准做法。 |
| diffusers variant="bf16" | 10B | 约 22GB | 默认 480×848 / 19 帧 / 64 步 / CFG 4.5 | 性价比最高的 Python 路径,官方注明画质有轻微下降。必须同时调用 enable_model_cpu_offload() 和 vae.enable_tiling(),少一个就顶显存。 |
| mochi_preview_fp8_scaled.safetensors(Comfy-Org 重打包) | 10B | 20GB 以内 | 提示词上限 256 token | ComfyUI 原生节点自 2024-11-05 起支持,单文件 checkpoint 直接丢进 models/checkpoints。注意 diffusers 不支持加载这份 fp8 scaled 单文件。 |
| mochi_preview_bf16.safetensors + t5xxl_fp16 + mochi_vae(三件套) | 10B | 高于 fp8 档;帧数一多瓶颈落在 VAE 解码 | 480×848 | 拆开的 ComfyUI 加载方式,分别放进 diffusion_models / text_encoders / vae 目录。显存吃紧时官方建议把 bf16、fp16 换成对应的 fp8 文件。 |
| LoRA 微调(demos/fine_tuner) | 在 10B 主干上训 LoRA | 37 帧约 50GB;85 帧约 80GB | 帧数必须是 6 的倍数加一:25 / 31 / 37 … 85 | 官方脚本只支持单卡,推荐 1×H100 或 A100 80GB。37 帧下约 1.67 s/it,1000 步约半小时,200–400 步就能看出风格变化。 |
02 —
该租哪张卡
按你实际要做的事对号入座,显存不够就别硬上——Mochi 的 VAE 解码不会给你留面子。
ComfyUI 跑 fp8_scaled,做提示词试错和 480p 出片
RTX 4090 24GB$0.540/卡·时
官方口径 ComfyUI 路径 20GB 显存以内可跑,24GB 正好给 VAE 解码留一点余量。
diffusers bf16 变体,或者要把帧数加到 85 帧以上
RTX 5090 32GB$0.723/卡·时
bf16 路径文档标注 22GB,32GB 让 tiled VAE 解码和更长片长不至于卡在临界点上反复重跑。
genmo 官方仓库单卡全精度推理,或 163 帧全精度解码
A100 PCIE 80GB$0.824/卡·时
官方 60GB 与全精度解码 70GB 这两个上限都落在 80GB 之内,单价还不到 H100 SXM 的四分之一。
LoRA 微调,尤其是 85 帧那一档(官方脚本仅单卡)
A100 SXM4 80GB$1.088/卡·时
85 帧微调要 80GB,SXM4 的带宽让 1.67 s/it 这条曲线更稳;只想压墙钟时间可以换 H100 SXM 80GB $3.582/卡·时。
03 —
在 NexGPU 上把 Mochi 跑起来
从开机到出第一条 480p 视频,四步,权重下载通常是最慢的一步。
- 01
开一台带够显存的实例
在 console.nexgpu.net 选机型:只做 ComfyUI 评估选 RTX 4090 24GB,走官方仓库或要微调就直接上 A100 80GB。镜像库里 2,000+ 预置镜像有现成的 PyTorch 与 ComfyUI,省掉装驱动和 CUDA 的两小时。开机后 SSH、Jupyter、Web 终端三种进法随便挑。
ssh root@<你的实例地址> - 02
装 genmo/mochi 官方仓库
官方用 uv 管依赖,注意 --no-build-isolation 这个参数不能省。flash-attn 是可选项,装了推理更快;另外记得把 ffmpeg 装上,否则最后一步导不出 mp4。
git clone https://github.com/genmoai/mochi && cd mochi && pip install uv && uv venv .venv && source .venv/bin/activate && uv pip install -e . --no-build-isolation - 03
拉权重到本地卷
官方脚本会把 DiT、AsymmVAE 和 T5-XXL 一起拉下来放进 weights/。这一步走的是网络不是显存,建议直接落到实例的持久化存储上,之后重开机器不用重下。存储按 $0.414/GB·月 中位价计费,实例停了算力就停止计费,卷不销毁存储继续算。
python3 ./scripts/download_weights.py weights/ - 04
出片:CLI、Gradio,或换 diffusers 省显存
显存紧张就加 --cpu_offload;想要网页界面把 cli.py 换成 demos/gradio_ui.py,参数一样。已经训好的 LoRA 用 --lora_path <path/to/my_mochi_lora.safetensors> 挂上去即可。如果你只有 24GB 到 32GB 的卡,改走 diffusers:MochiPipeline.from_pretrained("genmo/mochi-1-preview", variant="bf16", dtype=torch.bfloat16) 再配 enable_model_cpu_offload() 与 vae.enable_tiling(),22GB 就能跑,别忘了把 num_frames 从默认的 19 改大。
python3 ./demos/cli.py --model_dir weights/ --cpu_offload
一次 Mochi 部署到底花多少钱
先算一轮 ComfyUI 评估:RTX 4090 24GB $0.540/卡·时,租 3 小时把提示词、帧数、CFG 都试一遍,算力 3 × $0.540 = $1.62;权重和输出给一个 40GB 的卷,存储按 $0.414/GB·月 中位价是 40 × $0.414 = $16.56/月,只留 3 天折算 $16.56 × 3 ÷ 30 ≈ $1.66;把 2GB 成片拉回本地,出网按 $0.0081/GB 中位价是 $0.016。合计约 $3.30——比你为这件事单独买张卡便宜四个数量级。再算一次 LoRA 微调:官方 fine_tuner 在 37 帧下约 1.67 s/it,跑满 1000 步就是 1670 秒 ≈ 0.46 小时,A100 SXM4 80GB $1.088/卡·时,纯训练 0.46 × $1.088 ≈ $0.51;加上下权重和预处理,整段按 1.5 小时算 1.5 × $1.088 = $1.63。同样这 1.5 小时放到 H100 SXM 80GB 是 1.5 × $3.582 = $5.37——因为官方微调脚本只支持单卡,H100 买到的只是墙钟时间,多数人没必要。全程按秒计量、按小时定价,没有最低消费、没有开通费、不用提配额申请,实例一停算力立刻停止计费。
04 —
