Qwen3-VL-32B 拆成两半进 ComfyUI,INT8 编码器只要 24GB
Qwen3-VL-32B 拆成两半进 ComfyUI,INT8 编码器只要 24GB
Hugging Face 上 ethanfel 发了一个 ComfyUI H3 格式的 Qwen3-VL-32B 量化包,把模型拆成 conditioning encoder(0-49 层)和 generation tail(50-63 层)。INT8 版本编码器 24.55 GiB,BF16 版本 47.97 GiB,tail 最轻便的 NVFP4/AWQ 格式只要 5.14 GiB。来源模型是 llmfan46 的 Ultra Heretic 无审查变体,原始 32B 模型来自 Qwen/Qwen3-VL-32B-Instruct。
拆分的设计逻辑很清楚:H3 架构里 conditioning 只需要到第 49 层,第 50 层之后的未归一化隐藏状态才是 H3 的输入。ethanfel 把 0-49 层加上完整 vision tower 打包成一个常驻的 conditioning encoder,生成阶段只需要临时加载 50-63 层这一段 tail,生成完就卸载,base CLIP 保持 50 层不变。跑多次生成只需要 loader 一次 tail,不用每次都把整个 32B 模型搬进显存。
INT8 ConvRot 的量化策略是学出来的,不是简单截断。用的是 silveroxides/convert_to_quant 1.3.1,AdamW AdaRound 优化带 plateau 早停,迭代 4000 轮。语言层矩阵用 row-wise INT8 ConvRot,group size 256;token embedding 因为 ComfyUI 的 embedding lookup 要求只能用简单的 tensorwise INT8;vision tower 完全保留 BF16 不动。语言部分从 47.97 GiB 压到 24.55 GiB,vision tower 的精度不受影响。
测试环境是 ComfyUI 14b0522、comfy-kitchen 0.2.26、PyTorch 2.8.0+cu128、RTX 5090 32GB。encode 完成后显存占用约 24.7 GiB allocated / 26.1 GiB reserved,输出 shape 是 (1, 12, 5120),modality token tags 也对。tail 加载后跑完 64 层生成,卸载后 base CLIP 回到 50 层,没有 norm 和 LM head 残留,再 encode 一次 H3 conditioning 输出 (1, 4, 5120),结构完整。NVFP4/AWQ 版本在 RTX PRO 6000 Blackwell 上也测过,流程一致。
来源模型的 uncensoring 效果有具体数字:Heretic v1.2.0 的 ARA 编辑改了语言层 31-40 的 attn.o_proj,这些层全在 0-49 范围内所以都保留了。原始模型 100 次里有 99 次拒绝,改后降到 4 次,KL divergence 0.0421,PIQA 92.87%,MMLU 79.87%。材料也说了,ablation 减少拒绝行为但不保证去掉所有安全行为,也可能影响模型质量。
放到 ComfyUI/models/text_encoders/H3/ 下就行,用标准的 CLIPLoader 选 H3-compatible 类型。要加 prompt 增强就接一个 H3 Prompt Enhancer 节点,把 tail 选进 clip_tail 槽位,enhanced_prompt 和原 clip 一起喂给 H3 guide node。不想用增强器就直接连完整 CLIP,tail 槽位留空。
文件清单:
- conditioning encoder BF16:47.97 GiB,902 tensors
- conditioning encoder INT8 ConvRot:24.55 GiB,1604 tensors(350 个 INT8 语言矩阵 + 551 个 BF16 保护张量)
- Ultra Heretic tail INT8:7.09 GiB
- Ultra Heretic tail BF16:15.21 GiB
- Instruct tail INT8:7.09 GiB
- Instruct tail BF16:15.21 GiB
- Instruct tail NVFP4/AWQ:5.14 GiB(含 BF16 norm 和 LM head)
所有文件都有 SHA-256,结构验证也是 byte-for-byte 对照过 BF16 源文件的,551 个保护张量和 57 个 tail 保留张量都完全一致。902 + 156 = 1058 个张量,正好拼回完整模型的拓扑,没有 key 冲突。
CUDA 12.8 的 PyTorch 构建因为 comfy-kitchen 这个版本推荐 CUDA 13.0+ 才用了 fallback ops,encode 是跑通了但建议用推荐的 PyTorch 版本。
仓库地址:https://huggingface.co/ethanfel/Qwen3-VL-32B-Ultra-Heretic-H3-ComfyUI-INT8-ConvRot
来源模型:https://huggingface.co/llmfan46/Qwen3-VL-32B-Instruct-ultra-uncensored-heretic
原始 Qwen3-VL-32B:https://huggingface.co/Qwen/Qwen3-VL-32B-Instruct
量化工具:https://github.com/silveroxides/convert_to_quant
独立文本生成节点:https://github.com/ethanfel/ComfyUI-H3-Qwen3VL-TextGen