← Tony's Lab
Latent Darkroom · 技术拆解

MiniMax H3:从噪声到画面
视频生成模型是怎么炼成的

面向普通程序员的技术原理与训练方法讲解。压缩 → 生成 → 解码 → 放大,四步理解这类模型;所有信息标注出处,可逐条核查。

33B Omni Transformer 2K / 15s / 24fps 音频 40Hz tokens 出处 8 项
发布于 2026-08-12 · 基于官方博客与模型卡整理 · 技术报告尚未发布
FRAME 01

全景:视频生成的四步流水线

全景

先破除一个误解:视频生成 ≠ 直接生成像素。所有这类模型(H3、Sora、Seedance 等都是)都走同一条四步流水线:

压缩 ──▶ 生成 ──▶ 解码 ──▶ 放大 VAE 编码 Transformer 预测 latent VAE 还原像素 超分 / 再生 [120帧 720p 视频] │ ▼ VisualVAE:时间压 4×,空间压 16× → patchify 1×2×2 [30 帧 × 920 patch × 24 通道] ≈ 27,600 个视觉 token │ ▼ 33B Omni Transformer 预测"去噪方向" [latent 序列 + 文本 token + 音频 token 混在一起] │ ▼ 两个 VAE 解码 [视频帧] + [32kHz 立体声音频] │ ▼ 768p 结果 + 原始上下文 → 重新生成 2K

为什么不能直接在像素上生成?一段 10 秒 1080p 视频是几十亿个数字,Transformer 根本塞不下。所以要先压缩成「视频 token」——这就是 VAE(自编码器)干的活,可以类比成可学习的 JPEG:把视频压成紧凑的 latent 表示,之后还能解码回画面。[2]

FRAME 02

分词器:H3-VAE 双件套

Tokenizer

H3 是音视频双通道压缩,视觉和音频各用一个 VAE。[2]

H3-VisualVAE — 视频的分词器

属性规格
类型时间因果视频自编码器(temporally causal)
空间压缩16×(进 Transformer 前再 patchify 1×2×2,等效 32×)
时间压缩4×(5 秒 120 帧 → 30 个 latent 帧)
通道数24 个 latent 通道(代号 f16t4d24)
解码器额外训练了一个 ViT 解码器,降低解码成本、提升重建质量

H3-AudioVAE — 音频的分词器

属性规格
压缩率32kHz 音频 → 每秒 40 个 latent token(每 25ms 一个)
立体声左右声道共用同一套编解码器,各通道独立处理再合并
设计目标受 VA-VAE 启发,latent 空间同时优化「重建质量」和「易学性」
为什么压缩是核心竞争力? token 数量 = 训练和推理成本。官方称 H3-VAE 相比上代带来 4 倍序列长度压缩[3],直接砍掉训练/推理成本,也是能原生支持 2K 的前提——压缩率不够,2K 根本喂不进模型。[1]
FRAME 03

生成核心:33B Omni Transformer

Backbone

这是真正的「大模型」部分。几个关键设计,都是围绕「任务通用化」而不是花哨结构。[2]

关于生成框架的一点说明:官方没有明说用扩散还是流匹配,但开源权重标注为 CFG-distilled(classifier-free guidance 蒸馏是扩散/流匹配家族的标准操作),加上前代 Hailuo 走扩散路线——这是业内普遍接受的推断,不是官方确认。
FRAME 04

怎么训练的:举例说明

Training

核心思想一句话:用语言统一一切任务。不再按任务分模型(文生视频一个、图生视频一个、编辑一个、配音一个……),而是把所有任务统一成「给定多模态上下文 + 自然语言指令 → 生成视频+音频」。

① 一个训练样本长什么样

用官方模型卡里 Ref2VA 的真实例子:[2]

📁 训练样本(Ref2VA 典型) ├── 输入素材 │ ├── 🎬 参考视频(3秒):粉西装青年抱着黑色小羊羔站在草地上 │ ├── 🎵 音频1:背景音乐(来自参考视频) │ ├── 🎙️ 音频2:人声参考(一段平静男声旁白) │ └── 📝 文字指令:"让主角开口说 Follow the wind, live free. │ 声音音色参考音频2,背景音乐保留音频1" └── 目标答案(GT) ├── 🎬 新视频:同一人开口说话,口型同步,羊羔还在怀里 └── 🎵 新音频:台词 + 保留的 BGM

