MultimodalFlow
← 返回博客

MiniMax H3 在 Jetson AGX Thor 上的早期公开 Benchmark:FL2VA、Ref2VA 与 INT8 ConvRot 测试方案

MiniMax H3Hailuo 3.0Jetson ThorFL2VARef2VAINT8 ConvRotSGLangComfyUIbenchmark边缘AI

MiniMax H3 刚开放不久,社区里已经开始出现 BF16、FP8、INT8 ConvRot、NVFP4、FL2VA、Ref2VA 等不同版本的讨论。但真正面向 NVIDIA Jetson AGX Thor 的公开测试还很少。

这篇文章的目标不是做一次随手试跑,而是建立一套可复现的早期公开 benchmark:同一台 Thor-JD、同一组输入素材、同一套 API 调用、同一套日志字段,把 FL2VA、Ref2VA 和 INT8 ConvRot 的容量、速度、输出有效性都记录下来。

2026-08-07 更新:继续测试了 Abiray/Minimax-H3-nvfp4-INT4-INT8-Convrot。结论更新为:BF16 FL2VA 在 Thor-JD 上没有跑通;但 NVFP4/ComfyUI 路径已经在 Thor 专用 fire-smoke-train:cu130 容器里跑通 smoke test,生成了有效 MP4。 这次不是完整质量 benchmark,而是 256x2565 frames1 Euler step 的最小链路验证。

2026-08-07 追加:基于 Chipmark 侧记录,Thor-JD 已完成 608x352243 frames20 steps 的 ComfyUI 正式快速基线。Thor Docker CUDA 13 + NVFP4 热跑约 300.03s external / 284.64s ComfyUI,采样约 12.82s/it;同一 INT8 ConvRot FL2VA 权重热跑约 400.04s external / 395.13s ComfyUI,采样约 18.46s/it


一、测试机器:Thor-JD

项目数值
主机100.98.98.105
用户nvidia
设备NVIDIA Jetson AGX Thor
操作系统Linux 6.8.12-tegra,aarch64
NVIDIA-SMI580.00
CUDA13.0
内存122 GiB
存储936 GB NVMe,FL2VA 下载后可用约 266 GB
当前状态测试前停止了 sglang-qwen25-7b 容器以释放内存
测试时间2026-08-06 20:55 CST
SGLang 镜像nvcr.io/nvidia/sglang:26.04-py3
基础 SGLang 版本0.5.10+516d57ac
实测运行栈容器内 source SGLang + PYTHONPATH=/tmp/sglang-src/python + Transformers 5.12.1
swap0 GiB
ComfyUI 实测ComfyUI 0.30.0 + comfy-kitchen 0.2.26
PyTorch 实测失败路径:2.5.1 / CUDA 12.4,不含 Thor sm_110 kernel;成功路径:2.11.0+cu130 / CUDA 13.0,包含 sm_110

Thor 的关键优势不是峰值算力,而是 统一内存容量。MiniMax H3 的原始分区非常大,传统 24 GB 显卡通常需要量化、分层 offload 或多卡;Thor 的 122 GiB 统一内存让它成为一个很适合测试“大模型是否能在边缘设备上跑起来”的平台。


二、MiniMax H3 的测试对象

根据 SGLang MiniMax-H3 文档,H3 是一个视频和同步音频联合生成模型,公开任务分成三类:

任务API task使用的 checkpoint 分区输入条件
Text-to-Video+Audiot2vafl2va仅文本
First/Last-Frame-to-Video+Audiofl2vafl2va第一帧、最后一帧或两者
Reference-to-Video+Audioref2varef2va图像、视频、音频 reference

SGLang 文档特别指出:fl2va 分区同时服务 t2vafl2varef2va 需要单独以 --model-variant ref2va 启动。Video-to-video 不是第四个任务值,而是 ref2va 的一种 reference 用法。

参考链接:


三、为什么单独测 INT8 ConvRot

原始 H3 分区的容量压力很大。社区 INT8 ConvRot checkpoint 的意义在于:它把主要矩阵压到 INT8,同时保留部分 BF16 语义矩阵,目标是让单卡 24 GB 或 32 GB 机器也能跑。

