Views
No views yet
Qwen/Qwen3-VL-32B-Instruct as its text encoder — we
verified this (1058 tensors, 66.7 GB, identical key structure), so this artifact is just a
quantisation of the official Qwen weights, nothing H3-specific.accelerate.cpu_offload, which streams the whole model across PCIe on every
request. In a three-stage H3 deployment that made text encoding the pipeline bottleneck.| bf16 + cpu_offload | this artifact (NF4 resident) | |
|---|---|---|
| text encode per request | 7.4 – 8.5 s | 0.09 s (text-only) / 0.5 – 1.5 s (with a keyframe) |
| weights on disk | 66.7 GB | 19 GB |
| VRAM while resident | 1.5 GB (weights keep crossing PCIe) | 18.2 GB |
| load time | ~16 s (read 66.7 GB + quantise) | ~6 s |
prompt_embeds versus the bf16 reference: cosine 1.00003, relative L2 1.6 %.| comparison | PSNR |
|---|---|
| same file against itself | ∞ |
| bf16 ↔ NF4, first+last-frame conditioning | 24 – 29 dB |
| bf16 ↔ NF4, first-frame conditioning | 18 – 28 dB |
| bf16 ↔ NF4, text-to-video | 15 – 17 dB |
| same config, different seed | 8.6 – 10.2 dB |
1from transformers import Qwen3VLForConditionalGeneration
2
3text_encoder = Qwen3VLForConditionalGeneration.from_pretrained(
4 "moonzerokevin/qwen3vl-32b-minimax-h3-nf4", device_map="cuda")1pipe = ModularPipeline.from_pretrained(h3_path, workflow="fl2va")
2pipe.load_components(names=["tokenizer", "processor", "vae", ...]) # skip text_encoder
3pipe.text_encoder = text_encoderbitsandbytes (tested with 0.50.1 on sm120).RedHatAI/Qwen3-VL-32B-Instruct-NVFP4 (compressed-tensors, ~16 GB) loads under
transformers but cannot run inference there — the NVFP4 kernels live in vLLM; the
forward pass fails with 'Linear' object has no attribute 'weight'. That is why this
artifact uses bitsandbytes NF4 instead.bnb_4bit_use_double_quant=True), compute dtype bfloat16.