QuantFunc commited on
Commit
e0c7a77
Β·
verified Β·
1 Parent(s): a04f68c

feat: add root config.json (HF download-counter query file) + README note

Browse files
Files changed (2) hide show
  1. README.md +5 -2
  2. config.json +16 -0
README.md CHANGED
@@ -42,14 +42,17 @@ license: apache-2.0
42
 
43
  ## What this repository provides
44
 
45
- A single file β€” the precision config, nothing else:
46
 
47
  ```
48
  Ideogram-4-Series/
 
49
  └── precision-config/
50
- └── ideogram4_a4w4.json # per-layer precision map for the Lighting backend (W4A4)
51
  ```
52
 
 
 
53
  We deliberately **do not host Ideogram 4 weights**. The QuantFunc **Lighting** backend does **runtime** quantization: you load the *official* weights and they are quantized **in-memory at load**, so no pre-quantized checkpoint is ever distributed.
54
 
55
  ## How to use
 
42
 
43
  ## What this repository provides
44
 
45
+ Just the precision config β€” **no weights**:
46
 
47
  ```
48
  Ideogram-4-Series/
49
+ β”œβ”€β”€ config.json # canonical per-layer precision map (W4A4)
50
  └── precision-config/
51
+ └── ideogram4_a4w4.json # identical copy, named for manual / plugin use
52
  ```
53
 
54
+ > `config.json` and `precision-config/ideogram4_a4w4.json` are **identical**. Both are the W4A4 precision map β€” pick whichever your workflow expects.
55
+
56
  We deliberately **do not host Ideogram 4 weights**. The QuantFunc **Lighting** backend does **runtime** quantization: you load the *official* weights and they are quantized **in-memory at load**, so no pre-quantized checkpoint is ever distributed.
57
 
58
  ## How to use
config.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_comment": "Ideogram-4 per-layer precision map (mirrors klein-style configs/flux2-klein-*.json). Heavy block GEMMs (attention + FFN) are 4-bit (AUTO_4 β†’ INT4 on SM89, FP4 on SM120); the sensitive non-block PROJECTION GEMMs are 8-bit AUTO_8 ('8' β†’ FP8 on SM89+, INT8 on older; W8A8) β€” MEASURED on the dual-transformer 24GB to fit (cuda_overhead 399 MB) and render a coherent prompt-matching image, with sharper detail than FP16-non-block. Both 8-bit variants verified coherent on SM89 (i8 dashboard-run + f8 CLI-run, each cuda_overhead 399 MB); AUTO_8 picks FP8 on SM89 (native FP8 tensor cores, better dynamic range than INT8 for these sensitive projections). Only the adaln_modulation GEMVs (block + final) stay FP16 (16): they are M=1 GEMVs whose per-token activation quantization is too lossy (conditioning collapse; mirrors ZImage's ZImageBlockPrecision.modulation=FP16 default), and the engine's quantizeWeights deliberately skips them. Keys match the layer-path prefixes used by Ideogram4TransformerLighting::quantizeBlockWeights + Ideogram4Block::quantizeWeights (the numeric block index is skipped by PrecisionMap::matchesPrefix, so 'layers.attention.qkv' matches layers.0..33). Per entry: (1) 'layers.attention.qkv/o' β†’ self-attention projections, large K/N, quant-robust β†’ 4; (2) 'layers.feed_forward.w1/w2/w3' β†’ SwiGLU MLP, largest matrices, primary memory target β†’ 4; (3) 'layers.adaln_modulation' β†’ adaLN modulation GEMV (M=1), NOT called by quantizeWeights β†’ 16; (4) 'input_proj'/(5)'llm_cond_proj'/(6)'t_embedding.*'/(7)'adaln_proj'/(8)'final_layer.linear' β†’ non-block projection GEMMs β†’ AUTO_8 ('8': FP8 on SM89+, INT8 older); (9) 'final_layer.adaln_modulation' β†’ final conditioning GEMV β†’ 16. Net: 170 block GEMMs at 4-bit, 5 non-block projection GEMMs at AUTO_8 (FP8 on SM89), 2 adaln-modulation GEMVs at FP16.",
3
+ "layers.attention.qkv": 4,
4
+ "layers.attention.o": 4,
5
+ "layers.feed_forward.w1": 4,
6
+ "layers.feed_forward.w2": 4,
7
+ "layers.feed_forward.w3": 4,
8
+ "layers.adaln_modulation": 16,
9
+ "input_proj": 8,
10
+ "llm_cond_proj": 8,
11
+ "t_embedding.mlp_in": 8,
12
+ "t_embedding.mlp_out": 8,
13
+ "adaln_proj": 8,
14
+ "final_layer.linear": 8,
15
+ "final_layer.adaln_modulation": 16
16
+ }