在 Thor 上测 INT8 ConvRot 有两个价值:

  1. 容量验证:Thor 是否能不用激进 offload,稳定装下 FL2VA / Ref2VA。
  2. 速度验证:统一内存大并不等于快,INT8 ConvRot 是否能降低生成时间,需要真机数据。
  3. 质量边界:如果 INT8 ConvRot 明显降低 reference 遵循度,速度提升就不能单独作为结论。

因此 benchmark 不只记录“跑了多久”,还记录输出文件是否有效、视频时长、音频流、分辨率、文件大小和失败原因。


四、Benchmark 协议

固定输出规格

参数数值
输出时长5 秒
帧率目标24 FPS
短边768
音频AAC stereo / 32 kHz,按模型输出为准
steps50
flow_shift12.0
audio_flow_shift3.0
输出数量1

固定测试 case

Case任务分区输入
t2va_text_onlyt2vaFL2VA文本
fl2va_first_framefl2vaFL2VA固定第一帧 PNG
ref2va_image_audioref2vaRef2VA固定 reference PNG + WAV
ref2va_videoref2vaRef2VA固定 MP4 reference

记录指标

指标含义
Load result模型是否能完成加载
Submit latency/v1/videos 提交请求耗时
Total generation time从提交到状态 completed 的总耗时
RTF生成耗时 / 输出视频时长,越低越好
Output validityMP4 是否可下载、ffprobe 是否能解析
Video metadata时长、分辨率、编码、帧率
Audio metadata是否有音频流、采样率、声道
Memory note加载前后系统内存、峰值内存、是否 OOM

五、复现脚本

本仓库新增了一个可复现测试目录:

scripts/minimax-h3-benchmark/

生成固定素材:

cd scripts/minimax-h3-benchmark
python3 -m pip install pillow
python3 make_media_assets.py

启动 FL2VA:

bash serve_sglang_fl2va.sh

跑 T2VA + FL2VA:

python3 run_sglang_video_benchmark.py \
  --base-url http://127.0.0.1:30010 \
  --variant fl2va \
  --out-dir results/fl2va

启动 Ref2VA:

bash serve_sglang_ref2va.sh

跑 Ref2VA:

python3 run_sglang_video_benchmark.py \
  --base-url http://127.0.0.1:30010 \
  --variant ref2va \
  --out-dir results/ref2va

生成 Markdown 汇总表:

python3 summarize_results.py results

六、首批实测结果

SGLang BF16 / 官方分区启动测试

测试命令关键参数退出码结果备注
FL2VA 官方路径--model-variant fl2va --performance-mode memory2失败于参数解析当前 SGLang 0.5.10+516d57ac 不识别这两个参数
Ref2VA 官方路径--model-variant ref2va --performance-mode memory2失败于参数解析同上,未进入 checkpoint 下载或模型加载

实际错误:

sglang serve: error: unrecognized arguments: --model-variant fl2va --performance-mode memory
sglang serve: error: unrecognized arguments: --model-variant ref2va --performance-mode memory

这一步说明:Thor-JD 当前预装的 NVIDIA SGLang 镜像还不是 MiniMax H3 cookbook 所需的软件栈。所以后续测试没有停在这里,而是在同一个 NVIDIA 容器基础上构建 source SGLang 继续跑。

Source SGLang / FL2VA 加载实测

为了进入 MiniMax H3 分支,本轮在容器里做了四件事:

  1. 克隆 SGLang source,并用 PYTHONPATH=/tmp/sglang-src/python 强制走源码。
  2. 升级 Transformers 到 5.12.1,解决 transformers.vision_utils 导入问题。
  3. 对容器内 xgrammar 兼容性做最小 patch,让 SGLang source 能完成 import。
  4. 通过 HF_ENDPOINT=https://hf-mirror.com 下载 MiniMaxAI/MiniMax-H3 的 FL2VA 分区,缓存约 135 GiB。
