File size: 3,573 Bytes
13d5b49
 
 
 
 
 
 
 
 
700763d
 
13d5b49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
700763d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13d5b49
 
 
 
 
700763d
13d5b49
700763d
 
 
13d5b49
 
700763d
 
 
 
13d5b49
 
700763d
13d5b49
 
 
 
 
 
 
 
700763d
13d5b49
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
---
license: apache-2.0
base_model:
- Qwen/Qwen3-32B
pipeline_tag: text-generation
tags:
- comfyui
- qwen3
- int8
- w4a8
- w6a8
- convrot
- text-generation
---

# Language models for ComfyUI

Language models converted to one ComfyUI file each, quantized in ComfyUI's own formats, for
writing text inside a graph: prompt writing, chat and retrieval. Load them with the **Language
Model Loader** node from [WAS Node Suite](https://github.com/WASasquatch/was-node-suite-comfyui),
which hands a CLIP to core **Generate Text**, **Fast Generate Text** and **LLM From CLIP**.

## Files

Put them in `ComfyUI/models/text_encoders`.

| Model | File | Size | Weights | Writing speed, RTX 4090 24 GB |
|---|---|--:|---|--:|
| [Qwen3 32B](https://huggingface.co/Qwen/Qwen3-32B) | [`Qwen3-32B/qwen3_32b_w4a8.safetensors`](Qwen3-32B/qwen3_32b_w4a8.safetensors) | 19.1 GB | 4-bit weights in groups of 16, 8-bit activations | 27.6 tokens/s |
| | [`Qwen3-32B/qwen3_32b_w6a8.safetensors`](Qwen3-32B/qwen3_32b_w6a8.safetensors) | 26.0 GB | 6-bit weights in groups of 32, 8-bit activations | 3.3 tokens/s |
| | [`Qwen3-32B/qwen3_32b_int8_convrot.safetensors`](Qwen3-32B/qwen3_32b_int8_convrot.safetensors) | 32.8 GB | 8-bit weights | 1.5 tokens/s |

Speeds are Fast Generate Text's graph decode, greedy, with ComfyUI's `--reserve-vram 2`. A file
that fits on the graphics card runs from it; a larger one streams part of its weights from system
memory for every token, which is why w6a8 and int8 are slow on a 24 GB card. On a 32 GB card the
w6a8 file fits. Licence for all three: [Apache-2.0](Qwen3-32B/LICENSE),
[notice](Qwen3-32B/NOTICE.md).

| | w4a8 | w6a8 | int8 convrot |
|---|--:|--:|--:|
| Mean weight error of the layer linears | 7.3% | 2.3% | 0.91% |

## Qwen3 32B

Qwen's dense 32B model with its own output layer, all 64 layers, 40,960 tokens of context, and
the hybrid thinking switch: Generate Text's `thinking` input turns reasoning on, and off it answers
straight away. All three files gave the same greedy answer to the same question.

- Every layer's linears are quantized, each row rotated by a 256-wide Hadamard block before
  rounding (ConvRot, as Comfy-Org quantizes its Qwen text encoders). The embedding and the output
  layer are int8 in every file. Norms stay bfloat16.
- Tensor names are Qwen's own (`model.layers.0.self_attn.q_proj.weight`, `lm_head.weight`), with
  a `comfy_quant` tag beside each quantized layer.
- In the w4a8 and w6a8 files each layer's `mlp.down_proj`, 25,600 inputs wide, is stored as two
  12,800-wide column halves, `mlp.down_proj.parts.0` and `mlp.down_proj.parts.1`, whose outputs
  add up to the layer's. ComfyUI's 4-bit and 6-bit kernels take a layer up to 17,408 inputs wide.
  Language Model Loader adds the halves back up.
- ComfyUI's **Load CLIP** does not read a 32B Qwen3: it takes a 5120-wide Qwen3 for Mistral 24B.
  **Language Model Loader** builds it on ComfyUI's own Qwen3 model.
- w4a8 and w6a8 need an RTX 30 series card or newer; int8 convrot an RTX 20 series or newer.
- It reads text only. MiniMax H3's `qwen3vl_32b` text encoder is a different file: the first 50
  layers of Qwen3-VL 32B with no output layer, which conditions H3 and cannot write text.

Tested with ComfyUI 0.42.

## License

Qwen3 32B is by the Qwen team at Alibaba Cloud and is licensed under the Apache License 2.0, a copy
of which is in [`Qwen3-32B/LICENSE`](Qwen3-32B/LICENSE). The files here are modified from
[Qwen/Qwen3-32B](https://huggingface.co/Qwen/Qwen3-32B) by WAS: what changed is listed in
[`Qwen3-32B/NOTICE.md`](Qwen3-32B/NOTICE.md).