zyang94/tacet-2b-decision
tacet-2b-decision(双语 README / Bilingual README)
License / 许可:apache-2.0(代码与模型卡)· 数据:见「训练数据 / Training data」
tacet(拉丁语乐谱记号:该声部此处静默)——一个 2B 的 System One 决策模型。给它一个 state(工单 / 邮件 / 票据 / 检索文档 / 游戏局面)和一组带类型的 typed questions(choice / noul / score),它在单次前向内输出每个候选上的概率分布。它不生成文本——没有可解析、可幻觉的内容。
tacet (Latin musical notation: "this voice is silent here") — a 2B System One decision model. Given a state (a ticket, an email, an invoice, retrieval documents, a game position) and a set of typed questions (choice / noul / score), it outputs a probability distribution over the candidates in a single forward pass. It does not generate text — there is nothing parseable to hallucinate.
English
What this model is
- Output is a distribution, not text: one forward pass answers all questions at once (~150 ms level on a consumer GPU);
- The answer space is defined at request time: candidate sets, K, and criteria all live in the request — changing the schema requires no retraining;
- Calibrated and abstaining: per-candidate calibrated probabilities (with temperature calibration) and an "no candidate satisfies the requirement / insufficient information" abstention signal.
Usage
The model runs with a specific prompt template (typed questions with 26 letter slots A–Z, one slot per candidate). Readout = in-question softmax over the logits of all 26 letter tokens. Server-side example (llama.cpp):
llama-server -m tacet-2b-decision-Q4_K_M.gguf -c 65536 -ngl 99 --host 0.0.0.0 --port 8080Prompt construction (block_instr layout):
[STATE]
{state text}
[QUESTIONS]
[Q1] [TASK] Which department should handle this?
[CRITERIA]
[A] billing: invoices, payments, refunds
[B] technical: bugs, outages, system errors
[C] other: everything else
[OUTPUT] Give a probability for every option; the probabilities must sum to 1.
...
[OPTIONS] A B C <pad to 26>Readout: take the logits of the 26 letter tokens (A–Z) at the first generated position, then softmax over that question's K candidates. A complete server-side adaptation example ships with this repository.
Evaluation
On a public typed-decision evaluation set of 231 questions (fully independent of the training distribution):
Abstention (sentinel-candidate mechanism): on a 261-question test set containing "no correct answer" labels, no-correct-answer recall / false-alarm-on-solvable curves are reported under a threshold sweep (this release does not include an abstention slot; abstention ships in later versions of the model family).
Honest limits
- Single forward pass, no chain of thought: the model is trained to output a distribution in one forward pass — it is limited on questions requiring multi-step serial computation (long policy reasoning, multi-hop, date arithmetic). This is a form boundary, not undertraining.
- 26-option cap: at most 26 candidates per choice question (+1 abstention sentinel). For larger option spaces, use a two-level / factorized decomposition.
- Context window 6144 tokens: states beyond this are truncated.
- Language: English (the base model's multilingual ability is not aligned in this version).
- Probability calibration: the shape of the letter-readout distribution is the model's own output; re-measure ECE on your own data before using it for threshold decisions.
Training data
Training data is 100% programmatically generated with verifiable ground truth — zero human annotation, zero LLM-teacher outputs: game domains (maze/snake BFS ground truth), retrieval domain (teacher scores over public upstream Apache-2.0 data), synthetic UI (deterministic behavior ground truth), judge/routing (option-count histogram mirroring), long text (long policies / tickets). No conversation-model outputs were used as training targets.
Hardware & authorship
- Training hardware: 2× NVIDIA GeForce RTX 2080 Ti 22GB (consumer GPUs) — the full pipeline (LoRA pretraining, weight averaging, quantization verification) ran on these two cards; inference is ~150 ms level per card (10 candidates).
- Authorship: GLM-5.3-flash (Zhipu AI) is a co-first author of this project, responsible for training-recipe iteration, experiment diagnosis and engineering implementation; Zhengxing Yang is the corresponding author, responsible for direction and experiment decisions. The work is human–AI collaborative with roughly equal effort; judgment and direction rest with the human.
Citation
@misc{tacet2026,
title = {tacet-2b-decision: a 2B System One decision model with calibrated, abstaining outputs},
author = {GLM-5.3-flash (co-first author, engineering and recipe iteration) and Zhengxing Yang (corresponding author, direction and decisions)},
year = {2026},
url = {https://huggingface.co/zyang94/tacet-2b-decision}
}中文
这是什么
- 输出是分布,不是文字:同一次前向回答所有问题(~150ms 级,消费级 GPU);
- 答案空间在请求时定义:候选集 / K 值 / 判据全部写在请求里,换 schema 无需重新训练;
- 可校准 + 可弃权:支持给每个候选输出校准后的概率(含温度校准),以及「没有候选满足要求 / 信息不足」的弃权信号。
使用
模型以特定 prompt 模板运行(typed questions 附加 26 个字母槽 A–Z,每个候选绑定一个槽位),读出 = 对全部 26 个字母 token 的 logits 做题内 softmax。服务器端示例(llama.cpp):
llama-server -m tacet-2b-decision-Q4_K_M.gguf -c 65536 -ngl 99 --host 0.0.0.0 --port 8080Prompt 构造(block_instr 布局):
[STATE]
{state text}
[QUESTIONS]
[Q1] [TASK] Which department should handle this?
[CRITERIA]
[A] billing: invoices, payments, refunds
[B] technical: bugs, outages, system errors
[C] other: everything else
[OUTPUT] Give a probability for every option; the probabilities must sum to 1.
...
[OPTIONS] A B C <pad to 26>读出:取生成首位上 A–Z 共 26 个 token 的 logits,对该题的候选数 K 做题内 softmax 归一化。完整的服务端适配说明见 TRAINING_GUIDE.md §5.1/§7。
评测
在 231 题的公开 typed-decision 评测集上(与训练分布完全独立):
弃权能力(哨兵候选机制):在一组含「无正解」标注的 261 题测试上,无正解召回 / 有正解误报两指标随阈值扫描报告(该发布版本未包含弃权槽,弃权见模型家族后续版本)。
诚实声明
- 单次前向,无思考链:本模型被训练为单 forward 直接输出分布——它在需要多步串行计算的题目上(长政策推理、多跳、日期运算)能力有限,这是形态边界而非训练不足。
- 选项上限 26:choice 题最多 26 个候选(+1 个弃权哨兵)。更大的选项空间建议两级/因子化分解。
- 上下文 6144 token:超过的 state 会被截断。
- 语言:英文(底座多语言能力未在本版本对齐)。
- 概率校准:letter 读出的分布形状为模型输出;建议在自己的数据上重测 ECE 后再用于阈值决策。
训练数据
训练数据 100% 程序化生成,带可验证真值,零人工标注、零 LLM 教师输出:游戏域(迷宫/蛇 BFS 真值)、检索域(公开上游 Apache-2.0 数据的 teacher 分数)、合成 UI(确定性行为真值)、judge/routing(选项数直方图镜像)、长文本(长政策/工单)。未使用任何对话模型输出作为训练目标。
训练硬件与作者栏
- 训练硬件:2× NVIDIA GeForce RTX 2080 Ti 22GB(消费级显卡)——全套训练(预训练 LoRA、权重平均、量化校验)在这两张卡上完成;推理单卡 ~150ms 级(10 候选)。
- 作者与致谢:GLM-5.3-flash(智谱 AI)为本项目共同一作(co-first author),负责训练配方迭代、实验诊断与工程实现;Zhengxing Yang 为通讯作者,负责方向决策与实验取舍。本文由人机协作完成,工作量大致对半,判断与方向归人。
引用
@misc{tacet2026,
title = {tacet-2b-decision: a 2B System One decision model with calibrated, abstaining outputs},
author = {GLM-5.3-flash (co-first author, engineering and recipe iteration) and Zhengxing Yang (corresponding author, direction and decisions)},
year = {2026},
url = {https://huggingface.co/zyang94/tacet-2b-decision}
}仓库内容 / What's in this repo
model.safetensors— F16 权重 / F16 weightstacet-2b-decision-Q4_K_M.gguf— Q4KM 量化(llama.cpp)/ Q4KM quantization for llama.cppREADME.md— 本模型卡 / this model cardTRAINING_GUIDE.md/TRAINING_GUIDE_EN.md— 从零复现训练方法指引(中/英;只讲方法,不含代码)/ from-scratch training method guides (ZH/EN; method only, no code)- 本仓库不含训练代码、数据生成器与数据本体;复现路径见两份指南 §4–§7 / this repo ships no training code, generators, or data; see §4–§7 of the guides for the reproduction path
所有数字均为我们自己测得的绝对数字,本卡不包含任何第三方对比。 All numbers above are our own absolute measurements; this card contains no third-party comparisons.