Run关键参数HTTP readyMP4结果关键日志
fl2va-live5--model-variant fl2va --performance-mode memorytransformer 加载后长期不 readytext encoder 成功加载;SGLang 报 consumed GPU mem: 57.86 GB, avail GPU mem: 11.23 GB;容器 RSS 约 98 GiB
fl2va-live6--dit-layerwise-offload --layerwise-offload-components dit text_encoder vae --dit-offload-prefetch-size 0 --dit-layerwise-resident-layers 0 --warmup-mode offOOM killedtext encoder 报 consumed GPU mem: 85.44 GB, avail GPU mem: 18.61 GB;transformer 13 个 safetensors shards 加载后 scheduler 死亡,退出码 -9

kernel OOM 记录:

Out of memory: Killed process 1114391 (sgl_diffusion::) total-vm:782713380kB,
anon-rss:57248772kB, file-rss:115516kB, shmem-rss:52471808kB

这轮最重要的结论不是速度,而是容量边界:单台 122 GiB、无 swap 的 Thor-JD,在当前 source SGLang + BF16 FL2VA 路径下没有完成服务启动。 这比“没测”更有价值,因为它已经跨过了参数解析、依赖、模型下载和 FL2VA 分区选择,失败点落在真实模型加载阶段。

Ref2VA 官方分区

路径结果备注
Ref2VA source SGLang未运行当前 Hugging Face 缓存里只有 FL2VA/model_index.jsonRef2VA 分区尚未下载。考虑到 FL2VA 已在加载阶段触发 OOM,Ref2VA 需要单独下载和单独记录,不能把它推断成“已测”。

INT8 ConvRot / 社区量化

路径RuntimeCheckpoint结果备注
FL2VA INT8 ConvRotComfyUI / H3 node未发现未运行Thor-JD 上未发现 ComfyUI、MiniMax H3 custom node 或 INT8 ConvRot checkpoint
Ref2VA INT8 ConvRotComfyUI / H3 node未发现未运行需要先安装节点并下载具体 checkpoint,后续必须记录 hash
SGLang diffusion quantsource SGLang无 INT8 ConvRot recipe未运行当前 diffusion runtime help 暴露的是 fp8 / mxfp4 等 transformer 量化入口,没有可直接复现的 INT8 ConvRot 参数组合

Abiray NVFP4 / ComfyUI 路径

2026-08-07 补测了社区仓库 Abiray/Minimax-H3-nvfp4-INT4-INT8-Convrot 的 FL2VA NVFP4 组合:

文件大小SHA256
MiniMax_H3_FL2VA_pruned_nvfp4.safetensors12.5 GB6ab7f0c48141e7919b32f925ca3def22e06a6aebeb9e0b6f5a0be0fe8409976f
qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors15.7 GB33e69e3edab846d52949bafdb00378bd3f5a93f78124fc83d5ef109dc4a1fcbb
minimax_h3_audio_vae_fp32.safetensors605 MB83043bf3afccf4cab4d7e114f6e04607e9687bef16930a2f6088d721a893d3c4
minimax_h3_video_vae_fp16.safetensors5.21 GB88539d729fd7e9f9de765498428cd8e9152b8420317ec0e7542a362fffb7e0e1

这个仓库的文件末尾带有 L2P_bypass_... 标记,标准 safetensors 会报 file not fully covered。本轮保留原文件,并生成了截断尾部标记的本地 fixed copy;fixed copy 可以被 safetensors 正常读取。权重 key 中带有 comfy_quant,README 也明确它是 ComfyUI 本地推理格式,因此这条路径不是 SGLang 原生 Diffusers 分区。

ComfyUI 0.30.0 core 已内置 MiniMax H3 节点。object_info 能看到:

  • UNETLoader 识别 MiniMax_H3_FL2VA_pruned_nvfp4.safetensors
  • CLIPLoader(type=minimax) 识别 qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors
  • MiniMaxH3ImageToVideo / MiniMaxH3SigmaShift 节点可用

第一轮用宿主机 Python / PyTorch 2.5.1 提交了一个极小 smoke prompt:256x2565 frames1 Euler step、T2VA/FL2VA、SaveVideo 输出。模型能加载,但采样失败:

阶段结果
Video VAE / Audio VAE成功加载
Text encoder成功加载;日志显示 14960.20 MB loaded
MiniMaxH3 NVFP4 DiT成功识别 mixed precision quantization;日志显示 11945.45 MB loaded
采样失败
输出 MP4未生成

失败日志:

