minimax-h3-nvfp4-convrot核心原理:逐层量化配置如何把33B模型压进20GB(NVFP4+FP8+BF16混合深度解析)
minimax-h3-nvfp4-convrot 是一套面向 MiniMax H3(33B 参数全能视频+音频生成模型)的NVFP4 / INT4 量化 ComfyUI 单文件检查点。它通过「逐层量化配置 + AdaLN 剪枝 + INT8 ConvRot」三步组合拳,把原本约 66GB 的 BF16 模型压缩到20GB,让 RTX 50 系消费级显卡也能本地跑 768p、24fps、4–15 秒的音视频联合生成。本文将这套 33B 模型压缩的核心原理拆解给你看,不需要你预先掌握量化理论。🎬
一、先认识这个项目:7 个量化文件各管一摊
文件名遵循minimax_h3_<fl2va|ref2va>_<variant>.safetensors的命名规则:
fl2va(首尾帧模式):不传图 = 文生视频,传 1–2 张图 = 帧条件生成ref2va(全能参考模式):最多支持 9 张图 / 3 个视频片段 / 3 个音频片段
| 变体 | 大小 | 显卡要求 | 定位 |
|---|---|---|---|
pruned_nvfp4_convrot_int8 | 20 GB | 仅 Blackwell | ✅ 官方推荐,已实测 |
pruned_nvfp4_fp8 | 20 GB | 仅 Blackwell | FP8 速度对照组 |
pruned_nvfp4 | 20 GB | 仅 Blackwell | 同尺寸但更慢 |
nvfp4(未剪枝) | 34 GB | 仅 Blackwell | 无法用剪枝路径时的保底 |
pruned_mixed_int4_int8_convrot_simple | 20 GB | 任意显卡 | ⚠️ 实验性,质量未评估 |
pruned_int4_convrot_simple | 17 GB | 任意显卡 | ⚠️ 实验性 |
int4_convrot_simple | 25 GB | 任意显卡 | ⚠️ 实验性,未剪枝 |
注:三个 INT4 变体只有
fl2va版本。完整说明见 README.md。
二、核心原理 1:逐层量化配置——为什么"混合格式"胜过"一刀切"
问题的本质
如果把 33B 参数全部压成 4-bit,看似最省,实际上会出问题:模型里不同层对精度的敏感度天差地别。一刀切量化等于"用同一把钥匙开所有的锁"。minimax-h3-nvfp4-convrot 的做法是给每一类层分配最合适的数值格式——这就是逐层量化配置(per-layer quantization profile)。
三档格式分布
| 层 | 格式 | 层数 | 选择理由 |
|---|---|---|---|
blocks.2–46的 MLP(mlp.fc1/mlp.fc2) | NVFP4(4-bit 浮点) | 90 | 参数量大头,压缩收益最高,Blackwell 原生支持 |
blocks.2–46的attn.qkv_proj、adaln_proj.linear | FP8(8-bit 浮点,tensor-wise scale) | 90 | 注意力投影存在离群值能量,需要更宽的动态范围 |
前 2 块 + 后 3 块(blocks.0,1,47,48,49)、attn.out_proj、全部输入/输出投影 | BF16 原样保留 | 86 | 边界层与 I/O 投影对精度高度敏感 |
其中有一个很巧妙的判断依据:原始检查点里,这批"敏感层"本来就是以 F32 存储的——模型作者用高精度存它们,本身就是"这里不能压"的信号。📌
读懂配置文件
整套逐层规则写在 minimax_h3_layer_config.json 中,核心就是正则表达式 → 格式 的映射:
{ "blocks\\.0\\.|blocks\\.1\\.|blocks\\.47\\.|blocks\\.48\\.|blocks\\.49\\.": {"skip": true}, "time_embedder": {"skip": true}, "attn\\.out_proj": {"skip": true}, "adaln_proj\\.linear": {"format": "float8_e4m3fn", "scaling_mode": "tensor"}, "attn\\.qkv_proj": {"format": "float8_e4m3fn", "scaling_mode": "tensor"} }规则很直观:skip: true表示原样保留(BF16);匹配到的层转 FP8;没被任何规则匹配到的层(即 MLP 的 fc1/fc2)走默认的 NVFP4。量化由convert-to-quant(简称ctq)CLI 执行:
ctq -i minimax_h3_fl2va_bf16.safetensors \ -o minimax_h3_fl2va_nvfp4.safetensors \ --nvfp4 --custom-type fp8 \ --layer-config minimax_h3_layer_config.json \ --comfy_quant --save-quant-metadata产物共 985 个张量,其中 180 层被量化(90 NVFP4 + 90 FP8),并通过_quantization_metadata元数据校验。这一步完成后,模型从 ~66GB(BF16)降到34GB——但离 20GB 还差一截。
三、核心原理 2:AdaLN 剪枝——34GB 变 20GB 的关键
一个被发现的冗余
H3 的 AdaLN(自适应层归一化)调制网络占了13.1B / 33.1B 参数,接近 40%。但 Comfy-Org 的分析发现:这部分权重的输出只取决于扩散时间步(timestep),与生成内容无关——那么在一组固定的推理时间步上,它可以整体坍缩成一张小小的查找表,且输出质量无损失。
剪枝具体做了什么
在 NVFP4/FP8 检查点基础上做张量移植:
- 删掉:
time_embedder.*和每个 block 的*.adaln_proj.linear.{weight,bias}(每块[96768, 2688],就是那 13.1B 参数) - 加入:
adaln_t_table([1025, 8],F32 查找表)+ 坍缩后的adaln_proj.linear([96768, 8],F16) - 其余张量一律不动
结果:34 GB →20 GB,张量数从 985 减到 892。ComfyUI 的MiniMaxH3Model会通过adaln_t_table.shape[1]自动识别这是剪枝架构并正确加载。
⚠️ 一个隐蔽的坑:剪枝文件里不能携带
config元数据块。否则父文件遗留的time_embed_dim: 2688会覆盖基于形状检测得到的正确值,导致加载失败。
四、核心原理 3:INT8 ConvRot——同尺寸下让注意力更快
推荐版pruned_nvfp4_convrot_int8在 20GB 基础上还有一招加速:ConvRot(分组 Hadamard 旋转)。
原理一句话:INT8 的动态范围很窄,容易"装不下"离群值能量;ConvRot 在量化前按固定分组对权重做 Hadamard 预旋转,把离群能量摊平,让 INT8 能稳稳住下——逼近 FP8 的精度,同时 INT8 张量核心吞吐量通常高于 FP8,算得更快。
关键工程细节:
- 从原始 BF16 权重量化,而不是从 FP8 张量转——二次转换会叠加量化误差
- 采用"抽取 → 独立量化 → 拼回"的三步管线,而不是整体重量化
- 旋转分组大小 256(45 个
attn.qkv_proj层的in_features=5376可被 256 整除,--dynamic-convrot自动选取每个层最大的兼容组大小)
ctq -i <extracted>.safetensors -o <convrot_out>.safetensors \ --int8 --scaling-mode row --dynamic-convrot --convrot-group-size 256 \ --comfy_quant --save-quant-metadata张量总数保持 892 不变,只是这 45 个层从 FP8 tensor-scale 换成了 INT8 row-scale + ConvRot 元数据。文件同尺寸,推理更快。而adaln_proj.linear特意不享受同样待遇——剪枝已把它坍缩成[* , 8]的 F16 查找表,没什么可压的了。
同尺寸的pruned_nvfp4_fp8文件则保留 FP8 版attn.qkv_proj,专门用来和 ConvRot 版做 A/B 速度对比。
五、非 Blackwell 显卡的逃生通道:INT4 W4A4 ConvRot
如果你的显卡不是 RTX 50 系 / B100 / B200(NVFP4 硬性要求 Blackwell 架构,SM ≥ 10.0,没有旧卡回退方案),仓库提供了三个 INT4 变体作为实验性选项:
- W4A4:对激活和权重都做分组 Hadamard 旋转后再做 4-bit 量化,免重训练即可运行
- 采用
--simple模式(RTN 圆整,无学习型圆整),质量未评估——目前只确认能端到端加载并生成 - 配套配置见 minimax_h3_layer_config_int4_convrot.json,其中
mlp.fc1/mlp.fc2/attn.qkv_proj/adaln_proj.linear全部标记为int4_convrot_w4a4
混合精度变体pruned_mixed_int4_int8_convrot_simple(20GB)则参考 ConvRot 论文的思路:全 W4A4 会在平滑、低频区域因 INT4 表达力不足而明显掉质量(论文实测 FID 从 10.07 恶化到 12.32),解法是把约20% 的层(这里是 48 个层)提升为真正的 INT8 ConvRot。该提升清单直接取自社区混合量化方案的元数据,作为起点而非针对 H3 精调的结果。
📌 结论先行:NVFP4 系列之所以被推荐,是因为它用的是保守、成熟的格式且已确认工作,而不是因为跑过质量基准——仓库中所有变体的质量都没有实测数据。
六、快速选型指南
| 你的情况 | 选哪个文件 |
|---|---|
| RTX 50 系 / B100 / B200,文生或图生视频 | minimax_h3_fl2va_pruned_nvfp4_convrot_int8.safetensors(20GB,推荐) |
| 多参考素材(图/视频/音频混合) | minimax_h3_ref2va_pruned_nvfp4_convrot_int8.safetensors |
| 非 Blackwell 显卡,内存 ≥24GB | minimax_h3_fl2va_pruned_mixed_int4_int8_convrot_simple.safetensors(20GB,实验性) |
| 非 Blackwell,内存紧张 | minimax_h3_fl2va_pruned_int4_convrot_simple.safetensors(17GB,实验性) |
| 不在 ComfyUI 中使用,求稳 | 未剪枝的nvfp4版(34GB) |
七、使用前提与已知限制
- 硬件:所有
nvfp4文件(包括convrot_int8系列)都需要 Blackwell;INT4 变体可跑在任意显卡,但comfy-kitchen的 W4A4 内核只在 Ampere/Ada(SM major == 8)上使用原生 INT4 张量核心 MMA,Blackwell 上会走 INT8 激活路径,速度上没有优势 - 配套模型:还需从 Comfy-Org 的 H3 仓库下载文本编码器(Qwen3-VL 32B,体积不小,其
nvfp4_awq版本与这些文件在 Blackwell 上搭配良好)和 VAE,分别放入 ComfyUI 的models/text_encoders和models/vae目录 - 剪枝版依赖:剪枝文件依赖 ComfyUI 基于张量形状的架构检测,在 ComfyUI 之外使用时未剪枝版本更稳
- 授权:MiniMax H3 Community License Agreement,全文收录于 LICENSE
八、仓库文件一览
| 文件 | 说明 |
|---|---|
| minimax_h3_fl2va_pruned_nvfp4_convrot_int8.safetensors | 20GB,推荐版(首尾帧模式) |
| minimax_h3_ref2va_pruned_nvfp4_convrot_int8.safetensors | 20GB,推荐版(全能参考模式) |
| minimax_h3_fl2va_nvfp4.safetensors | 34GB,未剪枝 NVFP4 基准 |
| minimax_h3_layer_config.json | NVFP4+FP8+BF16 逐层量化配置(核心资产) |
| minimax_h3_layer_config_int4_convrot.json | INT4 W4A4 ConvRot 逐层配置 |
| README.md | 完整文档:变体对比、量化方法、剪枝与 ConvRot 细节 |
| LICENSE | MiniMax H3 社区授权协议 |
总结:三步压出 20GB
回顾这套 minimax-h3-nvfp4-convrot 的 33B 模型压缩方法论,本质是三个正交手法的叠加:
- 逐层量化配置:90 层 MLP 压 NVFP4、90 层注意力/调制投影压 FP8、86 层敏感层保留 BF16——用 minimax_h3_layer_config.json 一个文件精确指挥,66GB → 34GB
- AdaLN 剪枝:删掉只依赖时间步的 13.1B 调制参数,换一张 8 列查找表——34GB → 20GB
- INT8 ConvRot:把注意力 QKV 换成旋转后的 INT8,体积不变、算力路径更快——同尺寸下的纯加速收益
对新手来说最有价值的启示是:量化不是"选个 4-bit 跑一遍",而是按层的角色分配精度的工程决策——这份逐层配置文件,才是本项目真正的方法论核心。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考