但素材不能直接喂给生成模型。先有一个理解系统(H3-Context-IR)把它们翻译成结构化文字——模型卡里的真实输出长这样:[2]

subject_definitions: <Subject 1> 是穿粉色西装抱黑羊羔的男人,来自 <Video 1>...
retention_analysis: <Subject 1> 完全保留;<Audio 1> 部分复用;
                    <Audio 2> 作为音色参考
detailed_description: [Shot 1] 画面从 <Video 1> 开始,男人开口说话,
  口型与台词同步,音色参考 <Audio 2> 的平静男声...
overall_soundscape: BGM 持续 + 台词叠在上面...
non_diegetic_music: 背景音乐沿用 <Audio 1>...

为什么非得翻译成文字?因为语言是「万能接口」——模型只需要学会一件事:读文字,出音画。视频编辑、图生视频、配音、运镜参考……全变成「一段描述」,不用为每个任务单独学一套输入格式。这就是官方说的 Contextual Omni Representation:语言是任务之间可泛化的桥梁。[1]

② 模型实际「看到」的数字

素材翻译成文字后,和目标视频一起被压成 token。算一笔账(目标视频 5 秒 720p):

视频:5 秒 × 24fps = 120 帧
120 帧
VisualVAE 时间压缩 4× → latent 帧
30 帧
空间压缩 32× → 每帧 patch(约 40×23)
≈ 920 个
视觉 token 合计
≈ 27,600
音频:5 秒 × 40Hz(左右声道)
200 个
结构化文字描述
≈ 500–2,000
一个样本总计(混合成一条长序列)
≈ 30,000 tokens
对比 LLM:GPT 一条训练样本通常几百到几千 token。视频样本是它的 10~100 倍——这就是 H3 拼了命压 token(4 倍压缩)、后期还要上稀疏注意力的原因。多模态上下文还让序列长度方差扩大 3 倍。[1]

③ 一次训练迭代(核心中的核心)

H3 属于扩散/流匹配家族。训练时模型从不直接看「最终视频」,它学的是「从带噪声的版本里把干净版本捞出来」。伪代码:

# 伪代码,每步 ≈ 真实训练逻辑
for batch in dataloader:
    # 1. 取样本:目标视频 latent + 文字描述 + 参考素材
    x0     = visual_vae.encode(target_video)   # [30, 920, 24] 真值
    audio0 = audio_vae.encode(target_audio)    # [200, C]      真值
    text   = tokenize(structured_description)  # 文字条件
    refs   = encode(reference_videos_images)   # 参考素材(Ref2VA)

    # 2. 随机选一个"噪声程度" t(0=干净, 1=纯噪声)
    t = random.uniform(0, 1)

    # 3. 把真值往噪声方向污染:真值 和 纯噪声 的插值
    noise = randn_like(x0)
    x_t   = (1 - t) * x0 + t * noise    # 流匹配写法,扩散类似

    # 4. 模型预测"去噪方向"(速度场 v)
    v_pred = omni_transformer(x_t, audio_noisy, t, text, refs)

    # 5. 损失:预测的恢复方向 vs 真实的恢复方向
    v_true = x0 - noise
    loss = mse(v_pred, v_true)          # 越小越好

    # 6. 反向传播,更新权重(33B 参数一起动)
    loss.backward()
    optimizer.step()

程序员视角的三个要点:

④ 三个阶段,练的东西不一样

阶段 A — 预训练(烧钱阶段)

数据:全网视频 + 语音识别字幕 + 自动 caption + 图文对 + 纯音频。一个 batch 里混着各种任务(文生视频、文生图、图生视频、首尾帧、参考编辑、配乐……),官方原话「混合比例是关键」——比例不对模型就偏科。这阶段结束,模型已经「什么都会一点」。

阶段 B — 指令微调(Context-IR 数据的功劳)

用理解系统把复杂真实任务批量翻译成结构化描述,做成高质量指令数据再训一轮。这就是 H3 指令遵循能力强的原因——它见过几百万个「粉西装抱羊羔」这种带完整关系描述的例子。官方数据:源素材约 100K token 的推理量,蒸馏成平均约 4K token 的中间表示。[1]

阶段 C — 蒸馏 + 加速(工程收尾)

CFG 蒸馏:扩散推理通常要算两遍(有条件 + 无条件)再外插;蒸馏 = 让模型直接模仿「两遍外插」的结果,推理只跑一遍。开源权重是 CFG-distilled 的,所以消费级显卡也能跑。[2] 同时引入稀疏注意力,长序列更省。

