跳到主要内容

视频生成模型

Mochi 1 preview 本地部署:20GB 显存起跑,80GB 能微调

Genmo 的 10B AsymmDiT 文生视频模型,Apache 2.0 全量开源。这一页把 480p、163 帧、fp8 与 bf16 之间的真实显存账算清楚,并给出对应的 NexGPU 机型和单价。

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×H100480×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 重打包)10B20GB 以内提示词上限 256 tokenComfyUI 原生节点自 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 主干上训 LoRA37 帧约 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 视频,四步,权重下载通常是最慢的一步。

  1. 01

    开一台带够显存的实例

    在 console.nexgpu.net 选机型:只做 ComfyUI 评估选 RTX 4090 24GB,走官方仓库或要微调就直接上 A100 80GB。镜像库里 2,000+ 预置镜像有现成的 PyTorch 与 ComfyUI,省掉装驱动和 CUDA 的两小时。开机后 SSH、Jupyter、Web 终端三种进法随便挑。

    ssh root@<你的实例地址>
  2. 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
  3. 03

    拉权重到本地卷

    官方脚本会把 DiT、AsymmVAE 和 T5-XXL 一起拉下来放进 weights/。这一步走的是网络不是显存,建议直接落到实例的持久化存储上,之后重开机器不用重下。存储按 $0.414/GB·月 中位价计费,实例停了算力就停止计费,卷不销毁存储继续算。

    python3 ./scripts/download_weights.py weights/
  4. 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 —

常见问题

Mochi 本地部署最低需要多大显存?

官方给的最低门槛是 ComfyUI 路径 20GB 显存以内;Python 侧最省的是 diffusers 的 bf16 变体,22GB,前提是同时开 enable_model_cpu_offload() 和 vae.enable_tiling()。要注意这是采样阶段的数字,帧数拉长后 VAE 解码才是真正的顶点。在 NexGPU 上对应 RTX 4090 24GB $0.540/卡·时,按秒计费,试一小时不到六毛钱。

24GB 的 RTX 4090 能跑 Mochi 吗?

能,走 ComfyUI 原生节点加 mochi_preview_fp8_scaled.safetensors 这条路,官方标注 20GB 以内。如果你要用 bf16 权重、或者把帧数推到 85 帧往上,24GB 会在 VAE 解码那一步告急,社区的做法是开 tiled decode 或换更大显存。NexGPU 的 RTX 5090 32GB $0.723/卡·时 和 RTX A6000 48GB $0.817/卡·时 都是现成的下一档,换机型不用重新申请配额。

Mochi 能生成 720p 吗?

不能,至少公开权重不能。Genmo 放出来的只有 mochi-1-preview 这一档,输出固定 480p,pipeline 默认分辨率就是 480×848,官方模型卡的原话是初版在 480p 生成。想要更高分辨率,现实做法是 Mochi 出底片、再接一段视频超分模型。这种两段式流水线正好适合按秒租:NexGPU 一个节点最多挂 14 张卡、单节点显存上限 2,152GB,两个模型可以同机常驻。

Mochi LoRA 微调需要什么卡?多久能看到效果?

官方 demos/fine_tuner 明确写着 1×H100 或 A100,建议 80GB 显存:37 帧要 50GB,85 帧要 80GB,而且脚本只支持单卡,堆多卡没用。37 帧下约 1.67 s/it,200 到 400 步就能看到风格变化,1000 步约半小时。对应 NexGPU 的 A100 SXM4 80GB $1.088/卡·时,跑完一轮不到两美元。

Mochi 一次能生成多长的视频?帧数有什么限制?

按 30fps 计,官方复现示例做到 163 帧、约 5.4 秒,但全精度解码这 163 帧需要 70GB 显存;常用的是 85 帧、约 2.8 秒。微调侧限制更硬:帧数必须是 6 的倍数加一,25、31、37 一直到 85。还有个容易踩的默认值——pipeline 的 num_frames 默认只有 19 帧,不改就是 0.6 秒。想把这些边界一次试完,NexGPU 的 A100 PCIE 80GB $0.824/卡·时 能一口气覆盖到 163 帧那一档。

为什么我用 diffusers 加载 ComfyUI 那份 fp8 权重会失败?

这是官方文档写明的限制:diffusers 目前不支持用 from_single_file 加载 fp8 scaled 版本的 Mochi 单文件权重。要走单文件就用 mochi_preview_bf16.safetensors,或者干脆 from_pretrained 直接拉 genmo/mochi-1-preview。另一个同源的坑是开了 force_zeros_for_empty_prompt 再把整条流水线包进 autocast,T5 编码会数值溢出,文本编码那一步要单独拎到全精度跑。NexGPU 的 2,000+ 预置镜像里 PyTorch、ComfyUI、Stable Diffusion 都是配好的,Telegram 上有中英双语支持,不排队。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。