Views
No views yet
Qwen/Qwen3.5-4B. It is not a full model —
it is a thin wrapper (~2% of the base) that reads the frozen base's own activations and injects
cognitive tokens through gated cross-attention, so the model learns when to trust itself:
answer confidently or refuse honestly. The base weights are never modified.| File | What it is |
|---|---|
doubter_checkpoint.pt | the trained wrapper weights (encoder + cross-attention + gates), ~112 MB |
doubter_sidecar.gguf | the same wrapper exported for llama.cpp (CPU / Metal / edge), ~168 MB |
run.json | the training manifest (base model, layers, encoder type, quantization, dataset) |
| Metric | Base | + Doubter |
|---|---|---|
| Selective accuracy (of answered, % correct) | 0.72 | 1.00 |
| Coverage (answered / total) | 100% (50/50) | 24% (12/50) |
| Refusal rate | 0% | 76% |
| Refusal precision (vs oracle*) | — | 0.37 |
| Over-refusal rate | — | 0.63 |
Over-refusal is a known cost, not a failure. See the framework's honesty notes on metrics.
run.json)Qwen/Qwen3.5-4B (frozen), nf4 quantized, bfloat16selective (1 cognitive token per layer, scalar tanh gate)[21..31] (the late third)enable_thinking=False, answer-only suffix — required so the thinking
model produces a letter on Pass 1, otherwise the oracle flag collapses)1from meta_core import MetaSpiderConfig, MetaSpiderPipeline, Doubter
2
3cfg = MetaSpiderConfig(
4 model_name="Qwen/Qwen3.5-4B",
5 device="cuda", dtype="bfloat16", quantization="nf4",
6 target_layers=list(range(21, 32)),
7 cross_attn_layers=list(range(21, 32)),
8)
9pipe = MetaSpiderPipeline.from_pretrained(cfg)
10pipe.attach(Doubter.from_checkpoint("doubter_checkpoint.pt"))
11
12print(pipe.generate("What is the capital of France?"))
13# → answers confidently
14print(pipe.generate("<an obscure question the base would get wrong>"))
15# → "I'm not confident enough to answer this question accurately."pip install meta-core transformers accelerate bitsandbytes.doubter_sidecar.gguf, produced by
metadeploy export) runs the same wrapper on CPU inside llama.cpp — load it as a meta-adapter with
llama-meta-generate (two-pass inference). The calibrated refusal behavior holds down to Q4_K_M.Qwen/Qwen3.5-4B. It will not transfer cleanly to a different model or even a different
fine-tune of it (it would push hidden states out of distribution).