⑤ 训练基础设施:为什么需要「几百张卡」

一个样本 3 万 token、batch 上千个 → 单次前向就是几千万 token 的序列,单卡放不下。粗略算:33B 权重 BF16 = 66GB,加梯度 + Adam 优化器状态 ≈ 200GB+ 显存起;训练时用序列并行把长序列切成多卡(模型卡里的 --ulysses-degree 4 就是推理版的同思路)。另外理解任务(prompt 超长、生成短)和生成任务(prompt 短、生成长)负载差异大 → 官方把两类负载拆开、各自调优硬件利用率,端到端训练吞吐提升近 30%。[1]

诚实声明:上面「一个 batch 里 30% 文生视频、25% 文生图…」这类具体比例是我编的示意——官方从未公开混合比例和训练数据规模。文中所有 ≈ 估算同理。
FRAME 05

2K 不用超分,用「再生」

Regenerate-2K

传统超分模型是「猜」细节——小字、纹理经常猜错。H3 的做法(H3-Regenerate-2K):把 768p 低清输出连同原始多模态上下文一起,再喂回 H3 自己,让它重新生成一遍 2K。[1]

768p 结果 + 原始上下文(参考视频/图/音频/指令) │ ▼ 同一个 H3 模型,in-context 重新生成 2K 输出 —— 细节是"找回"的,不是"猜"的 (小文字、品牌标识、纹理这类超分常翻车的地方)

两个好处:① 最大化复用基座模型已有的生成能力;② in-context 形式能重新参考原始素材,恢复传统超分只能「猜」的细节。官方也把这件事当作「任务通用化」的例证。目前该模块未开源,通过 API 提供。[2]

FRAME 06

价格速查:按量付费

Pricing

H3 目前不支持视频资源包(官方文档明确标注 "not supported yet"),只能走按量付费或联系销售定制。以下为 2026-08-12 实时抓取的官方刊例价。[7][8]

中国区 · platform.minimaxi.com (人民币)

视频生成 2K0.80 元/秒
视频生成 768P0.50 元/秒
2K 再生 768P→2K0.30 元/秒
图片素材前 5 张免费 / 0.20 元每张
视频素材按输入时长:2K 0.80、768P 0.50 元/秒
音频素材免费
Context-IR输入 5.80 / 输出 23.00 元每 M tokens

全球站 · platform.minimax.io (美元)

视频生成 2K$0.13 / 秒
视频生成 768P$0.08 / 秒
2K 再生 768P→2K$0.05 / 秒
图片素材前 5 张免费 / $0.04 每张
视频素材按输入时长:2K $0.13、768P $0.08 / 秒
音频素材免费
Context-IR输入 $0.90 / 输出 $3.60 每 M tokens

典型成本(中国区)

一条 10 秒 2K 视频8 元
一条 15 秒 2K(时长上限)12 元
一条 10 秒 768P5 元
768P 出草稿 + 2K 再生(10 秒)5 + 3 = 8 元
Context-IR 预处理(官方示例 token 量)≈ 0.1 元/条
三个容易忽略的点:① 2K 再生的输入素材会重新计费(原始任务的图片/视频再收一遍);② 中国区折算后略低于全球站($0.13 ≈ 0.93 元 vs 0.80 元);③ 官方博客宣称 2K 每秒价格不到主流模型 1/3,按 $0.13/秒确实能打。价格随时可能调整,以官网为准。
FRAME 07

出处与可信度

Sources

全部信息来自公开资料,按可信度分三级。查证建议:任何具体数字优先看 HuggingFace 模型卡(最详细),官方完整技术报告尚未发布(官方称 soon),发布后应以报告为准。

[5]
newsroom.intel.com · 2026-08-03 · 开源硬件兼容佐证
二手报道
[6]
reddit.com · 2026-08 前后 · 社区帖子,未作为正文依据
社区参考
✳
推断部分(非官方确认)
扩散/流匹配框架(依据 CFG-distilled 权重 + 前代 Hailuo 路线);训练数据规模与混合比例(官方未公开,文中比例均为示意);「几百张卡」显存估算(按 33B + Adam 的通用公式推算)。
我的推断
信息时效:页面整理于 2026-08-12。官方完整技术报告(Technical Report)尚未发布;H3-Regenerate-2K 与 H3-Context-IR 暂未开源(API 可用)。后续如有更新以官方渠道为准。