File size: 8,256 Bytes
344a8da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dad77a3
344a8da
 
dad77a3
344a8da
 
 
 
 
 
 
 
 
 
 
 
 
dad77a3
344a8da
dad77a3
344a8da
dad77a3
344a8da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dad77a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344a8da
 
 
 
 
 
 
 
dad77a3
 
 
 
 
344a8da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dad77a3
 
344a8da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dad77a3
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
---
license: other
license_name: minimax-h3-community-license-agreement
license_link: LICENSE
pipeline_tag: text-to-video
library_name: radiance
tags:
- radiance
- rocm
- amd
- rdna4
- fp8
- text-to-video
- text-to-audio-video
- minimax-h3
- latent-upscaler
base_model:
- MiniMaxAI/MiniMax-H3
- LBH-123-AI/Minimax_h3_latent_Upscaler
---

# MiniMax-H3, FP8 — radiance container

[MiniMaxAI/MiniMax-H3](https://huggingface.co/MiniMaxAI/MiniMax-H3) — video with a synchronized stereo
soundtrack from text — as a single `.rad` container for the
[radiance](https://codeberg.org/StillDeadcode/radiance) inference engine (AMD RDNA4, ROCm).

The MiniMax H3 Community License does not cover the European Union, the United Kingdom, the
Republic of Korea or the United States of America; see [License](#license).

| | |
|---|---|
| File | `minimax-h3-fp8.rad` — 60.54 GiB |
| Weights | every linear of the text encoder (the 50 layers of Qwen3-VL-32B the model reads), the token refiner and the DiT's 50 blocks, and the modulation projections, FP8 E4M3 per 128×128 block (bf16 scales); the video decoder bf16; the audio decoder f32 |
| Latent upscaler | [LBH-123-AI/Minimax_h3_latent_Upscaler](https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler) v1 (3D conv, 345M parameters, bf16; Apache-2.0) |
| Output | MP4: H.264 at 24 fps, up to 1344x768, 5.17 to 14.4 s; AAC at 32 kHz stereo |
| Needs | radiance 1.8.1 or newer (the upscaler, and prompts over 128 tokens, need 1.8.1); two 32 GB cards and about 39 GiB of pinned host memory |

## Serve

```sh
radiance --model minimax-h3-fp8.rad --tp 2 --vision-tower-placement ram --host 0.0.0.0 --port 8000

curl -s http://localhost:8000/v1/videos -H 'Content-Type: application/json' -d '{
  "prompt": "A red fox trotting through a snowy pine forest, snow crunching underfoot",
  "seconds": "5", "size": "1344x768", "seed": 7}'          # -> {"id": "video_...", "status": "queued", ...}
curl -s http://localhost:8000/v1/videos/video_...            # poll until "status": "completed"
curl -s http://localhost:8000/v1/videos/video_.../content -o fox.mp4
```

The server speaks OpenAI's video jobs API (`POST /v1/videos`, `GET /v1/videos/{id}`,
`GET /v1/videos/{id}/content`, list and delete), and SGLang's `target` field:

- `prompt` is read as written, up to 2048 tokens; the model follows long structured descriptions
  (the shot, its soundscape, its music) best.
- `seconds` is rounded up to the model's length steps (17 frames): 5.17 to 14.4 s. `size` is
  `WIDTHxHEIGHT`, multiples of 32, at most 1344x768 pixels of area.
- `seed` makes a video repeatable on the same deployment; `num_inference_steps` counts sigma grid
  points as diffusers does (50 by default, at most 65). The model is guidance-distilled: no guidance
  scale, no negative prompt.
- Text to video and audio only; the image- and reference-conditioned forms are not in this file.

On two Radeon AI PRO R9700s (gfx1201) a 5.17 s clip at 1344x768 takes about 8.8 minutes at the
default 50 steps. The text encoder and the modulation projections are read from pinned host memory,
which `--vision-tower-placement ram` selects. For the eight-step distillation, see
[StillDeadcode/fasth3-8-step-v2-fp8](https://huggingface.co/StillDeadcode/fasth3-8-step-v2-fp8).

From the same conditioning and noise, the first step's velocity is 5.4% (video) and 4.3% (audio)
from diffusers' bf16 pipeline, about what the reference itself moves with its linears rounded to FP8
the same way (6.8% and 4.6%). Given the same latents, the video decoder is 36.9 dB PSNR from the
reference's (H.264 included) and the audio decoder 51.0 dB SNR.

## Latent upscaling

The container carries LBH-123-AI's latent upscaler. A request with `"latent_upscale": 2` runs its
first steps at half the size (672x384 for 1344x768), the upscaler enlarges the clean latent, and the
last `upscale_refine_steps` (12 by default) run at the full size from a re-noised copy of it:

```sh
curl -s http://localhost:8000/v1/videos -H 'Content-Type: application/json' -d '{
  "prompt": "...", "seconds": "5", "size": "1344x768", "seed": 7, "latent_upscale": 2}'
```

| 5.17 s at 1344x768, 50 steps, 2x R9700 | time |
|---|---|
| native | 8.8 min |
| `latent_upscale` 2, 12 refine steps (the default) | 3.4 min |
| `latent_upscale` 2, 20 refine steps | 4.5 min |

The factor goes up to 4, but at 1344x768 a factor of 4 starts from 352x192, which is too small for
the model to lay out a clean scene: expect soft, ghosted frames. The video object of an upscaled
video reports `latent_upscale`, `upscale_refine_steps` and `upscale_from` (the small size).

## How this file was made

```sh
rad-convert MiniMaxAI/MiniMax-H3 --recipe minimax-h3-fp8.recipe -o minimax-h3-fp8.rad
```

`MiniMaxAI/MiniMax-H3` is the downloaded pipeline directory; only its text-to-video-and-audio
components are read (`text_encoder/`, `transformer/`, `vae/`, `audio_vae/`, the processor, the
tokenizer and both schedulers), and the upscaler as a companion folder `latent_upscaler/` (its
`minimax_h3_latent_upscaler_3d_conv_v1/config.json` and bf16 weights, renamed
`diffusion_pytorch_model.safetensors`). This file had it added to the 1.8.0 container in place
(`rad-convert ... --reuse minimax-h3-fp8.rad --in-place`), which leaves every other weight as it
was. The recipe (`minimax-h3-fp8.recipe` in this repository) names what is
quantised; everything it does not name is the checkpoint's own dtype:

```
te.blk.*.attn_qkv.weight             rtn  codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.attn_output.weight          rtn  codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.ffn_gate_up.weight          rtn  codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.ffn_down.weight             rtn  codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.attn_norm.weight            cast dtype=f32
te.blk.*.ffn_norm.weight             cast dtype=f32
ref.blk.*.attn_qkv.weight            rtn  codes=fp8_e4m3 block=128x128 scale=bf16
ref.blk.*.attn_output.weight         rtn  codes=fp8_e4m3 block=128x128 scale=bf16
ref.blk.*.ffn_gate_up.weight         rtn  codes=fp8_e4m3 block=128x128 scale=bf16
ref.blk.*.ffn_down.weight            rtn  codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.attn_qkv.weight            rtn  codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.attn_output.weight         rtn  codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.ffn_gate_up.weight         rtn  codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.ffn_down.weight            rtn  codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.ada*.weight                rtn  codes=fp8_e4m3 block=128x128 scale=bf16
vae.blk.*.attn_qkv.weight            cast dtype=bf16
vae.blk.*.attn_out.weight            cast dtype=bf16
vae.blk.*.ffn_up.weight              cast dtype=bf16
vae.blk.*.ffn_down.weight            cast dtype=bf16
vae.proj_out.*                       cast dtype=bf16
aud.*.weight                         cast dtype=f32
ups.embed.*                          cast dtype=f32
ups.*.emb_layers.*                   cast dtype=f32
```

## License

MiniMax H3 is licensed under the MiniMax H3 Community License Agreement, Copyright © 2026 MiniMax
(`LICENSE` in this repository; `NOTICE` carries its notice). The agreement grants its rights only
within its Applicable Territory: worldwide except the European Union, the United Kingdom, the
Republic of Korea and the United States of America, where it does not license using, reproducing or
distributing the model or this file. Its use restrictions and Acceptable Use Policy (Exhibit A of
`LICENSE`) apply to everyone who downloads or uses this file, and to anyone it is passed on to.

This container is a modified copy of MiniMax H3: the linears named above are re-encoded as FP8, the
video decoder's linears cast from f32 to bf16, the audio decoder's weight norms folded, the text
encoder's last 14 layers (which the model does not read) left out, and everything repacked into one
`.rad` file. The text encoder is Qwen3-VL-32B, licensed under the Apache License 2.0
(`LICENSE-Qwen3-VL`). The latent upscaler is LBH-123-AI's Minimax_h3_latent_Upscaler v1, licensed
under the Apache License 2.0 (`LICENSE-latent-upscaler`); its weights are included as published,
its embedding MLP cast from bf16 to f32.