NVIDIA Thor with CUDA capability sm_110 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_50 sm_80 sm_86 sm_89 sm_90 sm_90a.
RuntimeError: CUDA error: no kernel image is available for execution on the device

这说明 NVFP4 方向比 BF16 更接近可用:失败点不再是容量 OOM,而是 PyTorch / CUDA kernel 架构不支持 Thor sm_110

随后切换到 Thor-JD 本地已有的 fire-smoke-train:cu130 容器。这个镜像内的 PyTorch 是 2.11.0+cu130torch.cuda.get_arch_list() 明确包含 sm_110

2.11.0+cu130 13.0 ['sm_80', 'sm_90', 'sm_100', 'sm_110', 'sm_120']

在这个容器中重新启动 ComfyUI,复用同一组 NVFP4 fixed weights,重新提交同一个 smoke prompt。结果成功:

项目结果
容器fire-smoke-train:cu130
PyTorch2.11.0+cu130
ComfyUI0.30.0
comfy-kitchen0.2.26,CUDA backend 可用,包含 nvfp4 capability
Prompt256x2565 frames1 Euler step
执行时间46.21s
输出minimax_h3_nvfp4_cu130_smoke_00001_.mp4
状态success

ffprobe 元数据:

结果
VideoH.264,256x256,24 FPS,5 frames,0.208s
AudioAAC LC,32 kHz,stereo,0.200s
文件大小30,261 bytes

这意味着:Thor-JD 可以跑起 MiniMax H3,但目前成立的是 Abiray NVFP4 + ComfyUI + Thor cu130 PyTorch 容器的 smoke test,不是 BF16,也不是完整 5 秒 50 steps benchmark。

Thor CUDA 13 / ComfyUI 快速基线

随后在同一台 Thor-JD 上继续跑了更接近真实生成的快速 benchmark。这个基线不是前文定义的 768 短边、5 秒、50 steps 正式协议,而是 Chipmark 侧用于横向比较 3090 主机的标准快速规格:

参数数值
分辨率608x352
长度243 frames
Steps20
Thor 运行方式Docker fire-smoke-train:cu130 + ComfyUI
PyTorch2.11.0+cu130,CUDA 13.0,支持 Thor sm_110
NVFP4 FL2VA 权重MiniMax_H3_FL2VA_pruned_nvfp4.safetensors
INT8 ConvRot FL2VA 权重minimax_h3_fl2va_pruned_int8_convrot.safetensors

Thor-JD 实测结果:

Host模式Total timeComfyUI timeSampling timeSampling speed备注
thorDocker CUDA 13 NVFP4 cold / --lowvram300.04s288.13s4:1612.81s/it使用 Thor 容器 NVFP4 FL2VA 权重
thorDocker CUDA 13 NVFP4 hot / --lowvram300.03s284.64s4:1612.82s/it模型 warm-up 后
thorDocker CUDA 13 NVFP4 full-vram cold300.03s294.92s4:1512.77s/it不加 --lowvram
thorDocker CUDA 13 NVFP4 full-vram hot300.03s282.34s4:1612.81s/it不加 --lowvram,速度没有明显改善
thorDocker CUDA 13 INT8 ConvRot full-vram cold443.51s433.23s6:1418.71s/it使用和 3090 基线相同的 INT8 ConvRot FL2VA 权重
thorDocker CUDA 13 INT8 ConvRot full-vram hot400.04s395.13s6:0918.46s/it模型 warm-up 后

与 RTX 3090 CUDA 13 快速基线对照:

Host模式Total timeSampling timeSampling speed备注
giga3090CUDA 13 hot213.05s3:099.46s/it模型 warm-up 后
rog3090CUDA 13 cold521.55s3:079.37s/it包含首次模型初始化,约 143s
rog3090CUDA 13 hot206.07s3:079.38s/it模型 warm-up 后

当前比较要谨慎解读:

  1. Thor NVFP4 hot 比 3090 CUDA 13 INT8 hot 总耗时约慢 1.38x-1.46x,采样速度约慢 1.36x;但这不是纯硬件对比,因为 Thor NVFP4 和 3090 基线使用的 FL2VA 权重不同。
  2. 去掉 --lowvram 没有明显提升 Thor NVFP4 速度,采样基本稳定在 12.77-12.82s/it
  3. 使用和 3090 相同的 INT8 ConvRot FL2VA 权重时,Thor hot 采样约 18.46s/it,约为 3090 hot 9.38s/it1.97x

