File size: 16,324 Bytes
31596cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
---
license: mit
library_name: gguf
pipeline_tag: text-generation
inference: false
base_model: inclusionAI/Ling-3.0-tiny
base_model_relation: quantized
model_name: Ling-3.0-tiny GGUF
quantized_by: Mike0021
tags:
  - gguf
  - llama.cpp
  - bailingmoe3
  - mixture-of-experts
  - quantized
  - reasoning
  - conversational
---

# Ling-3.0-tiny GGUF

Unofficial GGUF conversion and importance-matrix quantizations of
[inclusionAI/Ling-3.0-tiny](https://huggingface.co/inclusionAI/Ling-3.0-tiny),
created from immutable source revision
[`a2ee06c0`](https://huggingface.co/inclusionAI/Ling-3.0-tiny/tree/a2ee06c0f2de5b171701aee7f73f70a1da75483b).
No fine-tuning, merging, or other parameter training was performed. The
original model documentation, intended use, benchmark claims, and limitations
remain authoritative.

> **Experimental runtime requirement**
>
> As of 2026-08-11, BailingMoE3 support remains unmerged in upstream
> `llama.cpp`. These files were converted and validated with
> [PR #26608](https://github.com/ggml-org/llama.cpp/pull/26608) at exact commit
> [`d8d8625`](https://github.com/aetherbird/llama.cpp/commit/d8d862521e9ad842f2b47f3b392b039317782aa0).
> This includes the Q-LoRA path required by Ling-3.0-tiny
> (`q_lora_rank=256`) from
> [`517b4675`](https://github.com/aetherbird/llama.cpp/commit/517b467544f732ddabb3f7727932f8d004ad9457)
> and the pinned multi-argument tool-parser fix
> [`0266ebca`](https://github.com/aetherbird/llama.cpp/commit/0266ebca66bd95b7a85d37b8ca08ccf9812b85cc).
> Stock or older llama.cpp binaries and other GGUF
> runtimes may reject this architecture or produce incorrect output until they
> incorporate equivalent support.

## Preserved model facts

- BailingMoeV3 hybrid KDA/MLA sparse MoE, 526 GGUF tensors
- 7,893,392,800 parameters total; approximately 1.3B active per token
- 24 layers; 128 routed experts, 8 selected per token, plus 1 shared expert
- Q-LoRA rank 256 and KV-LoRA rank 512
- Native configured context: 131,072 tokens
- Embedded tokenizer and source chat template
- No NEXTN/MTP layers (`num_nextn_predict_layers=0`)

The source identifies itself as Transformers `model_type=bailing_hybrid` with
`BailingMoeV3ForCausalLM`; the pinned converter intentionally maps that model
to GGUF `general.architecture=bailingmoe3`. This is not a model-family
mismatch.

The original card's 256K command uses an external YaRN/runtime override. This
release preserves the checkpoint's native 131,072-token configuration and does
not claim validated 256K operation. Do not enable MTP speculative decoding for
this Tiny checkpoint.

## Files and recommendations

| File | Quant | Size | Matrix | Suggested use |
|---|---:|---:|:---:|---|
| `Ling-3.0-tiny-BF16.gguf` | BF16 | 14.72 GiB | No | Exact GGUF reference/requantization source |
| `Ling-3.0-tiny-Q8_0.gguf` | Q8_0 | 7.83 GiB | No | Highest-fidelity quantized option |
| `Ling-3.0-tiny-Q6_K.gguf` | Q6_K | 6.05 GiB | Yes | Quality-first practical choice |
| `Ling-3.0-tiny-Q5_K_M.gguf` | Q5_K_M | 5.25 GiB | Yes | Recommended quality/size balance |
| `Ling-3.0-tiny-Q4_K_M.gguf` | Q4_K_M | 4.49 GiB | Yes | Recommended lower-memory default |
| `Ling-3.0-tiny-Q4_K_S.gguf` | Q4_K_S | 4.24 GiB | Yes | Smaller K-quant alternative |
| `Ling-3.0-tiny-IQ4_XS.gguf` | IQ4_XS | 3.99 GiB | Yes | Most compact 4-bit option |
| `Ling-3.0-tiny-Q3_K_M.gguf` | Q3_K_M | 3.58 GiB | Yes | Larger K-quant 3-bit tier |
| `Ling-3.0-tiny-IQ3_M.gguf` | IQ3_M | 3.31 GiB | Yes | Smaller 3-bit tier |
| `Ling-3.0-tiny-IQ2_M.gguf` | IQ2_M | 2.52 GiB | Yes | Extreme compression; substantial loss |
| `Ling-3.0-tiny-imatrix.gguf` | Auxiliary | 41.98 MiB | — | Reproducing importance-aware quants |

If memory permits, prefer Q6_K or Q8_0 for fidelity. Q5_K_M is the
quality-oriented general recommendation; Q4_K_M is the lower-memory default.
IQ3_M and IQ2_M are specialized memory-constrained choices; the measured loss
at IQ2_M is large enough that it should not be a default. File size is not
total runtime memory: context length, state/KV caches, backend, and GPU offload
add overhead. IQ backend support varies, so use the pinned runtime until
equivalent BailingMoE3 support lands elsewhere.

Checksums are in [`SHA256SUMS`](./SHA256SUMS).

## Download and run

```bash
hf download Mike0021/Ling-3.0-tiny-GGUF \
  --include "Ling-3.0-tiny-Q5_K_M.gguf" \
  --local-dir ./models
```

Build the tested unmerged runtime (review the PR before running it):

```bash
git clone --filter=blob:none https://github.com/ggml-org/llama.cpp.git
git -C llama.cpp fetch origin refs/pull/26608/head:pr-26608
git -C llama.cpp checkout d8d862521e9ad842f2b47f3b392b039317782aa0
cmake -S llama.cpp -B llama.cpp/build -DGGML_CUDA=ON -DGGML_NATIVE=OFF
cmake --build llama.cpp/build --config Release --parallel
```

For a CPU-only build, omit `-DGGML_CUDA=ON`. This server example deliberately
starts at 8K context to keep memory moderate:

```bash
./llama.cpp/build/bin/llama-server \
  -m ./models/Ling-3.0-tiny-Q5_K_M.gguf \
  --alias ling-3.0-tiny --host 127.0.0.1 --port 8080 \
  --jinja -c 8192 -ngl 999
```

```bash
curl http://127.0.0.1:8080/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "ling-3.0-tiny",
    "messages": [{"role": "user", "content": "What is the capital of France?"}],
    "temperature": 1.0,
    "top_p": 0.95,
    "top_k": 20,
    "stream": false
  }'
```

These sampling settings follow the original model's recommendations. Thinking
is enabled by the embedded source chat template by default.

To disable thinking in the pinned server, pass
`"chat_template_kwargs":{"enable_thinking":false}` in the request. Keep
`--jinja` enabled so the embedded template is applied.

The pinned runtime logs `special_eos_id is not in special_eog_ids` while
loading this tokenizer. The raw arithmetic reference stopped on token 156895
in Transformers, and Q4_K_M server stop behavior was tested as described
below, but the warning is preserved here because it has not yet been resolved
upstream.

## Conversion provenance

| Item | Value |
|---|---|
| Source | `inclusionAI/Ling-3.0-tiny@a2ee06c0f2de5b171701aee7f73f70a1da75483b` |
| Source weights | 32 safetensors shards, 15,787,992,416 bytes |
| Converter/runtime | `aetherbird/llama.cpp@d8d862521e9ad842f2b47f3b392b039317782aa0` (upstream PR #26608) |
| Conversion | BF16 GGUF, then every quant directly from BF16 |
| Detailed provenance | [`conversion_manifest.json`](./conversion_manifest.json) |
| Source shard hashes | [`source-safetensors.sha256`](./source-safetensors.sha256) |
| Core reproduction commands | [`REPRODUCE.md`](./REPRODUCE.md) |

## Importance-matrix calibration

Importance-aware files used two complementary, pinned calibration sources.
The primary corpus was
[`lemon07r/bartowski-imatrix-v5-semantic`](https://huggingface.co/datasets/lemon07r/bartowski-imatrix-v5-semantic/tree/a306f203ee4323e0afe846ae02c2daafe17384d9)
at revision `a306f203ee4323e0afe846ae02c2daafe17384d9`. Its 2,075 semantic
samples span 13 languages and include code, math, science, dialogue, and Q&A,
which is substantially broader than English-only WikiText calibration.

An additive second pass used `combined_all_micro.parquet` from
[`eaddario/imatrix-calibration`](https://huggingface.co/datasets/eaddario/imatrix-calibration/tree/e87ed55dcba9d9c3a3e41539f3e728e981b1daa4)
at revision `e87ed55dcba9d9c3a3e41539f3e728e981b1daa4`. This MIT-licensed
mixture adds multilingual text plus tool-use, math, and code prompts. It was
added because the first pass left one routed expert unobserved in one layer;
the release gate requires every routed-expert slot to have a nonzero count.

- Input: `bartowski-imatrix-v5-semantic.txt`
- SHA-256: `ff879b5a748f822ef539e43c596a3f44ab922f0295ee209d4220d9f86e86a063`
- 1,496,006 bytes; 6,318 serialized lines
- Supplement parquet SHA-256:
  `94389921e1f67b180a99de28c3090b41ce6f1960eb13abad21b7eba7cbe11b26`
- Extracted supplement SHA-256:
  `fdb2d41abf04a2fb207502741a561a5a9ab385eb0c44a450eae676c410955946`
  (1,008,653 bytes; 3,130 serialized lines)
- Context / batch / ubatch: 4096 / 4096 / 512
- Complete 4,096-token chunks processed: 162
  (663,552 tokens); 5,338 trailing tokens excluded
- Matrix entries: 332
- Per-expert count values: 8,832
- Routed-expert slots with zero observations: 0

The matrix is the modern GGUF imatrix format. It contains 69 expert-count
vectors of length 128 (8,832 layer/tensor expert slots); “zero” is measured
over those slots, not over 128 globally unique expert IDs. Output-tensor
statistics were intentionally not collected: the pinned llama.cpp imatrix
documentation says it is typically better not to use importance statistics
when quantizing `output.weight`, and therefore defaults `--process-output` to
false.
Observed per-slot counts ranged from 16 to 326,023 (median 33,514); a
distribution summary and the lowest-count slots are recorded in
`validation/imatrix.json`.

The final matrix SHA-256 is
`e8b15d131f9ce294f922c5c387f7a69829c12100d6a35bb1635a2b859083c3f0`.
`llama-quantize` embeds only one `quantize.imatrix.dataset` scalar, so the
importance-aware model files name the primary corpus even though the final
matrix contains both ordered passes. The manifest is the authoritative record
of the two-source lineage. It also records the absolute paths embedded by the
quantizer; changing those paths can preserve tensor values while changing the
GGUF file hash.

The corpus was used only to collect activation statistics. It was not used to
train or fine-tune the model and is not an evaluation set.

## Held-out validation

Validation used the separate WikiText-2 test file from
`ggml-org/ci@927b3642933080f1b0e811e2f916e14c292992f9`; this file was not
used for imatrix collection. Content-level uniqueness from all calibration
material or from the model's original pretraining data is not asserted. The
extracted `wiki.test.raw` SHA-256 is
`173c87a53759e0201f33e0ccf978e510c2042d7f2cb78229d9a50d79b9e7dd08`.
PPL and BF16-relative KLD used 32 fixed sequential chunks at
context/batch/ubatch 512, scoring
8,160 held-out tokens. Exact commands are in
[`REPRODUCE.md`](./REPRODUCE.md), and machine-readable results are under
[`validation/`](./validation/).

| Artifact | Loads | Greedy raw vs HF BF16 | PPL ± SE | ΔPPL | Mean KLD ± SE (nats) |
|---|:---:|:---:|---:|---:|---:|
| BF16 self | Pass | Exact | 11.901303 ± 0.415179 | +0.033176 | 0.000000 ± 0.000000 |
| Q8_0 | Pass | Exact | 11.812842 ± 0.410345 | −0.055285 | 0.011688 ± 0.000329 |
| Q6_K | Pass | Exact | 11.873857 ± 0.413599 | +0.005730 | 0.023357 ± 0.000625 |
| Q5_K_M | Pass | Exact | 12.087854 ± 0.422594 | +0.219727 | 0.053244 ± 0.001318 |
| Q4_K_M | Pass | Exact | 12.651529 ± 0.447483 | +0.783402 | 0.130069 ± 0.003051 |
| Q4_K_S | Pass | Exact | 12.608386 ± 0.443531 | +0.740259 | 0.138631 ± 0.003234 |
| IQ4_XS | Pass | Exact | 12.640906 ± 0.445231 | +0.772779 | 0.155524 ± 0.003489 |
| Q3_K_M | Pass | Exact | 13.649613 ± 0.484819 | +1.781486 | 0.301154 ± 0.006362 |
| IQ3_M | Pass | Exact | 12.967071 ± 0.446764 | +1.098944 | 0.312063 ± 0.006496 |
| IQ2_M | Pass | Exact | 16.362374 ± 0.564546 | +4.494247 | 0.696147 ± 0.011718 |

These tests measure conversion and quantization behavior, not general model
capability or safety. Results are comparable only under the documented
tokenizer, context, chunk, and pinned-runtime settings. The stored BF16
reference has PPL 11.868127 ± 0.412222. BF16 self-comparison establishes the
uint16 stored-log-probability/backend resolution; mean KLD rounded to 0.000000
nats in this run. Small negative ΔPPL values, such as Q8_0, are within sampling
uncertainty and do not mean the quant is better than BF16.

“Loads” means the pinned runtime completed its tensor integrity/load check and
a graph evaluation. “Greedy raw vs HF BF16” compares a deterministic 12-token
continuation against a separately generated Transformers BF16 reference. The
validator binds both runtimes to the exact same full prompt; all ten artifacts
matched this one shallow case exactly. This is a conversion smoke test, not a
claim that quantized logits or arbitrary generations equal BF16. All six
tokenizer test cases, including Chinese, code, whitespace, multilingual text,
and special tokens, matched Transformers token IDs exactly.

Q6_K contains six Q8_0 fallbacks because those narrow MLA tensors cannot use
the requested block width. The 3-bit and 2-bit files likewise contain exactly
six documented MLA fallbacks. Their complete tensor-type inventories are in
the structure reports and manifest.

### Matrix ablation

A direct Q4_K_M A/B against a temporary no-matrix quant gave mixed evidence.
The matrix lowered the mean KLD point estimate from 0.131547 to 0.130069 nats
and raised the same-top-token point estimate from 84.596% to 85.221%, while
PPL moved from 12.357816 to 12.651529. This is not presented as a universal
quality gain; the broader calibration coverage and those KLD/same-top point
estimate shifts motivated retaining the matrix build. See
[`kld-Q4_K_M-ab.json`](./validation/kld-Q4_K_M-ab.json).

### Fixed multiple-choice collapse screen

The pinned `mmlu-validation.bin` contains 1,548 four-choice tasks. A fixed
seed-1 subset of 500 was used as a regression/collapse check, not as a model
capability benchmark. The tool's log says “TruthfulQA,” but the supplied input
is the pinned MMLU validation binary (SHA-256
`470af3a74eccacfaf6f43b08aabf510f61e6c92fe20d17241ded934151e225fa`).

| Artifact | Accuracy ± SE |
|---|---:|
| BF16 | 38.2% ± 2.1751% |
| Q5_K_M | 39.0% ± 2.1835% |
| Q4_K_M | 38.8% ± 2.1814% |
| Q4_K_S | 39.0% ± 2.1835% |
| IQ4_XS | 37.2% ± 2.1637% |
| Q3_K_M | 37.8% ± 2.1707% |
| IQ3_M | 37.8% ± 2.1707% |
| IQ2_M | 34.8% ± 2.1324% |

Random chance was 25.0% ± 1.9384%. Q8_0 and Q6_K were not run through this
auxiliary screen; their held-out KLD results are the stronger fidelity evidence.

### Long-context and server checks

BF16, Q4_K_M, and the most aggressive IQ2_M completed a one-chunk 32,768-token
perplexity/prefill evaluation at batch 4,096: respectively 23.3709, 25.7803,
and 34.6812 PPL. Other artifacts were validated at context 512. The checkpoint's
native 131,072-token limit and the external 256K YaRN configuration were not
exercised.

Q4_K_M was also tested through `llama-server --jinja`. Thinking-disabled and
thinking-enabled requests both stopped normally, the latter exposed separate
reasoning content, a Chinese prompt returned `巴黎`, and a required
tool request produced `get_weather` with both `location=Paris` and
`unit=celsius` arguments and `finish_reason=tool_calls`. These server results
apply to Q4_K_M; they are not generalized to every quant.

### Rejected candidates

Two generated candidates were deliberately not published. IQ4_NL was only
28,606,464 bytes smaller than Q4_K_S while its KLD rose from 0.138631 to
0.149734. MXFP4_MOE passed an exact 69-tensor routed-expert whitelist, but at
4,718,248,800 bytes and 0.267021 KLD it was larger and much less faithful than
Q4_K_S. On the tested RTX PRO 4500 Blackwell it improved 512-token prompt
throughput by 17.9% but reduced 128-token generation throughput by 8.2%.
Full measurements are in
[`rejected-candidates.json`](./validation/rejected-candidates.json).

As a post-hoc independent cross-check, the canonical BF16 and Q8_0 SHA-256
values exactly match
[`bloomer010/Ling-3.0-tiny-GGUF@598201`](https://huggingface.co/bloomer010/Ling-3.0-tiny-GGUF/tree/59820116411687d44e1333816609afca8c93aa0b).
That repository was not used as a weight source.

## Limitations and attribution

- Runtime support is experimental and tied to an unmerged llama.cpp revision.
- Quantization can change factuality, reasoning, tool-call formatting, and
  multilingual behavior; validate the chosen file on your workload.
- Long contexts add substantial memory and were not exhaustively exercised for
  every artifact.
- No new safety evaluation was performed. The source model's limitations and
  acceptable-use considerations still apply.
- This is an unofficial conversion, not endorsed by InclusionAI, Hugging Face,
  or llama.cpp maintainers.

The source card declares the MIT license. Original authorship belongs to
InclusionAI; this repository provides an unofficial format conversion by
Mike0021.