Qwen3.5-9B for ComfyUI
ComfyUI-format LoRAs for the Qwen3.5-9B text encoder. They stack, so one encoder covers all of them.
| File | Size | |
|---|---|---|
loras/minimax-h3-prompt-rewriter-9b-ref2va_lora_rank32_bf16.safetensors |
173 MB | Rewrites a request plus ordered references into an H3 Ref2VA prompt (six-section schema). lightx2v's Qwen3.5-9B-Ref2VA merged checkpoint, re-expressed as the LoRA it was merged from. |
loras/minimax-h3-prompt-rewriter-9b-fl2va_lora_rank32_bf16.safetensors |
173 MB | Rewrites a request, optionally with first/last keyframes, into an H3 T2VA / I2VA / L2VA / FL2VA prompt (three-field schema). From lightx2v's Qwen3.5-9B-FL2VA. |
loras/qwen35-9b-hauhaucs_uncensored_lora_rank4_fp32.safetensors |
13.4 MB | Reproduces HauhauCS Uncensored Aggressive on the stock encoder instead of a second checkpoint. Removes refusal behaviour. |
Use
LoRAs into models/loras/, plus a Qwen3.5-9B encoder from
Comfy-Org/Qwen3.5
(qwen3.5_9b_bf16 or qwen3.5_9b_int8_convrot) into models/text_encoders/.
CLIPLoader -> Load LoRA (Text Encoder) -> Generate Text
- Leave CLIPLoader's
typeon the default — Qwen3.5-9B is detected from the weights. - Strength
1.0is the merged model exactly; the rewriters were trained for 1.0. - Greedy decoding (
sampling_mode: off),thinkingoff. The rewriters answer directly after an empty<think></think>block, which is what ComfyUI's Qwen3.5 template emits with thinking off.
The rewriters need their trained prompt
lightx2v ships the 9B checkpoints without a prompt template. Their
Omni rewriter bundle
from the same training generation documents the system prompts (system_prompt.py:
SYSTEM_PROMPT for T2AV / I2AV / L2AV / FL2AV, REF2AV_SYSTEM_PROMPT for Ref2AV) and the request
layout (infer.py), and both 9B LoRAs answer in the right schema with it:
<|im_start|>system
{SYSTEM_PROMPT or REF2AV_SYSTEM_PROMPT}<|im_end|>
<|im_start|>user
Ordered MiniMax-H3 references: <- Ref2AV only; keyframe tasks label each picture
<Picture 1>: with its role ("— exact first frame at 0.00 seconds:")
<|vision_start|><|image_pad|><|vision_end|>
Rewrite request:
task: REF2AV (T2AV / I2AV / L2AV / FL2AV with the other LoRA)
resolution: 16:9
effective_duration: 10.21s (H3's 17n+5 frame grid at 24 fps)
raw_prompt: {your request}<|im_end|>
<|im_start|>assistant
<think>
</think>
Feed that whole string to Generate Text with use_default_template off; ComfyUI binds each
<|image_pad|> to the next image in the batch, in order.
How they were made
A plain weight diff, merged − Qwen/Qwen3.5-9B, factored per matrix with SVD in fp32 from the
bf16 checkpoints. Every adapted matrix has exactly 32 singular values above the bf16 rounding
floor and then a cliff (lightx2v merged a rank-32 adapter with ms-swift), so rank 32 recovers the
adapter itself; the residual is the merge's own rounding.
- 248 matrices, language model only: every linear in all 32 layers —
linear_attn.in_proj_qkv / in_proj_z / in_proj_a / in_proj_b / out_proj,self_attn.q/k/v/o_proj,mlp.gate/up/down_proj. The vision tower, embeddings,lm_head, norms and the MTP head are byte-identical to the base. - Delta energy kept at rank 32: 98.3% (Ref2VA) and 99.8% (FL2VA) (the rest is bf16 rounding noise of the merge).
- Keys are ComfyUI's generic text-encoder form
(
text_encoders.transformer.model.layers.N.<module>.lora_{down,up}.weight), bf16, no alpha.
The uncensored LoRA is documented in its earlier revision: rank 4, language model only, next-token KL to the uncensored model 0.337 → 0.0007.
Credits
Qwen3.5-9B (Apache-2.0) · lightx2v (Apache-2.0) — all rewriting behaviour is theirs, this only re-expresses their merged checkpoints as LoRAs · HauhauCS (Apache-2.0) · nDimensional (Apache-2.0).