File size: 3,161 Bytes
2bcdcb1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: gemma
base_model: google/gemma-4-e2b-it
language:
  - en
tags:
  - mlx
  - lora
  - news
  - research
  - grounding
  - pepper
  - mnn
pipeline_tag: text-generation
---

# pepper-desk-e2b — the MNN singularity desk, distilled

A 2B-class specialist that reads a wire of headlines and writes a grounded
broadcast report — sources attributed, rumors adjudicated, unknowns said out
loud. It is the research-desk brain of **Pepper**, the open-source on-device
news anchor ([pepper.software](https://pepper.software) ·
[github.com/bunnycompany/pepper](https://github.com/bunnycompany/pepper) ·
watch her: [pepper.watch](https://pepper.watch)).

## MoltBench (12 bundles, 12 blind judges, deterministic rotation)

| Model | Blind wins | Grounding | Adjudication | Persona |
|---|---|---|---|---|
| **pepper-desk-e2b (this, 2B)** | **11/12** | **88.6%** | **4.67/5** | **3.75/5** |
| Qwen2.5-7B-Instruct-4bit | 1/12 | 77.5% | 2.67 | 1.42 |
| pepper-7b (persona LoRA) | 0/12 | 50.0% | 2.00 | 1.83 |

Benchmark, bundles, scorer, and protocol:
[`bench/`](https://github.com/bunnycompany/pepper/tree/main/bench) in the
repo. The origin story matters: the first Pepper model *failed* this
benchmark against its own base (38.1% vs 64.5% grounding) — that failure
became the release gate this model had to clear.

## Format: think, then speak

Trained think-then-speak. Given wire notes, she emits
`DESK NOTES:` (a private source-weighing analysis) then `ON AIR:` (the
broadcast). Consumers show or strip the notes; score only the broadcast.

System prompt and wire format: see
[`bench/README.md`](https://github.com/bunnycompany/pepper/blob/main/bench/README.md)
and the repo's `gen_eval_v2` harness. Use `max_tokens ≥ 500` — tighter caps
truncate her sign-offs (it cost her one judged bundle).

## Training

- Base: `google/gemma-4-e2b-it` via `mlx-community/gemma-4-e2b-it-4bit`
- LoRA (mlx-lm 0.31, git), lr 4e-5, batch 4, seq 1800, grad-checkpoint,
  **iteration-200 checkpoint selected by validation loss** (1.557; later
  checkpoints overfit — the full curve is documented in the repo)
- Data: 452 examples — 412 claim-verified wire→report pairs authored against
  the live August-2026 news cycle with explicit DESK NOTES reasoning
  (including deliberately contaminated bundles with exemplar adjudications),
  her 65 real broadcast segments, and a 40-riff persona sprinkle
- Trained on an M3 Ultra in ~90 minutes; reproducible on consumer Apple
  Silicon

## Limitations

She is grounded, not omniscient: judges recorded occasional invented
connective detail, "peer-reviewed" applied to preprints, and style drift on
very thin wires. She is built to work FROM provided wire notes — as a
freestanding chatbot she is out of her element and says so less often than
she should. English-first. Not for advice of any kind.

## License & lineage

Weights are a derivative of Gemma and ship under the
[Gemma Terms of Use](https://ai.google.dev/gemma/terms). The surrounding
desk (app, bench, pipeline) is AGPL-3.0. Lineage: Danger Ghost (VTuber era) →
MNN research anchor → this desk brain.

*MNN — all your models, all the time.* 🌶