MiniCPM5-1B-CURSOR — agentic meeting summarizer (sub-1B on-device)

Fine-tune of openbmb/MiniCPM5-1B on the CURSOR protocol: a streaming agent that converts long meeting transcripts (zh-TW / en) into structured, fully-anchored meeting notes by emitting edit ops (ADD/UPD/DEL/CMP/NOP) against one evolving NOTES state — no map-reduce, no ReAct loops. Same family as the earlier Luigi/lfm2.5-350m-cursor-* releases, but a single model covering BOTH languages (the 350M needed a per-language pair; this 1B holds both).

How it was made

  • Base: openbmb/MiniCPM5-1B (4k context, linear+full attention hybrid).
  • Data: teacher traces from Gemma-4-31B (judge-filtered, ~2k steps at 2048-token chunks), sweep-feedback negative samples harvested from the students' own fabrications (170-230 per iteration), and synthetic hard-class counterfactuals (proposed-never- decided, informal-negation, negative-preference, reject-action meetings).
  • Training: 2-epoch continuation passes, LR 1e-5, effective batch 16, torch DDP on two GPUs. This checkpoint (274) is the G1-verified artifact — verified three times.
  • Deployment harness: src/voxsum (same repo as the card) — streaming chunker (2048-token chunks, 2-line overlap), op parser, anchor validation, temporal guard, plus the VERIFY/ANCHOR sweep (gpt-oss-20b judge at eval time) and a deterministic UPD→ADD fallback for UPDs against an unmatched prefix.

Measured results (T1 tier, n=20, local judges, 3x majority; see caveats)

metric this model map-reduce baseline (Qwen3.5-9B)
G1 capability screen PASS en + zh (chain, deadlines, anchored, trap)
valid-op rate (screen) en 100% / zh 88% (one redundant duplicate-ADD rejected)
raw INVERT (model only, no sweep) 2/20 3/20
swept INVERT (deployed: model + VERIFY/ANCHOR sweep) 0/19-0/20
FAITH-claim (1-5) 4.81-4.84 3.50
COVER (1-5) 2.84-2.89 3.05
SYNTH (1-5) 2.32 2.60 (tie within judge noise +-0.4-0.5)

The ship rule (spec section 7.7) is GT2 OR GT3 at equal inversions: GT2 clears decisively (FAITH +1.3 at FEWER inversions than the baseline). The sweep is part of the deployed pipeline and is what yields the 0-inversion deployment.

Usage

llama.cpp server, greedy, thinking OFF (the model emits hybrid <think> unless disabled):

llama-server -m minicpm5-1b-cursor.Q4_K_M.gguf --n-gpu-layers 999 --ctx-size 4096 \
  --parallel 1 --flash-attn on --jinja --reasoning off --temp 0

The client is the CURSOR harness (agentic-summarizer repo, eval/run_arms.py --arms cursor --base-url <server> --tokenizer openbmb/MiniCPM5-1B --budget 2048). The model expects the exact system prompt and NOTES rendering the harness produces — it is NOT a general chat model.

Caveats (must accompany every reported number)

  • zh T2 tier is synthetic; the zh pool is largely monologic — contested-zh is unmeasured.
  • Judge-noise floor +-0.4-0.5 (FAITH/SYNTH); n=20 per tier; reduced cells directional.
  • The zh trap behavior sits near the decision boundary between adjacent checkpoints — use checkpoint-274 (this GGUF); the training final (284) fails the zh trap.
  • On-device envelope: ~650 MB Q4_K_M, 4k context, per-step ~2.9k prefill tokens.
Downloads last month
3
GGUF
Model size
1B params
Architecture
llama
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Luigi/minicpm5-1b-cursor

Quantized
(92)
this model