Qwen3-VL 8B Abliterated β INT8 ConvRot Text Encoder for ComfyUI / Qwen-Image 2.1
This repository contains a ComfyUI-compatible INT8 ConvRot build of
huihui-ai/Huihui-Qwen3-VL-8B-Instruct-abliterated, prepared for use as the
Qwen3-VL text/conditioning encoder with Qwen-Image 2.1.
Uploaded by retrocool.
File
qwen3vl_8b_int8_convrot_abliterated.safetensors
This is not a Qwen-Image diffusion model. It is the Qwen3-VL-8B encoder used by Qwen-Image 2.1 for prompt conditioning.
Source model
The source checkpoint is:
huihui-ai/Huihui-Qwen3-VL-8B-Instruct-abliterated
That model is itself based on Qwen/Qwen3-VL-8B-Instruct and was modified using abliteration. According to the upstream model card, the abliteration was applied to the text portion of Qwen3-VL rather than its vision portion.
Upstream:
- https://huggingface.co/huihui-ai/Huihui-Qwen3-VL-8B-Instruct-abliterated
- https://huggingface.co/Qwen/Qwen3-VL-8B-Instruct
What was changed
The original Hugging Face checkpoint was distributed across multiple
safetensors shards.
The shards were first merged into a single checkpoint. The resulting model was
then quantized using ctq with:
- INT8 quantization
- row-wise scaling
- ConvRot
- ConvRot group size 256
- ComfyUI quantization metadata
Selected layers were excluded from quantization, including embeddings, final normalization, the first and last language-model layers, Q/K normalization weights, layer-normalization weights, and the visual tower.
No additional training, fine-tuning, or abliteration was performed by me.
ComfyUI usage
Place the file in:
ComfyUI/models/text_encoders/
Then load it with a CLIPLoader configured for:
type: qwen_image
Use it in place of the standard Qwen3-VL text encoder in a Qwen-Image 2.1 workflow.
For example:
Qwen-Image 2.1 diffusion model
+
qwen3vl_8b_int8_convrot_abliterated.safetensors
β
CLIPLoader (qwen_image)
β
Qwen-Image conditioning
I have tested this checkpoint successfully with Qwen-Image 2.1 in ComfyUI.
Conversion
The Hugging Face shards were merged with:
from safetensors.torch import load_file, save_file
import glob
src = "qwen3vl-abliterated"
out = "qwen3vl_8b_abliterated.safetensors"
merged = {}
for f in sorted(glob.glob(f"{src}/model-*.safetensors")):
merged.update(load_file(f))
save_file(merged, out)
The merged checkpoint was then quantized with:
ctq \
-i qwen3vl_8b_abliterated.safetensors \
-o qwen3vl_8b_int8_convrot_abliterated.safetensors \
--int8 \
--scaling_mode row \
--convrot \
--convrot-group-size 256 \
--exclude-layers '(^lm_head\.weight$|^model\.language_model\.embed_tokens\.weight$|^model\.language_model\.norm\.weight$|^model\.language_model\.layers\.(0|35)\.|_layernorm\.weight$|\.(q|k)_norm\.weight$|^model\.visual\.)' \
--comfy_quant \
--save-quant-metadata \
--device cuda
Notes
This checkpoint changes only the encoder used to produce conditioning for Qwen-Image 2.1. The Qwen-Image diffusion model itself is unchanged.
In my own side-by-side testing it works correctly and has sometimes produced slightly preferable results compared with the standard encoder, but image quality and prompt adherence are subjective and workflow-dependent.
Credits
- Qwen Team β Qwen3-VL and Qwen-Image
- huihui-ai β
Huihui-Qwen3-VL-8B-Instruct-abliterated - ComfyUI / Comfy quantization tooling β INT8 ConvRot support
- retrocool β conversion and packaging of this checkpoint
License
The upstream Huihui checkpoint is published under the Apache 2.0 license. Refer to the upstream repositories for their complete license terms and usage requirements.
Model tree for retrocool/qwen3vl-8b-int8-convrot-abliterated
Base model
Qwen/Qwen3-VL-8B-Instruct