docs: honest model card (validation status + fleet-specific perf caveat)
Browse files
README.md
CHANGED
|
@@ -17,57 +17,29 @@ tags:
|
|
| 17 |
- 4-bit
|
| 18 |
---
|
| 19 |
|
| 20 |
-
# Qwen-Image — fni8 (
|
| 21 |
|
| 22 |
-
|
| 23 |
-
to the `.fni8` format, for the [fni8](https://github.com/jajmangold/fni8) DP4A kernels
|
| 24 |
-
on NVIDIA Volta (sm_70) GPUs (Tesla V100 and CMP 100-210). It is a derivative of the
|
| 25 |
-
parent model; its license and acceptable uses follow the parent, linked above.
|
| 26 |
|
| 27 |
-
##
|
| 28 |
|
| 29 |
-
|
| 30 |
-
|------|-----------|--------|------|
|
| 31 |
-
| `Qwen__Qwen-Image.dit.b4.fni8` | int4 | int4 per-group W4A8 (int8 activations) | 10.92 GB |
|
| 32 |
|
| 33 |
-
|
| 34 |
-
the resident dp4a VRAM layout, so loading is a memory-map and copy with no dequantize
|
| 35 |
-
or repack step.
|
| 36 |
|
| 37 |
-
|
|
|
|
| 38 |
|
| 39 |
-
|
| 40 |
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
- Linear and attention weights go to int8 (per-row) or int4 (per-group), with fp32
|
| 44 |
-
scales. Norms, embeddings, and the MoE router are kept in fp16.
|
| 45 |
-
- Source dtype: `bfloat16`. Non-quantized tensors are stored fp16, upcast to fp32 only where fp16 would overflow.
|
| 46 |
-
- Target hardware is sm_70, where the fp16 tensor cores are firmware-limited, so the
|
| 47 |
-
integer `__dp4a` path is used for the matmuls.
|
| 48 |
-
|
| 49 |
-
## Intended use and scope
|
| 50 |
-
|
| 51 |
-
- For inference with the fni8 runtimes above, on Volta (sm_70) GPUs.
|
| 52 |
-
- Out of scope: other GPU architectures (the kernels require sm_70), and anything the
|
| 53 |
-
parent model's license does not permit. It is a derivative, not a new model.
|
| 54 |
|
| 55 |
## Limitations
|
| 56 |
|
| 57 |
-
- Quantization is lossy
|
| 58 |
-
|
| 59 |
-
- This
|
| 60 |
-
Evaluate on your own task before relying on it.
|
| 61 |
-
- Any capabilities, biases, and risks of the parent model carry over. See the parent
|
| 62 |
-
model card for those.
|
| 63 |
-
|
| 64 |
-
## License
|
| 65 |
-
|
| 66 |
-
Follows the parent model (`apache-2.0`). This is a
|
| 67 |
-
derivative quantization, not a relicense.
|
| 68 |
|
| 69 |
---
|
| 70 |
|
| 71 |
-
Part of the fni8 stack: [kernels](https://github.com/jajmangold/fni8) ·
|
| 72 |
-
[LLM serving](https://github.com/jajmangold/fni8-serve) ·
|
| 73 |
-
[ComfyUI DiTs](https://github.com/jajmangold/ComfyUI-fni8).
|
|
|
|
| 17 |
- 4-bit
|
| 18 |
---
|
| 19 |
|
| 20 |
+
# Qwen-Image — fni8 (int8/W4A8 dp4a, Volta sm_70)
|
| 21 |
|
| 22 |
+
Diffusion transformer (DiT), quantized from [`Qwen/Qwen-Image`](https://huggingface.co/Qwen/Qwen-Image). Repackaged to the **`.fni8`** resident format (~31.4 GB (int4 DiT)) for the [fni8](https://github.com/jajmangold/fni8) **W8A8/W4A8 DP4A** kernels on **NVIDIA Volta (sm_70)** — Tesla V100 / CMP 100-210.
|
|
|
|
|
|
|
|
|
|
| 23 |
|
| 24 |
+
## Status
|
| 25 |
|
| 26 |
+
**Validated:** end-to-end ComfyUI-fni8 sanity pass (a one-step output that is finite and non-constant — a sanity check, not a quality benchmark). **Performance is fleet-specific.** All fni8 speedups are measured on the CMP 100-210 mining-card fleet, where the fp16 tensor cores are firmware-gimped. These numbers do **not** transfer to a real Tesla V100 (whose fp16 tensor cores would beat dp4a).
|
|
|
|
|
|
|
| 27 |
|
| 28 |
+
## Format
|
|
|
|
|
|
|
| 29 |
|
| 30 |
+
- **Weights:** int4 per-group W4A8 (int8 activations), fp32 scales, resident dp4a VRAM layout.
|
| 31 |
+
- **Why dp4a:** sm_70 has no int8 tensor cores, so the matmul contraction runs on the `__dp4a` CUDA-core intrinsic. On the CMP 100-210 fleet (whose fp16 tensor cores are firmware-limited) dp4a is the fast path, not a compromise.
|
| 32 |
|
| 33 |
+
## How to run
|
| 34 |
|
| 35 |
+
[ComfyUI-fni8](https://github.com/jajmangold/ComfyUI-fni8) is the runtime (`UnetLoaderFNI8` runs the diffusion transformer through the dp4a kernels; the text encoder and VAE are unchanged). fni8-serve is for LLMs only and does not load this model.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
## Limitations
|
| 38 |
|
| 39 |
+
- Quantization is lossy: int8 (and especially int4) outputs differ from the fp16/bf16 parent, and the difference varies by task.
|
| 40 |
+
- Capabilities, biases, and risks of the parent model carry over — see the parent card.
|
| 41 |
+
- This is a derivative quantization, not a relicense; the parent model's license and acceptable uses apply.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
---
|
| 44 |
|
| 45 |
+
Part of the fni8 stack: [kernels](https://github.com/jajmangold/fni8) · [LLM serving](https://github.com/jajmangold/fni8-serve) · [ComfyUI DiTs](https://github.com/jajmangold/ComfyUI-fni8).
|
|
|
|
|
|