Views
No views yet
| File | Size | Format | Use case |
|---|---|---|---|
Huihui-Qwen3-VL-4B-Instruct-abliterated.safetensors | 8.88 GiB | BF16 single safetensors | Maximum fidelity / training / full-precision workflows |
Huihui-Qwen3-VL-4B-Instruct-abliterated-fp8_scaled.safetensors | 5.24 GiB | FP8 (E4M3FN) per-tensor scaled | ComfyUI Qwen3-VL Text Encoder node |
Huihui-Qwen3-VL-4B-Instruct-abliterated-int8_convrot.safetensors | 4.72 GiB | INT8 ConvRot (per-row scaled) | Native INT8 tensor cores — recommended on RTX 30/40/50 |
huihui-ai/Huihui-Qwen3-VL-4B-Instruct-abliterated (apache-2.0)Qwen/Qwen3-VL-4B-Instruct*.safetensors, 8.88 GiB)model-00001-of-00002.safetensors + model-00002-of-00002.safetensors). They were merged into a single safetensors file using the original model.safetensors.index.json mapping. No weights modified.bfloat16*-fp8_scaled.safetensors, 5.24 GiB)float8_e4m3fn for the 252 linear projections of the language model (q/k/v/o_proj + gate/up/down_proj across all layers). Embeddings, layer norms, biases and the entire visual encoder stay in BF16.float8_e4m3fn weights + float32 per-tensor scale + uint8[64] comfy_quant marker (JSON: {"format": "float8_e4m3fn", "full_precision_matrix_mult": false})max(|w|) / 448 (E4M3FN max)qwen3vl_4b_fp8_scaled.safetensors)*-int8_convrot.safetensors, 4.72 GiB)--qwen35 filter). Quantized directly from the BF16 source (not from FP8) using silveroxides/convert_to_quant..comfy_quant JSON marker: {"format": "int8_tensorwise", "orig_dtype": "torch.bfloat16", "convrot": true, "convrot_groupsize": 256, "per_row": true}weight_scale shape: per-row (N, 1), not scalar — the per-row scale is what makes ConvRot compatible with LoRA application at runtime1ctq -i Huihui-Qwen3-VL-4B-Instruct-abliterated.safetensors \
2 -o Huihui-Qwen3-VL-4B-Instruct-abliterated-int8_convrot.safetensors \
3 --int8 --convrot --convrot-group-size 256 \
4 --scaling_mode row \
5 --comfy_quant --save-quant-metadata --qwen35 \
6 --simple --low-memory --device cuda--scaling_mode row matters--scaling_mode tensor produces a single global scale per weight matrix (weight_scale shape ()). For ConvRot's per-row Hadamard rotation to remain correct on the quantization side, per-row scales are required (weight_scale shape (N, 1), one scale per output channel). Without --scaling_mode row, the file loads but LoRAs applied at runtime silently degrade to plain tensorwise INT8. Always verify after conversion:1from safetensors import safe_open
2import json
3with safe_open("…-int8_convrot.safetensors", framework="pt") as f:
4 raw = f.get_tensor([k for k in f.keys() if k.endswith('.comfy_quant')][0]).tolist()
5 print(json.loads(bytes(raw)))
6# Must contain: convrot=True, per_row=True, convrot_groupsize=256*-fp8_scaled.safetensors into your ComfyUI models/text_encoders/ directory.Huihui-Qwen3-VL-4B-Instruct-abliterated-fp8_scaled.*-int8_convrot.safetensors into your ComfyUI models/text_encoders/ directory.*.safetensors into models/text_encoders/.huihui-ai/Huihui-Qwen3-VL-4B-Instruct-abliterated has the matching tokenizer, processor and configs. For BF16 inference:1from transformers import AutoProcessor, Qwen3VLForConditionalGeneration
2import torch
3
4model = Qwen3VLForConditionalGeneration.from_pretrained(
5 "ahmed22xa/Huihui-Qwen3-VL-4B-Instruct-abliterated-comfy",
6 torch_dtype=torch.bfloat16,
7 device_map="auto",
8)
9processor = AutoProcessor.from_pretrained("huihui-ai/Huihui-Qwen3-VL-4B-Instruct-abliterated")transformers.from_pretrained directly — it follows ComfyUI's per-tensor-FP8 layout with comfy_quant markers.Qwen/Qwen3-VL-4B-Instruct).