woodfireind commited on
Commit
977f488
·
verified ·
1 Parent(s): bb5ccb0

MiniMax H3 GGUF MiniStack: pruned Q4 DiT + distilled 4B student TE (+adapter/tokenizer) + stock video VAE, audio VAE dropped

Browse files
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ diffusion_models/MiniMax-H3-FL2VA-pruned-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text
37
+ text_encoders/qwen3vl-4b-h3student-BF16.gguf filter=lfs diff=lfs merge=lfs -text
38
+ text_encoders/qwen3vl-4b-h3student-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ library_name: diffusers
5
+ pipeline_tag: text-to-video
6
+ license: other
7
+ license_name: minimax-h3-community-license-agreement
8
+ license_link: https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/LICENSE
9
+ base_model: MiniMaxAI/MiniMax-H3
10
+ tags:
11
+ - comfyui
12
+ - gguf
13
+ - video-generation
14
+ - minimax
15
+ - text-to-video
16
+ ---
17
+
18
+ # MiniMax H3 GGUF MiniStack
19
+
20
+ A shrunk, GGUF-quantized MiniMax H3 **FL2VA** stack built for ComfyUI on consumer GPUs (developed on Intel Arc A770 16 GB). The full 33B stack has been reduced via AdaLN pruning of the DiT and distillation of the 32B text encoder down to a 4B student, then quantized to Q4_K_M. The audio VAE is **dropped** (see [Limitations](#limitations)).
21
+
22
+ **Provenance:** this is a derived, quantized repack of [`MiniMaxAI/MiniMax-H3`](https://huggingface.co/MiniMaxAI/MiniMax-H3) as repackaged by [`Comfy-Org/MiniMax-H3`](https://huggingface.co/Comfy-Org/MiniMax-H3), plus locally trained adapter weights. It is released under the **MiniMax H3 Community License Agreement**.
23
+
24
+ ## What's in the box
25
+
26
+ ```
27
+ 📂 ComfyUI/models/
28
+ ├── 📂 diffusion_models/
29
+ │ └── MiniMax-H3-FL2VA-pruned-Q4_K_M.gguf 11.38 GB pruned AdaLN DiT, Q4_K_M
30
+ ├── 📂 text_encoders/
31
+ │ ├── qwen3vl-4b-h3student-Q4_K_M.gguf 2.50 GB distilled TE, Q4_K_M (default)
32
+ │ ├── qwen3vl-4b-h3student-BF16.gguf 8.05 GB distilled TE, BF16 (optional)
33
+ │ ├── te_adapter_v1.safetensors 120 MB student→H3 5120-d MLP adapter (required)
34
+ │ └── h3_tokenizer/ 11 MB H3 tokenizer (required)
35
+ └── 📂 vae/
36
+ └── minimax_h3_video_vae_fp16.safetensors 4.85 GB stock video VAE, fp16
37
+ ```
38
+
39
+ Total download ≈ **27 GB** (Q4 default ≈ 19 GB if you skip the BF16 TE).
40
+
41
+ | File | SHA-256 |
42
+ |---|---|
43
+ | `diffusion_models/MiniMax-H3-FL2VA-pruned-Q4_K_M.gguf` | `51783047a6be43c9fcedc3c0a1746480dac867839ba1ad2e1c698da9d7058201` |
44
+ | `text_encoders/qwen3vl-4b-h3student-Q4_K_M.gguf` | `7ff66b1541723fc4c4c3f2cba75f72740fad43276ab1d6d564379e591a2e74e5` |
45
+ | `text_encoders/qwen3vl-4b-h3student-BF16.gguf` | `b6c55a51fe20aca2700fcedd228ad9af9b67f896a10ae5ff80092752c09145ba` |
46
+ | `text_encoders/te_adapter_v1.safetensors` | `ef2060e1a277820416d895812dd580234d3c2760af8e6d203b38e3df2e0952b0` |
47
+ | `text_encoders/h3_tokenizer/tokenizer.json` | `a5d85b6dcc535e6b93115a9ef287e6132fdbf30270da6218194ba742261173c7` |
48
+ | `text_encoders/h3_tokenizer/tokenizer_config.json` | `a07e942ac874baa13758de8d1fbdb186683cc03416b5589e1b6671c6b3057c68` |
49
+ | `text_encoders/h3_tokenizer/vocab.json` | `ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910` |
50
+ | `text_encoders/h3_tokenizer/merges.txt` | `599bab54075088774b1733fde865d5bd747cbcc7a547c5bc12610e874e26f5e3` |
51
+ | `vae/minimax_h3_video_vae_fp16.safetensors` | `7c1f131492e7eddacaac9069a61b81bdd39de5cc96561e677c5eab1cdce5e522` |
52
+
53
+ ## Documented changes vs. stock
54
+
55
+ 1. **Pruned DiT (FL2VA).** The 33B full-width DiT is replaced with the AdaLN-curve form from `Comfy-Org/MiniMax-H3` (`minimax_h3_fl2va_pruned_bf16`): AdaLN 13B→44M params via the `adaln_t_table` [1025,8] + per-block [96768,8] projections. Effective ≈ **18.7B params**.
56
+ 2. **Q4_K_M quantization.** Converted with a two-pass streaming converter and quantized with a ComfyUI-GGUF-patched llama.cpp build (arch `"wan"`; stock `llama-quantize` rejects this arch). **11.38 GB** vs 14.5 GiB for the full Q3_K_M. GGUF: `general.architecture=wan`, 532 tensors, 53 fp32/fp16 hiprec islands (adaln*, t_embed, norm, patch_proj) kept as-is.
57
+ 3. **Distilled student text encoder.** The 32B Qwen3-VL-32B teacher is replaced with a **Qwen3-VL-4B** student plus a trained MLP adapter (`2560→4096→5120`, fp32) that maps student language hidden states into H3's 5120-d multimodal token slots. Distilled from 2,500 teacher dumps; **val_cos 0.9310** (full-corpus v4 adapter). Q4_K_M GGUF is numerically near-identical to the BF16 student (**>0.99 cosine**); the gap to the teacher is adapter fidelity, not quant noise.
58
+ 4. **Audio VAE dropped.** The `minimax_h3_audio_vae_fp32` component is removed from the workflow. Output videos are **silent**. The stock `minimax_h3_video_vae_fp16` is unchanged and included.
59
+ 5. **Video VAE unchanged.** Stock fp16 video VAE; no pruning or requantization was applied.
60
+
61
+ ## Requirements
62
+
63
+ - **ComfyUI** with MiniMax H3 support (`Comfy-Org/ComfyUI` PR #15224 / current main) and the **ComfyUI-GGUF** custom node.
64
+ - For the student TE you need the `h3_small_te` custom node (H3SmallTELoader / H3SmallTextEncoder) — it loads the GGUF via ComfyUI-GGUF's `gguf_clip_loader` into comfy-native `Llama2_(Qwen3VL_4BConfig)` with GGMLOps, keeping the H3 HF tokenizer + Identity final-norm + the adapter. The adapter and `h3_tokenizer/` are **required** — without them the student cannot encode.
65
+ - DiT and video VAE are loaded with the standard `UnetLoaderGGUF` / `VAELoader` nodes.
66
+
67
+ ### Recommended settings (640×480 previz, Arc A770 16 GB)
68
+
69
+ - Sampling: 8 steps with the turbo LoRA (`larryvrh/MiniMax-H3-Turbo-Lora`), `--reserve-vram 3`. Note the turbo LoRA's `adaln_proj` targets dangle on the *pruned* checkpoint — apply it to the full checkpoint if you need those.
70
+ - Length: snap to `5 mod 17` frames (17k+5 grid). Example: `length = max(5, round(seconds*24)) + (5 - (max(5, round(seconds*24)) % 17)) % 17`.
71
+ - Default: 640×480 / 124 frames / 24 fps / 8 steps.
72
+
73
+ ## Limitations
74
+
75
+ - **No audio.** The audio VAE is dropped from this stack — generated videos are silent and there is no voice/SFX/music output.
76
+ - **Student TE is text-only.** The 4B student adapter was distilled on pure-text teacher dumps; it has **no vision path**. For I2V / FL2V keyframe identity (which needs the teacher's vision tower + deepstack features), use the teacher 32B TE (`qwen3vl-32B-MiniMax-H3-*`); the student cannot consume image tokens.
77
+ - **Adapter fidelity ceiling.** val_cos ≈ 0.93 vs the teacher. Shot structure and cuts are preserved, but **cut timing can drift ±2 s** and fine prompt specifics (small props, signage details) can wash out. Timestamp-magnitude tuning (v3/v4) plateaued; this is accepted as a known tradeoff.
78
+ - **Turbo LoRA compatibility.** The preview turbo LoRA targets full-width `adaln_proj` weights that do not exist in the pruned curve-form checkpoint; using both together silently skips those targets.
79
+ - **GGUF arch.** The DiT is archived as `"wan"` for quantizer compatibility; use a ComfyUI-GGUF build that can load arch-`wan` GGUFs. The student GGUF is arch `qwen3vl`.
80
+ - **Frames-vs-seconds prompting.** H3 is trained on `mm:ss.mmm` timestamps; the 4× temporal VAE grid only quantizes where cuts can land — frame-based timestamps are off-distribution.
81
+ - **Not for 2K.** Local gen is 640×480 previz; 768P/2K regeneration requires the official MiniMax cloud API.
82
+
83
+ ## Usage
84
+
85
+ 1. Unzip files into the ComfyUI `models/` folders as shown above.
86
+ 2. For **T2V** (text only): `UnetLoaderGGUF` → pruned Q4 GGUF; `H3SmallTELoader` → student Q4 GGUF + adapter + tokenizer dir; `VAELoader` → video VAE.
87
+ 3. For **I2V / FL2V**: swap the student TE for the teacher 32B TE (vision path); everything else stays.
88
+ 4. Encode with `MiniMaxH3ImageToVideo`, sample with `SamplerCustomAdvanced` (res_multistep / simple, 25 steps, or 8 with turbo LoRA).
89
+
90
+ ## Eval notes (summary)
91
+
92
+ - Baseline (full Q3_K_M, 25 steps): 620 s wall @ 640×480/124f.
93
+ - Pruned Q4_K_M (25 steps): 610 s wall, output on-par with baseline (same composition/cut).
94
+ - Turbo 4/8-step: ~160 s / ~250 s wall; 8-step recommended.
95
+ - FL2V smoke (pruned Q4 + teacher TE): 295.5 s wall; keyframe lock first/last pixel-cos 0.9905/0.9987.
96
+ - Student vs teacher numeric A/B: mean cosine 0.847 (mid adapter) → **0.9310** (full-corpus v4). Video A/B: structure and cuts preserved; fine details degrade consistent with ~0.93 cos.
97
+
98
+ ## License
99
+
100
+ Derived from [MiniMaxAI/MiniMax-H3](https://huggingface.co/MiniMaxAI/MiniMax-H3) — **MiniMax H3 Community License Agreement** (see link in metadata header). The student adapter is a training-derived artifact of distillation against the teacher model and is distributed under the same agreement. The video VAE is the unmodified Comfy-Org repack.
diffusion_models/MiniMax-H3-FL2VA-pruned-Q4_K_M.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:51783047a6be43c9fcedc3c0a1746480dac867839ba1ad2e1c698da9d7058201
3
+ size 11378532064
text_encoders/h3_tokenizer/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
text_encoders/h3_tokenizer/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
text_encoders/h3_tokenizer/tokenizer_config.json ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ },
181
+ "151665": {
182
+ "content": "<tool_response>",
183
+ "lstrip": false,
184
+ "normalized": false,
185
+ "rstrip": false,
186
+ "single_word": false,
187
+ "special": false
188
+ },
189
+ "151666": {
190
+ "content": "</tool_response>",
191
+ "lstrip": false,
192
+ "normalized": false,
193
+ "rstrip": false,
194
+ "single_word": false,
195
+ "special": false
196
+ },
197
+ "151667": {
198
+ "content": "<think>",
199
+ "lstrip": false,
200
+ "normalized": false,
201
+ "rstrip": false,
202
+ "single_word": false,
203
+ "special": false
204
+ },
205
+ "151668": {
206
+ "content": "</think>",
207
+ "lstrip": false,
208
+ "normalized": false,
209
+ "rstrip": false,
210
+ "single_word": false,
211
+ "special": false
212
+ }
213
+ },
214
+ "additional_special_tokens": [
215
+ "<|im_start|>",
216
+ "<|im_end|>",
217
+ "<|object_ref_start|>",
218
+ "<|object_ref_end|>",
219
+ "<|box_start|>",
220
+ "<|box_end|>",
221
+ "<|quad_start|>",
222
+ "<|quad_end|>",
223
+ "<|vision_start|>",
224
+ "<|vision_end|>",
225
+ "<|vision_pad|>",
226
+ "<|image_pad|>",
227
+ "<|video_pad|>",
228
+ "<d>",
229
+ "</d>",
230
+ "<|cutoff|>",
231
+ "<|lyrics_start|>",
232
+ "<|lyrics_end|>",
233
+ "<|caption_start|>",
234
+ "<|caption_end|>"
235
+ ],
236
+ "bos_token": null,
237
+ "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- for message in messages %}\n {%- if message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content_item in message.content %}\n {%- if 'text' in content_item %}\n {{- content_item.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and message.content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n",
238
+ "clean_up_tokenization_spaces": false,
239
+ "eos_token": "<|im_end|>",
240
+ "errors": "replace",
241
+ "model_max_length": 262144,
242
+ "pad_token": "<|endoftext|>",
243
+ "split_special_tokens": false,
244
+ "tokenizer_class": "Qwen2Tokenizer",
245
+ "unk_token": null
246
+ }
text_encoders/h3_tokenizer/vocab.json ADDED
The diff for this file is too large to render. See raw diff
 
text_encoders/qwen3vl-4b-h3student-BF16.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b6c55a51fe20aca2700fcedd228ad9af9b67f896a10ae5ff80092752c09145ba
3
+ size 8051286272
text_encoders/qwen3vl-4b-h3student-Q4_K_M.gguf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7ff66b1541723fc4c4c3f2cba75f72740fad43276ab1d6d564379e591a2e74e5
3
+ size 2497281792
text_encoders/te_adapter_v1.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ef2060e1a277820416d895812dd580234d3c2760af8e6d203b38e3df2e0952b0
3
+ size 125866312
vae/minimax_h3_video_vae_fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7c1f131492e7eddacaac9069a61b81bdd39de5cc96561e677c5eab1cdce5e522
3
+ size 5207808496