Kev-27B
模型摘要
Kev-27B 是一个决策模型。它读取一份文档(状态)和一组关于它的带类型问题,并在一次前向传播里返回每个问题所带选项上的校准概率分布,不生成文本。它面向对最多 64k tokens 的文档做分类、路由、分诊或检查、并且需要可以设阈值的概率(例如把不确定的案例送人工复核)的开发者。它实现 TypeSafe 公开的 System One API(POST /v1/systemone),所以 TypeSafe SDK 可以原样对它使用。本卡描述 version 2,发布于 2026-09-30:Qwen3.8-27B 的一次完整权重微调,与 version 1 平均。
模型详情
| 开发者 | Jared Palmer(github.com/jaredpalmer/kev) |
| 模型类型 | 决策模型:把因果语言模型主干只做 prefill,配一个在选项上的指针头 |
| 主干 | Qwen/Qwen3.8-27B(revision 1d4bf0f2,Qwen 的后训练发布版):64 层,48 个 Gated DeltaNet(线性注意力)和 16 个完全注意力,hidden size 5,120;每个主干权重都微调过 |
| 指针头 | 指针头:两个 5,120 → 256 投影把每个选项的收尾 token 与问题的末尾 token 打分;softmax 给出概率 |
| 参数 | 主干 25.6B(视觉塔、LM head 和多 token 预测层不加载),指针头 2.6M |
| 精度 | bf16(一个 51.3 GB 的 checkpoint);以 bf16 服务 |
| 上下文 | 服务最多 65,536 tokens 的 state,另外每个问题至少 8,192 tokens。训练 state 最多 32,768 tokens。 |
| 已验证上下文长度 | 65,536 tokens(见 长期文档) |
| 校准 | 单个温度,T = 1.32,存在 head.pt 中,加载时施加 |
| 语言 | 英语 |
| 许可证 | Apache-2.0(权重与指针头);基座模型为 Apache-2.0 |
| 版本 | v2 (Kev 1.0),发布于 2026-09-30,在 jaredpalmer/kev-27b 的 main 上 |
| 之前的版本 | v1,同一基座上的一个 rank-16 LoRA 适配器(T = 1.38),在 tag v1-lora;其模型卡是该 tag 上的 README |
输入。 一个 state(文本,或渲染为带标签文本的 JSON 对象或数组)和任意数量的具名问题,每个问题属于三种类型之一:
| 类型 | 选项 | 输出 |
|---|---|---|
choice |
1–255 个具名选项,每个带可选描述 | 每个选项一个概率、最可能的选项和一个置信度 |
score |
1–255 个有序档位 | 每个档位一个概率和期望档位索引 |
noul |
是 / 否,带可选描述 | 为是的概率 |
每个问题都作为它自己的一行作答,从共享 state 续接,所以问题之间不能相互影响;state 只计算一次并缓存。
预期用途
- 文档上的带类型决策:分类、路由、分诊、抽取选择、政策与资格检查,以及对照明示判据评判一个提议答案。
- 依据置信度行动的工作流:自动化有把握的案例、把其余排队,阈值在用户自己工作负载的标注样本上冻结。
- 对 System One 端点做自托管、即插即用的替换。
范围外用途
- 文本生成、对话、摘要或开放式问答。模型只对它被给出的选项打分。
- 未经人工复核、对人有法律、医疗、金融、雇佣或类似后果的全自动决策。
- 答案依赖 state 里没有、也非常识的事实的问题(模型无法查任何东西),以及知识密集型考试(见 局限)。
- 超过 65,536 tokens 的 state、英语以外的语言,以及小于 80 GB 级 GPU 或约 96 GB 内存 Mac 的硬件(见 局限)。
如何使用
用 Kev 仓库在一张 B200、H200 或 H100 80 GB GPU 上服务它。权重占 51 GB,服务器常驻约 65.5 GB;一个 64k token 的 state 在 H200 上峰值 87.1 GB,一个 32k token 的 state 峰值 78.7 GB,所以最长的 state 需要超过 80 GB。
git clone https://github.com/jaredpalmer/kev.git && cd kev && uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b --port 8008 # v2 (this card)
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b@v1-lora --port 8008 # v1
在 Apple Silicon 上同一命令会通过 MLX 服务(自动选择),按保存的样子加载完整 bf16 权重,不做任何合并。这条路径预计能在 96–128 GB 的 Mac 上工作,但尚未在这个规模上运行过(见 局限)。
from typesafe_sdk import Choice, Noul, TypeSafeClient
client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest")
response = client.system_one(
state="I was charged twice for order 1182. Please refund one of the charges.",
questions={
"team": Choice(instructions="Which team should handle this?",
criteria={"billing": "Charges and refunds", "shipping": "Deliveries", "returns": "Exchanges"}),
"urgent": Noul(instructions="Does this need a reply today?"),
},
)
print(response.choices["team"].choice, response.nouls["urgent"].noul)
校准温度默认施加;KEV_TEMPERATURE=1.0 返回原始概率。服务器使用 bf16、融合 DeltaNet 内核和 CUDA graphs;KEV_DTYPE=fp32 选择用于评测的确切路径。
训练数据
在一个私有语料上训练一个 epoch,145,840 条记录(337,130 个问题),state 最多 32,768 tokens。只有它的 manifest 是公开的(GitHub 仓库里的 evals/sft-v2-r22/manifest.json)。
| 组件 | 记录数 | 内容与标签 |
|---|---|---|
| Kev 语料 | 78,786 | Kev-27B v1 的训练集(十个公开分类数据集、生成的政策与规则记录、日期算术与缺失证据案例、埋藏事实的长 state);Kev 的技能(hard-v1)、开发者工具(devtools-v1)和消费投诉(documents-v1)套件的训练划分;24 个公开数据集各上限 500 条记录;七个生成家族(长文档、工具路由、检索、意图、rubric 评判、弃答、数值推理) |
| 授权任务家族 | 24,000 | 来自一个公开多任务集合的 119 个任务家族,其许可证允许商业使用,标签为原生标签;家族名单不公开 |
| 长 state | 3,200 | 嵌入 8k–32k token 文档的 Kev 语料 state;标签原样继承 |
| 长文档 | 7,617 | 由代码组装的文档,标签由代码计算 |
| 域外决策 | 7,312 | 多种领域中生成的决策 |
| 语气 | 7,544 | 同一段文本写成平静、沮丧或愤怒的最小对 |
| Prompt 注入 | 2,699 | 识别间接 prompt 注入(防御性) |
| Agent 会话 | 4,875 | 关于代码生成的 agent 会话日志的问题 |
| PII | 4,152 | 对代码插入的个人数据做分类(全部虚构) |
| Grounding | 5,655 | 一个主张是否被文档支持 |
来源与标签。 公开数据集列在本卡的元数据里;两个开发者工具来源 CodeReviewer 和 FlakeFlagger 来自 Zenodo,CodeReviewer 的 diff 只保留来自宽松许可项目。生成的文本与标签来自代码或开放权重模型(GLM-5.3、DeepSeek-V4-Pro、Inkling、Mistral Large 3、gpt-oss-120b、MiMo-V2.6-Pro)。消费投诉标签来自开放权重模型,由闭源模型评委和裁决过滤。没有使用任何 Jev(TypeSafe 的托管决策模型)的输出。
许可证。 24 个有上限的公开数据集里有四个是 share-alike:ARC(CC-BY-SA-4.0)、HotpotQA(CC-BY-SA-4.0)、Natural Questions(CC-BY-SA-3.0)和 SNLI(CC-BY-SA-4.0);其余是 CC-BY-4.0、MIT 或 Apache-2.0。CFPB 投诉叙述是美国政府作品。GLM-5.3 的许可是 MIT 风格,对超大型 model-as-a-service 运营者有一条附加条件。逐来源许可证、revision 和署名记录在组件 manifest 里。
污染筛查。 训练前,每条记录都对照 102 个评测划分(76,549 个参考条目)筛查:每个冻结的 Kev 套件、私有评测集、JevBench 公开条目以及下面的仅评测套件。记录在以下任一条下被移除:归一化字符串精确匹配、词 8-gram Jaccard 相似度高于 0.2,或包含度至少 0.5;共移除 6,388 条训练记录。
训练流程
- 完整权重微调。 从
Qwen/Qwen3.8-27B起,在 8 张 NVIDIA H200 GPU 上(FSDP2)训练一个 epoch。AdamW(β 0.9 / 0.999,weight decay 0.01)配 fp32 主权重和矩,主干用 bf16;主干学习率 2e-6、指针头 1e-4,one-cycle 调度带 10 % 预热;梯度范数裁剪到 1.0;每个优化器步 128 条记录(每 GPU 8,2 个累积步),共 1,140 步;seed 0。损失是在每个问题的选项上的交叉熵(数据带软目标处用软目标)。选项顺序打乱,随机插入「none of the above」选项和干扰项。四分之一 state 最多 8,192 tokens 的 choice 记录还会产生一个最小对:带「none of the above」选项的那个问题,一次把正确选项放进去、一次把它移除。每个 state 只跑一次,其问题从它分支。 - 权重平均。 每个主干张量是 0.85 × 微调权重 + 0.15 × v1 权重(v1 的 LoRA 适配器以 fp32 合并进基座),以 fp32 计算并一次性舍入到 bf16。保留微调模型的指针头。该比例是在开发数据上从六个混合方案(0.85 / 0.70 / 0.50,配任一指针头)中选出的。
- 校准。 单个温度,T = 1.32,在两个父模型都没训练过的留出数据集的 648 个问题上最小化负对数似然:448 个来自 transfer-r3 的校准划分(六个公开数据集,QNLI、SciQ、TweetEval-offensive、PAWS、MMLU 和 Emotion,加两个生成的政策记录留出家族)和 200 个 MMLU-Pro 问题(transfer-v9 开发)。没有使用任何训练语料的划分,一项检查发现与训练数据无重叠。
评测
方法。 每次比较都是与 Kev-27B v1 在相同条目上、各模型在其自身发布温度下。测试划分为本 checkpoint 读过一次;transfer-v4 测试是锁定的(每个候选读一次),并对照事先固定的门槛评判(准确率 ≥ 0.886,Brier ≤ 0.165)。区间是 95 % 配对 bootstrap,重采样整条记录(2,000 次重采样),所以共享同一 state 的问题一起移动。差值以百分点(pp)计。套件如下:
- breadth-v1:五个领域(知识、语言、检索、工具、艺术)的 14 个留出公开数据集,从未训练。
- tasksource-heldout-v1:与授权组件同一个多任务集合的 24 个整任务家族,训练时留出。
- hard-v1:程序化标注的技能记录(长政策、权衡、概率、多跳、日期与数字、评判、弃答);测试划分留出已训练生成器的模板。
- devtools-v1:来自经许可证核查的公开来源的开发者工具决策(代码评审、commit 消息、安全、不稳定测试)。
- documents-v1 / documents-v2:美国消费金融投诉叙述(CFPB);v2 是私有的留出测试集。
- transfer-v4:来自六个从未训练的公开来源的域外决策,加上留出的政策结构。
- longdoc-v1:最多 64k tokens 的 CUAD 商业合同,以及生成的协议包。
头条面板排除标签审计(在本 checkpoint 构建之前完成)认为不健全的条目¹;每次排除都会从两个模型移除相同的行。
对照 v1 的结果(测试划分)。
| 面板(问题数) | Kev-27B v2 | Kev-27B v1 | Δ [95 % CI] |
|---|---|---|---|
| 留出公开数据集,breadth-v1,10 个数据集(2,489) | 0.832 | 0.820 | +1.2 [+0.3, +2.2] |
| 留出任务家族,tasksource-heldout-v1,17 个家族(2,024) | 0.795 | 0.743 | +5.3 [+3.7, +6.8] |
| 技能、开发者工具与文档,合并(2,795) | 0.889 | 0.800 | +8.9 [+7.5, +10.3] |
| hard-v1(1,088) | 0.918 | 0.749 | +16.9 [+14.2, +19.8] |
| devtools-v1,审计来源(771) | 0.825 | 0.789 | +3.6 [+1.3, +5.9] |
| documents-v1(936) | 0.908 | 0.869 | +4.0 [+2.1, +5.9] |
| documents-v2,私有留出(953) | 0.921 | 0.881 | +4.0 [+2.0, +6.1] |
| breadth-v1,全部 14 个数据集(3,089) | 0.757 | 0.748 | +0.8 [−0.1, +1.8] |
| 域外,transfer-v4 锁定测试(656):准确率 | 0.8887 | 0.8963 | −0.8 [−2.0, +0.5] |
| 域外,transfer-v4 锁定测试:Brier / ≤ 5 % 误差下的覆盖率 | 0.154 / 0.875 | 0.160 / 0.835 | – |
与其他决策模型的比较,在 breadth-v1 测试(全部 14 个数据集)上,用社区 Decision Index 0.2 的随机校正指数打分(每个数据集 (score − chance) / (1 − chance),在每个领域内取平均,然后 100 × 五个领域的均值)。Jev 经 Vercel AI Gateway 查询,AutoJev-27B(denis-pplx/autojev-27b,同一基座的完整权重微调)经其自己的服务器查询,各一次,在同一批条目上。
| Kev-27B v2 | Kev-27B v1 | Jev | AutoJev-27B | |
|---|---|---|---|---|
| 指数 [95 % CI] | 52.3 [49.2, 55.4] | 50.2 [47.0, 53.2] | 54.0 [51.2, 57.0] | 50.0 [47.0, 53.3] |
对照 v1 的指数差是 +2.1 [−0.4, +4.6]。没有计算对 Jev 的配对区间。
长期文档(longdoc-v1 测试里的 CUAD 合同,按 token 计的 state 长度给出准确率 / ECE):
| state 长度(问题数) | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| 8k 以下(867) | 0.874 / 0.059 | 0.900 / 0.025 |
| 8k–16k(443) | 0.880 / 0.052 | 0.892 / 0.028 |
| 16k–32k(442) | 0.873 / 0.061 | 0.882 / 0.019 |
| 32k–64k(442) | 0.867 / 0.060 | 0.876 / 0.014 |
| 全部(2,194) | 0.874 / 0.053 | 0.890 / 0.007 |
跨全部长度的准确率差:−1.6 [−3.0, −0.3]。在生成的协议包(2,400 个问题)上两个模型都得 1.000。
上下文长度。 已验证上下文长度:65,536 tokens,即服务上限,来自 longdoc-v1 开发(与 8k 桶配对的 CUAD 准确率差,pp [95 % CI]:16k +0.2 [−0.7, +1.2],32k −0.2 [−1.2, +0.7],64k −1.1 [−2.4, +0.0];各 445–447 个问题)。规则与每个 Kev 1.0 规模所用相同:已验证长度是从 16,384 tokens 起向下的最大桶的名义大小,使得它以及它与 8,192 之间的每个桶都在容差内,即与 8k 桶相比 CUAD 准确率差,在同一合同、重复和问题上配对,其 95 % 下界至少为 −3 pp,且每条记录都被作答。
校准(期望校准误差,ECE,按服务状态;越低越好):
| 面板 | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| breadth-v1 测试,10 个数据集 | 0.015 | 0.013 |
| tasksource-heldout-v1 测试 | 0.049 | 0.051 |
| hard-v1 + devtools-v1 + documents-v1 测试 | 0.014 | 0.027 |
| transfer-v4 锁定测试 | 0.019 | 0.018 |
| CUAD 合同,longdoc-v1 测试 | 0.053 | 0.007 |
在 648 个拟合问题上,5 折组不相交交叉验证把 ECE 从 0.048(原始)降到 0.038(折外);两个区间重叠。该温度的 90 % bootstrap 区间是 [1.20, 1.45]。在其两端,头条面板朝相反方向移动:breadth-v1 ECE 在 T = 1.20 时升到 0.026,tasksource-heldout-v1 ECE 在 T = 1.45 时升到 0.067。
其他结果。
| 套件 | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| transfer-v4 开发,准确率 / Brier | 0.851 / 0.218 | 0.848 / 0.229 |
| 短 state,transfer-r3 测试(1,150) | 0.858 | 0.879 |
| devtools-v1 测试,全部来源(1,071) | 0.790 | 0.711 |
| decision-v7 开发(v1 的训练分布) | 0.865 | 0.866 |
| MMLU-Pro,10 个选项(transfer-v9 开发) | 0.675 | 0.665 |
| 以 p ≥ 0.9 作答的无法回答条目(越低越好) | 0.00 | 0.00 |
| SemIf(144) / WANLI-v2(1,002) / TypeSafe(89 个已作答行) | 0.965 / 0.756 / 0.854 | 0.972 / 0.745 / 0.865 |
| 已训练生成器的留出领域,准确率 / ECE:ood-v2(4,988) | 0.956 / 0.020 | 0.944 / 0.044 |
| agents-ood-v1(2,084) | 0.988 / 0.032 | 0.967 / 0.137 |
| guardrails-ood-v1(4,949) | 0.984 / 0.010 | 0.944 / 0.079 |
transfer-r3 测试是一个短 state 面板,来自与校准池相同的八个留出来源;decision-v7 是 v1 的训练分布;transfer-v9 装着 MMLU-Pro 和被移除决定证据的条目。SemIf(SemIf 项目的手写决策)、WANLI-v2(WANLI 测试划分的自然语言推理对)和 TypeSafe(SemIf 选的 TypeSafe 工作流案例)仅作报告:标签审计发现它们太小、饱和或有噪声,无法用来给模型排名。WANLI-v2 和 TypeSafe 于 2026-09-30 作为评测退役(约四分之一的 WANLI 对被其两位标注者标得不同,gold 取其中之一;TypeSafe 的 gold 是两个闭源前沿模型的平均答案,问题太少,无法区分 checkpoint);它们的数字作为记录保留。
服务一致性(H200,bf16 配融合内核和 CUDA graphs,200 条 decision-v7 开发记录 / 280 个问题):
| 检查 | 结果 |
|---|---|
| 服务 vs fp32 评测路径,最大 |Δp| | 0.0223,没有答案改变 |
| 单个问题 vs 完整请求,最大 |Δp| | 0.0039,没有答案改变 |
| 8k / 32k / 64k-token state 下服务 vs 评测,最大 |Δp| | 0.0064 / 0.0095 / 0.0017,没有答案改变 |
| 64k-token state 的模型时间,新 state / 缓存 state | 9.4 s / 733 ms |
| 常驻内存 / 从热缓存加载时间 | 65.5 GB / 17.6 s |
| 1 / 64 个并发客户端下的吞吐 | 21.1 / 36.4 请求/s |
¹ 从头条面板中排除:四个 breadth-v1 数据集(routerbench,其 state 缺少所问的信息;cfcolor 和 humicroedit,对每个系统都处于随机水平;chessbench,对每个系统都处于下限);七个标签无效或无法恢复的 tasksource-heldout-v1 家族(名字不公开);以及两个 state 无法决定其标签的 devtools-v1 任务(flakeflagger、commit 变更类型)。transfer-r3 的 emotion 来源(远端关键词标签)从 局限 里的短 state 面板中排除。
局限与取舍
- 选择。 发布的 checkpoint 是在已知一个更早候选的测试结果后选出的,并在同一批测试集上确认。把测试余量当作偏乐观。
- 短 state 上没有增益。 它在短输入上不比 v1 更好:锁定的 transfer-v4 测试 −0.8 pp [−2.0, +0.5],短 state 开发面板(transfer-v4 开发加不含
emotion的 transfer-r3 测试)−0.9 pp [−2.0, +0.1],整个 transfer-r3 测试 −2.1 pp [−3.5, −0.8]。 - 在长合同上更差且过度自信。 在 CUAD 上它比 v1 低 1.6 pp 准确,且 ECE 在每个长度上都是 v1 的 2 到 4 倍(总体 0.053 对 0.007)。CUAD 的问题里有一些错误或有争议的 gold 标签,但差距在各长度上是一致的。做合同审查时,在你自己的标注文档上重拟合温度(
python -m kev.calibrate),或改用 v1。 - 分布内增益。 hard-v1、devtools-v1 和 documents-v1 的训练划分就在训练数据里,而 ood-v2、agents-ood-v1 和 guardrails-ood-v1 套件是也产生了训练数据的生成器的留出领域。那里的增益测的是已训练家族的留出条目,不是到新任务的迁移。
- 基座训练未知。 基座是 Qwen 的后训练发布版;其训练数据不为人知,所以无法排除它与任何评测的重叠。
- 知识。 知识由基座决定:MMLU-Pro 是 0.675,对 Jev 在同一批条目上的 0.840。
- 未训练的长度。 32k–64k tokens 的 state 经过评测(longdoc-v1)但未训练。
- 退役套件。 一个用来选 v1 的支持工单套件(scienthoon)在 v2 构建前作为不健全退役,所以 v2 在它上面没有结果。v2 未平均的微调父模型在那里比 v1 低 5.5 pp [−7.8, −3.2]。
- 温度不确定性。 温度的区间([1.20, 1.45])让测试 ECE 移动最多约 0.02。
- 硬件。 它需要一张 80 GB 级数据中心 GPU(最长的 state 需要超过 80 GB)。经 MLX 在 Apple Silicon 上:v2 的完整 bf16 权重需要约 51 GB 加工作内存,所以 64 GB Mac 是边界,96–128 GB Mac 应该能装。这是从更小模型上的测量推断的,尚未在大 Mac 上测量:通过同一路径加载完整权重 Kev-4B 的峰值就是其权重大小(8.4 GB),其答案与 fp32 评测路径相差在 0.015 以内(
runs/mlx-full-4b)。v1(LoRA 适配器,tagv1-lora)由外部贡献者在一台 128 GB M5 Max 上通过 MLX 服务(PR #175):transfer-v4 开发上准确率 0.849,对发布的 0.848,适配器合并时稳态 52 GB、峰值 97 GB。
偏见、风险与伦理考量
- 校准概率可能制造不当的信任。温度是在公开留出数据集上拟合的,不迁移到每个工作负载;在设阈值之前,先在你自己的标注样本上测量准确率与校准。
- 准确率和校准会随领域变化而偏移(例如在长合同上)。请监控生产错误率,而不是依赖上面的数字。
- 未经人工复核,不要用它做关于人的有后果的自动决策。基座模型和训练数据的偏见(包括其他模型产生的标签)未被测量。
- state 可能包含个人或机密数据。自托管把输入留在你自己的硬件上;除非设置了
KEV_API_KEY,服务器是开放的,所以请应用你自己的访问控制与数据处理策略。
算力
- 微调:8 × NVIDIA H200,16.2 h 训练时间(129 GPU-hours),不含重启和评测。
- 权重平均:CPU 上约 6 分钟。
- 评测与服务检查:Modal 上的单张 H200 GPU。
溯源与可复现性
- 代码、套件与评测报告:github.com/jaredpalmer/kev。发布数字:
runs/release/kev-27b-r23.json(scripts/release_numbers.py --release kev-27b-r23)。 - 微调:第 22 轮试验
r22-27b-lr2e6/00-trial-0(experiments/round22/lr2e6.json),权重 sha2563fa0182a…。混合:第 23 轮臂27b-k-w85(scripts/interpolate_checkpoint.py --toward;Hub 仓库里的interpolation.json),选择规则和确认阶段在experiments/rounds/r23.json;结果在runs/r23-readout/、runs/r23-verdict/、runs/r23-breadth-report/、runs/serving-27b-r23*/。 - 混合来源:v1 在
jaredpalmer/kev-27b@01b81998(试验r6-27b-v2/01-trial-1),现 tagv1-lora。 - 发布的权重 sha256
d27af6ab2be16824166ac639907b4dba40979ff338599c2872721aa6c5072022;head.ptsha2567968f17b03479c1ef9d1c0f3ab8a15e31ecb441cf40691b07ee945ab554d45ad(T = 1.3195)。权重发布于 Hub commit28be62e9。 - 验证:在 H200 上从 Hub 匿名加载,它在 252 个 SemIf 行中的 252 个和 764 个 transfer-v4 开发行中的 764 个上精确复现了发布前评测的 logits(
runs/release/kev-27b-r23-published.json、runs/release/kev-27b-r23-staging.json)。
引用
@misc{palmer2026kev27b,
title = {Kev-27B: a calibrated decision model on Qwen3.8-27B},
author = {Palmer, Jared},
year = {2026},
howpublished = {\url{https://huggingface.co/jaredpalmer/kev-27b}},
note = {Version 2, released 2026-09-30}
}
联系
问题与 issue:github.com/jaredpalmer/kev/issues。