Thor 侧生成文件记录:

/workspace/ComfyUI/output/thor_minimaxh3_cu130_benchmark_cold2_608x352_len243_steps20_00001_.mp4
/workspace/ComfyUI/output/thor_minimaxh3_cu130_benchmark_hot2_608x352_len243_steps20_00001_.mp4
/workspace/ComfyUI/output/thor_minimaxh3_cu130_fullvram_benchmark_cold_608x352_len243_steps20_00001_.mp4
/workspace/ComfyUI/output/thor_minimaxh3_cu130_fullvram_benchmark_hot_608x352_len243_steps20_00001_.mp4
/workspace/ComfyUI/output/thor_minimaxh3_cu130_int8convrot_fullvram_benchmark_cold_608x352_len243_steps20_00001_.mp4
/workspace/ComfyUI/output/thor_minimaxh3_cu130_int8convrot_fullvram_benchmark_hot_608x352_len243_steps20_00001_.mp4

本轮可审计文件

本次测试留下了可审计记录:

scripts/minimax-h3-benchmark/actual-results-2026-08-06.json
scripts/minimax-h3-benchmark/results-env/
scripts/minimax-h3-benchmark/results-fl2va-live5/
scripts/minimax-h3-benchmark/results-fl2va-live6/
scripts/minimax-h3-benchmark/results-comfy-nvfp4/
scripts/minimax-h3-benchmark/results-comfy-nvfp4-cu130/

七、早期判断

现在已经可以给出一个更明确的早期结论:Thor-JD 不能稳定跑通当前 BF16 SGLang FL2VA 路径,但可以通过 CUDA 13 PyTorch Docker + ComfyUI 跑 MiniMax H3 量化权重,并已经完成 243 帧、20 steps 的快速基线。

  1. 基础 NGC SGLang 26.04 镜像不能直接跑 MiniMax H3 cookbook 命令--model-variant--performance-mode0.5.10+516d57ac 中不可用。
  2. source SGLang 能把 Thor-JD 带进 FL2VA 真实加载路径:依赖修复后,FL2VA 分区可以被正确识别,text encoder 和 transformer shards 都开始加载。
  3. 122 GiB 无 swap 对 BF16 FL2VA 仍然不够稳:最激进的 layerwise/offload 配置仍被 OOM killer 杀掉,没有 ready,也没有 MP4。
  4. Abiray NVFP4 / ComfyUI 路径已经跑通并完成快速基线:Thor Docker CUDA 13 热跑约 300.03s external / 284.64s ComfyUI,采样约 12.82s/it
  5. INT8 ConvRot FL2VA 也已经在 Thor 上跑过快速基线:同一 INT8 ConvRot FL2VA 权重热跑约 400.04s external / 395.13s ComfyUI,采样约 18.46s/it
  6. Ref2VA 仍需单独测:当前 Ref2VA 分区未下载,不能从 FL2VA / T2VA 结果推断。

八、下一步

下一轮要先补齐软件栈,再补生成数据:

  • 固化 fire-smoke-train:cu130 + ComfyUI 的复现脚本,避免每次临时安装依赖
  • 把 NVFP4 / INT8 ConvRot 快速基线扩大到 768 短边、5 秒、50 steps 的正式 benchmark
  • 记录正式生成的 wall time、峰值内存、RTF、MP4 元数据和主观质量
  • 下载 Ref2VA 分区,单独记录是否能完成加载
  • INT8 ConvRot Ref2VA checkpoint 的加载与生成结果,优先走 ComfyUI core MiniMax H3 节点
  • 每个 case 的输出 MP4、ffprobe 元数据、生成耗时和失败日志
  • 与 RTX 3090 / 4090 社区结果的横向对比

如果这些测试跑通,这会是一个非常早期的 MiniMax H3 on Jetson AGX Thor 公开 benchmark。更重要的是,它不是只给结论,而是把脚本、输入、参数和结果字段全部公开,后续别人可以复跑、纠错、补充。