Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: other
|
| 3 |
+
license_name: krea-2-community-license
|
| 4 |
+
license_link: https://huggingface.co/krea/Krea-2-Turbo
|
| 5 |
+
tags:
|
| 6 |
+
- krea2
|
| 7 |
+
- diffusion
|
| 8 |
+
- dit
|
| 9 |
+
- comfyui
|
| 10 |
+
- int8
|
| 11 |
+
- int8_tensorwise
|
| 12 |
+
- convrot
|
| 13 |
+
- quantization
|
| 14 |
+
base_model:
|
| 15 |
+
- krea/Krea-2-Turbo
|
| 16 |
+
- krea/Krea-2
|
| 17 |
+
---
|
| 18 |
+
|
| 19 |
+
# Krea 2 INT8 ConvRot (native `int8_tensorwise`)
|
| 20 |
+
|
| 21 |
+
Native ComfyUI INT8 ConvRot checkpoints for **Krea 2 Turbo** and **Krea 2 Raw**,
|
| 22 |
+
quantized from the official BF16 weights so they load with the stock
|
| 23 |
+
**Load Diffusion Model** (`UNETLoader`) node — **no** `OTUNetLoaderW8A8` /
|
| 24 |
+
ComfyUI-INT8-Fast custom loader required.
|
| 25 |
+
|
| 26 |
+
## Files
|
| 27 |
+
|
| 28 |
+
| File | Size | Source BF16 | Notes |
|
| 29 |
+
|---|---|---|---|
|
| 30 |
+
| `Krea2-Turbo-int8-ConvRot.safetensors` | ~13.2 GB | `krea2_turbo_bf16.safetensors` ([Comfy-Org/Krea-2](https://huggingface.co/Comfy-Org/Krea-2)) | 8-step distilled |
|
| 31 |
+
| `Krea2-Raw-int8-ConvRot.safetensors` | ~13.2 GB | `krea2_raw_bf16.safetensors` | Undistilled base |
|
| 32 |
+
|
| 33 |
+
Place both under `ComfyUI/models/diffusion_models/`.
|
| 34 |
+
|
| 35 |
+
## Per-tensor metadata (`.comfy_quant` JSON)
|
| 36 |
+
|
| 37 |
+
```json
|
| 38 |
+
{
|
| 39 |
+
"format": "int8_tensorwise",
|
| 40 |
+
"orig_dtype": "torch.bfloat16",
|
| 41 |
+
"convrot": true,
|
| 42 |
+
"convrot_groupsize": 256,
|
| 43 |
+
"per_row": true
|
| 44 |
+
}
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
Older “INT8-Fast” exports that only carry
|
| 48 |
+
`{"convrot": true, "per_row": true}` (no `"format": "int8_tensorwise"`)
|
| 49 |
+
do **not** load in stock ComfyUI ≥ 0.27 — this repo replaces those.
|
| 50 |
+
|
| 51 |
+
## Requirements
|
| 52 |
+
|
| 53 |
+
- **ComfyUI ≥ 0.27.0** (native `int8_tensorwise` + ConvRot)
|
| 54 |
+
- **comfy-kitchen** with INT8 kernels (shipped with current ComfyUI)
|
| 55 |
+
- NVIDIA GPU with INT8 tensor cores (RTX 30 / 40 / 50, SM ≥ 7.5)
|
| 56 |
+
- Companion assets (unchanged): Qwen3-VL text encoder + Qwen Image VAE
|
| 57 |
+
|
| 58 |
+
## Usage (ComfyUI)
|
| 59 |
+
|
| 60 |
+
1. Drop the `.safetensors` into `models/diffusion_models/`
|
| 61 |
+
2. Use **Load Diffusion Model** (`UNETLoader`), `weight_dtype: default`
|
| 62 |
+
3. Standard Krea 2 graph: CLIPLoader (`type: krea2`) → CLIPTextEncode → KSampler / FLS → VAEDecode
|
| 63 |
+
|
| 64 |
+
LoRAs: use a normal LoRA stack / `LoraLoader` on the MODEL output. Prefer
|
| 65 |
+
`clip_strength = 0` for Krea UNet-only LoRAs so text encode can cache.
|
| 66 |
+
|
| 67 |
+
## Conversion (reproduce)
|
| 68 |
+
|
| 69 |
+
```bash
|
| 70 |
+
ctq -i krea2_turbo_bf16.safetensors \
|
| 71 |
+
-o Krea2-Turbo-int8-ConvRot.safetensors \
|
| 72 |
+
--int8 --convrot --convrot-group-size 256 \
|
| 73 |
+
--scaling_mode row \
|
| 74 |
+
--comfy_quant --save-quant-metadata --krea2 \
|
| 75 |
+
--simple --low-memory --device cuda
|
| 76 |
+
```
|
| 77 |
+
|
| 78 |
+
Same for Raw (`krea2_raw_bf16.safetensors`). `--scaling_mode row` is mandatory.
|
| 79 |
+
|
| 80 |
+
### Verify after convert
|
| 81 |
+
|
| 82 |
+
```python
|
| 83 |
+
from safetensors import safe_open
|
| 84 |
+
import json
|
| 85 |
+
with safe_open("Krea2-Turbo-int8-ConvRot.safetensors", framework="pt") as f:
|
| 86 |
+
raw = f.get_tensor([k for k in f.keys() if k.endswith(".comfy_quant")][0]).tolist()
|
| 87 |
+
print(json.loads(bytes(raw)))
|
| 88 |
+
# Must include: format=int8_tensorwise, convrot=True, per_row=True, convrot_groupsize=256
|
| 89 |
+
```
|
| 90 |
+
|
| 91 |
+
## Provenance
|
| 92 |
+
|
| 93 |
+
- **Upstream Turbo:** [krea/Krea-2-Turbo](https://huggingface.co/krea/Krea-2-Turbo) / Comfy packaging [Comfy-Org/Krea-2](https://huggingface.co/Comfy-Org/Krea-2)
|
| 94 |
+
- **Upstream Raw:** Krea 2 Raw BF16 (Comfy-Org packaging)
|
| 95 |
+
- **Quant tool:** [silveroxides/convert_to_quant](https://github.com/silveroxides/convert_to_quant) (`ctq`)
|
| 96 |
+
- **Quant date:** 2026-08-20
|
| 97 |
+
- Architecture profile: `--krea2` (sensitive first/last/modulation layers kept high precision)
|
| 98 |
+
|
| 99 |
+
## License
|
| 100 |
+
|
| 101 |
+
Follow the upstream **Krea 2 Community License** for the base models. This repo
|
| 102 |
+
only redistributes lossy INT8+ConvRot re-quantizations of those weights.
|