MiniMax-H3 Performance Notes

August 11, 2026 ยท View on GitHub

Date: 2026-08-11

Branch: dev

Hardware: NVIDIA GeForce RTX 5090, CUDA backend, server threads=8

This check compares the normal DiT GGUF against the INT8 ConvRot DiT GGUF in server mode. Server detailed logging was disabled. Each model variant used a separate server process:

VariantDiT file
DiTdit.gguf
INT8 ConvRot DiTdit_int8.gguf

Each server received one short warmup request first, then three measured requests in the same session: none, spectrum, and first_block_cache.

Prompt:

A lively four-speaker podcast roundtable in a small studio. The host, Maya, is warm and curious. The comedian, Leo, is playful and quick. The scientist, Dr. Chen, is thoughtful and calm. The producer, Sam, is dry and amused. Maya says, "Welcome back to Tiny Big Questions, where today we ask whether coffee makes us productive or just louder." Leo says, "I vote louder. My notes are mostly exclamation marks and one drawing of a croissant." Dr. Chen says, "I think the ritual matters more than the caffeine. The cup gives your brain a starting line." Sam says, "My brain missed the starting line and is currently looking for parking." The speakers laugh naturally, overlap lightly, react to each other, and continue in a friendly conversational rhythm with clear distinct voices, no music, and no background noise.

Shared measured-request options:

OptionValue
seed20260808
height32
width32
num_frames481
num_inference_steps20
guidance_scale1.0
return_videofalse
minimax_h3.mem_saverdefault true

Warmup used num_inference_steps=2, num_frames=21, and dit_acceleration=none.

Results

DiT fileAccelerationWall msAudio secRTFx realtimePeak VRAM MiBSpeedup vs dit.gguf
dit.ggufnone12886.4020.050.64271.56x16513baseline
dit_int8.ggufnone11692.0020.050.58311.71x184069.3%
dit.ggufspectrum7501.4820.050.37412.67x16617baseline
dit_int8.ggufspectrum7331.4620.050.36572.73x185222.3%
dit.gguffirst_block_cache8270.5820.050.41252.42x17389baseline
dit_int8.gguffirst_block_cache7887.5120.050.39342.54x192864.6%

Peak VRAM was sampled with nvidia-smi during each server session. The per-row peak is estimated from the request timing interval. Whole-session peak was 17389 MiB for dit.gguf and 19286 MiB for dit_int8.gguf.

ASR Check

The common transcript content matched the main spoken prompt: Tiny Big Questions, coffee/caffeine/productivity, notes/exclamation marks/croissant, ritual/cup, starting line, and parking. ASR made small recognition errors such as coffee -> cocky and several variants of croissant, but none of the six outputs collapsed into noise.

30s DiT Step Sweep

These sweeps used CUDA server mode, threads=8, num_frames=721, height=32, width=32, guidance_scale=1.0, and seed=20260808. The prompt was a plain quoted reading passage sized for the 30s target. Framework Nemotron ASR (nemotron_asr) was used for the transcript check, and WER is computed against the quoted passage after simple lowercase alphanumeric token normalization.

dit.gguf, dit_acceleration=none:

DiT stepsWall msAudio secRTFx realtimeNemotron ASR WER
46937.4630.6750.22624.42x100.0%
89410.0830.6750.30683.26x39.1%
1212090.6030.6750.39422.54x1.6%
1614629.5030.6750.47692.10x1.6%
2017213.5030.6750.56121.78x1.6%
2420091.7030.6750.65501.53x1.6%

dit.gguf, dit_acceleration=spectrum:

DiT stepsWall msAudio secRTFx realtimeNemotron ASR WER
46320.3830.6750.20604.85x100.0%
87080.3530.6750.23084.33x100.0%
127720.1330.6750.25173.97x1.6%
168479.3630.6750.27643.62x4.7%
209270.6330.6750.30223.31x6.2%
249916.6930.6750.32333.09x3.1%

dit.gguf, dit_acceleration=first_block_cache:

DiT stepsWall msAudio secRTFx realtimeNemotron ASR WER
46801.1730.6750.22174.51x100.0%
89685.6630.6750.31583.17x39.1%
129546.8130.6750.31123.21x18.8%
1610860.9030.6750.35412.82x4.7%
2011016.1030.6750.35912.78x1.6%
2411726.5030.6750.38232.62x6.2%

dit_int8.gguf, dit_acceleration=none:

DiT stepsWall msAudio secRTFx realtimeNemotron ASR WER
46752.3330.6750.22014.54x56.2%
88822.5230.6750.28763.48x4.7%
1211036.6030.6750.35982.78x3.1%
1613253.0030.6750.43202.31x3.1%
2015373.8030.6750.50122.00x3.1%
2417600.1030.6750.57381.74x3.1%

dit_int8.gguf, dit_acceleration=spectrum:

DiT stepsWall msAudio secRTFx realtimeNemotron ASR WER
46343.6030.6750.20684.84x100.0%
86960.5830.6750.22694.41x51.6%
127520.1830.6750.24524.08x12.5%
168187.3230.6750.26693.75x10.9%
208783.7130.6750.28633.49x3.1%
249488.4730.6750.30933.23x3.1%

dit_int8.gguf, dit_acceleration=first_block_cache:

DiT stepsWall msAudio secRTFx realtimeNemotron ASR WER
46849.8430.6750.22334.48x56.2%
88927.2830.6750.29103.44x4.7%
128973.9530.6750.29253.42x21.9%
1610095.0030.6750.32913.04x12.5%
2010259.2030.6750.33452.99x45.3%
2410916.5030.6750.35592.81x1.6%

In this 30s reading case, the fastest stable measured point was dit.gguf + spectrum at 12 steps. The normal DiT path also reached stable ASR at 12 steps, but with higher RTF. INT8 without acceleration was transcript-stable by roughly 8-12 steps, while INT8 + first_block_cache needed 24 steps in this run.

CUDA 13 Server Sweep

This sweep reran the 30s reading case in CUDA 13 server mode with dit_acceleration=none. It used the same threads=8, num_frames=721, height=32, width=32, guidance_scale=1.0, seed, prompt, and short warmup shape as the CUDA 12.9 server rows above.

dit.gguf, CUDA 13:

DiT stepsWall msAudio secRTFx realtimeGain vs CUDA 12.9
46901.7430.6750.22504.44x+0.5%
89434.4730.6750.30763.25x-0.3%
1211973.1030.6750.39032.56x+1.0%
1614506.4030.6750.47292.11x+0.8%
2017244.2030.6750.56221.78x-0.2%
2419856.1030.6750.64731.54x+1.2%

dit_int8.gguf, CUDA 13:

DiT stepsWall msAudio secRTFx realtimeGain vs CUDA 12.9
46871.0130.6750.22404.46x-1.8%
88815.8230.6750.28743.48x+0.1%
1210860.0030.6750.35402.82x+1.6%
1613167.4030.6750.42932.33x+0.6%
2015081.6030.6750.49172.03x+1.9%
2417179.8030.6750.56011.79x+2.4%

For this no-acceleration server sweep, CUDA 13 was a small improvement rather than a large one: total wall time across the six measured step counts improved by about 0.6% for dit.gguf and about 1.2% for dit_int8.gguf. The INT8 path showed the clearest gain at larger step counts.

Memory-Reduction Options

These runs used dit.gguf only, server mode, CUDA, threads=8, no detailed server logging, the same short warmup shape, and the same measured prompt/options as the 2x3 run above. Each option set used a fresh server process. The baseline is the dit.gguf + dit_acceleration=none row above, where minimax_h3.mem_saver is already at its default true.

Option setWall msRTFPeak VRAM MiBPeak delta vs baselineASR status
baseline: mem_saver=true12886.400.642716513baselinevalid
mem_saver=true, dit_layerwise=true, dit_layerwise_batch=456154.802.800715796-717 MiBvalid
mem_saver=true, dit_layerwise=true, dit_layerwise_batch=4, dit_mlp_chunk_tokens=102456460.302.816015661-852 MiBvalid

DiT layerwise staging reduced peak VRAM by roughly 0.7-0.9 GiB, but with a large runtime cost. The MLP chunking option gave the lowest measured peak in this run.

Audio Duration Scaling

These runs used dit.gguf, default minimax_h3.mem_saver=true, dit_acceleration=none, CUDA server mode, threads=8, no detailed server logging, and one short warmup before the measured duration sweep. The prompt and all generation options other than num_frames were unchanged.

Target secnum_framesOutput secWall msRTFPeak VRAM MiB
51215.1757076.731.367516246
1024110.1258905.270.879516366
1536115.07510754.000.713416530
2048120.05013046.700.650716559
2560125.70015272.800.594316702
3072130.67517704.700.577216830
60144160.42534435.900.569917674

With mem_saver=true, peak VRAM increased slowly across this audio-only sweep: about 1.4 GiB from the 5-second request to the 60-second request. Runtime scales more visibly than memory, while RTF improves as fixed request overhead is amortized over longer audio.