Kev 1.0
Kev 1.0 是整个 Kev 家族的首个带版本号的发布:四个决策模型读取一份文档和一组带类型的问题,在一次前向传播里返回各选项上的校准概率,运行在 TypeSafe 的 System One API 之后。其中没有任何新训练的内容。它把下一代 Kev 用来对标的 checkpoint、模型卡、评测套件和服务代码固定下来,每个 Hub 仓库都打上同一个 tag(v1.0)。
1.0 里有什么
| 模型 | Hub 仓库 | 权重 revision | 形式 | 基座 | 温度 | 已验证上下文 |
|---|---|---|---|---|---|---|
| Kev-0.8B | jaredpalmer/kev-0.8b |
9a45d25e |
LoRA 适配器 + 指针头 | Qwen3.5-0.8B-Base (Apache-2.0) | 2.35 | 8,192 tokens |
| Kev-4B | jaredpalmer/kev-4b |
139fdd94 |
LoRA 适配器 + 指针头 | Qwen3.5-4B-Base (Apache-2.0) | 2.41 | 8,192 tokens |
| Kev-9B (v2) | jaredpalmer/kev-9b |
b5d8c18e |
LoRA 适配器 + 指针头 | Qwen3.5-9B-Base (Apache-2.0) | 2.19 | 8,192 tokens |
| Kev-27B (v2) | jaredpalmer/kev-27b |
28be62e9 |
完整 bf16 权重(51 GB)+ 指针头 | Qwen3.8-27B,后训练版 (Apache-2.0) | 1.32 | 65,536 tokens |
头条数字(fp32 评测路径,每个模型都在其发布的温度下;transfer-v4 测试是锁定的,每个模型只读一次):
| Kev-0.8B | Kev-4B | Kev-9B | Kev-27B | Jev | |
|---|---|---|---|---|---|
| 留出数据集:breadth-v1 测试,随机校正指数 | 23.3 | 38.0 | 41.0 | 52.3 | 54.0 |
| 域外:transfer-v4 开发集准确率 | 0.648 | 0.817 | 0.820 | 0.851 | 0.857 |
| 域外:transfer-v4 锁定测试准确率 / Brier | 0.697 / 0.397 | 0.838 / 0.224 | 0.852 / 0.199 | 0.889 / 0.154 | – |
| 技能:hard-v1 测试 | 0.665 | 0.803 | 0.834 | 0.918 | – |
| 开发者工具:devtools-v1 测试,全部来源 | 0.637 | 0.756 | 0.791 | 0.790 | – |
| 真实文档:documents-v1 测试 | 0.851 | 0.903 | 0.900 | 0.908 | – |
| MMLU-Pro(transfer-v9 开发集) | 0.230 | 0.565 | 0.590 | 0.675 | 0.840 |
hard-v1、devtools-v1 和 documents-v1 的训练划分是每个 Kev 都训练过的:那几行测的是已训练家族的留出条目,不是迁移。breadth-v1 和 transfer-v4 那几行是没有任何 Kev 训练过的数据集。Jev 只在开发划分和 breadth-v1 测试上读过。每个数字都通过 docs/claims.json 追溯到一份提交的报告;模型卡(docs/model-cards/)里有其余部分,附带区间。
自上个家族发布以来有什么变化
以 2026-09-24 为当前家族首次整理时的 GitHub release kev-family 为基准(Kev-27B v1、Kev-9B v1,以及与此处相同的 Kev-4B 和 Kev-0.8B)。它 2026-09-30 的更新(Kev-27B v2、Kev-9B v2)也列在这里,因为 1.0 正是它们成为带版本号发布一部分的地方。
- Kev-27B v2:完整权重。 把 Qwen3.8-27B 的每一个权重在一个 145,840 条记录的语料上微调一个 epoch,再与 v1 按 0.85 / 0.15 平均。在测试上与 v1 相比:留出数据集 +1.2 pp [+0.3, +2.2],留出任务家族 +5.3 [+3.7, +6.8],技能、工具与文档 +8.9 [+7.5, +10.3];锁定的域外测试 0.889 对 0.896,Brier 0.154 对 0.160。在长合同上更差且过度自信(CUAD ECE 0.053 对 0.007)。v1 在
jaredpalmer/kev-27b@v1-lora。 - Kev-9B v2。 v1 加上在 Kev-4B 和 Kev-0.8B 已有的 documents 与 skills 数据上训练一个 epoch。在测试上与 v1 相比:hard-v1 + devtools-v1 +18.7 pp [+16.7, +20.8],documents-v1 +7.1 [+4.7, +9.2];在锁定的域外测试上持平(两者都是 0.852),Brier 0.199 对 0.224。v1 在
jaredpalmer/kev-9b@v1。 - 不再静默截断。 服务器过去会无声地截断超过限制的 state。现在它对超过 65,536 tokens 的 state 返回 422,并给出 token 数与限制;
KEV_TRUNCATE_STATES=1可以退回到截断,而这样一台服务器的每次响应都会带上truncated。deploy 与 fine-tune 技能把KEV_REF固定到包含此修复以及下面长文档和 MLX 改动的某个 commit(71d4829),Space 也在修复后重新发布。 - 每个规模的长期文档。 评测路径对数学内核上的长行保留 fp32 注意力,所以 Kev-0.8B、4B 和 9B 在 32k–64k token 的 state 上会耗尽 GPU 显存。现在长行在 fp32 下走省显存内核:Kev-4B 在 H100 上以 17.2 s 读取一个 61k token 的 state,权重之上占用 17.2 GiB,而较短的行逐 bit 保留其 logits。正是这一点让上面的已验证上下文长度变得可测。
- Apple Silicon。 MLX 后端按保存的样子加载完整权重 checkpoint,不做合并,从而给 Kev-27B 一条 Mac 路径(预计需要约 51 GB 加工作内存;尚未在该规模上跑过)。长期 state 以每次 1,024 tokens 预填充,缓存会在一次前向之前逐出,所以 Kev-4B 在 32 GB M5 上以 13.0 GB 峰值服务一个 65,000 token 的 state(新 state 84.5 s,命中缓存 716 ms)。
- 内核溯源。 每个评测报告和试验现在都记录其 logits 所依赖的内核集(包版本、GPU、dtype、注意力与 DeltaNet 实现),起因是发现评测镜像里的一次内核变更让 Kev-27B v1 的读出概率移动了 0.03–0.06,而 Kev 自身代码没有任何改动。
- 评测审计。 三个套件因不适合用于选模型而被移除:scienthoon(模板化工单,有一个问题文本无法回答)、WANLI-v2 / WANLI-v1(四分之一的 gold 标签是两位标注者中一位的)以及 TypeSafe 的公开评测(gold 来自两个闭源模型,问题太少)。头条面板排除了审计认为无法回答或未标注的条目。过去几次发布在这些套件上的数字保留在其记录里,不在 1.0 的模型卡上。
- 校准。 Kev-4B 和 Kev-0.8B 发布的是在其训练数据留出条目上拟合的温度。在留出数据集上的一次注册重拟合对两者都做了评测,也都没有采用:它没有改善 Kev-4B(Brier 差 −0.0001 [−0.0005, +0.0003]),还让 Kev-0.8B 在其文档与技能家族上校准变差,超出注册的容差。Kev-9B 和 Kev-27B 发布的已经是留出数据集温度。
- 训练数据已公开。 documents-v1 和 hard-v1 的训练划分在
jaredpalmer/kev-suites数据集中,所以小模型的训练数据可以抓取并做 hash 校验。 - 已验证上下文长度。 每张模型卡现在都给出:在 CUAD 合同上的准确率与同一模型在 8k token 时相比保持在 3 pp 以内(95 % 下界)的最长 state。Kev-27B 保持到 65,536 tokens,即服务上限(其 64k 下界为 −2.4 pp)。Kev-0.8B、4B 和 9B 只验证了它们训练过的 8,192:三者在 16k 时都已超出容差(下界 −8.5、−3.4 和 −3.7 pp),所以超过 8k token 后,它们对长文档的回答不在该测量的覆盖范围内。
- 正式模型卡。 四张卡都遵循同一结构:摘要、详情、预期用途与范围外用途、如何使用、训练数据与流程、评测、局限、风险、算力、溯源。
已知局限
- 分布内增益。 去年的巨大增益出现在训练划分就在训练数据里的套件上。在没有任何 Kev 训练过的数据集上,Kev-27B 在 breadth-v1 测试上比 Jev 低 1.7 个指数点,较小的规模低 13–31 个点。
- 未训练的长度。 Kev-0.8B、4B 和 9B 训练时最多 7,552 tokens,Kev-27B 最多 32,768;服务器接受 65,536。请使用已验证上下文长度,而不是服务上限。
- Kev-27B 在长合同上不如 v1 准确且过度自信(CUAD 测试 ECE 0.053 对 0.007);在自己的文档上重拟合温度,或做合同审查时改用
@v1-lora。 - Kev-0.8B 与工具路由。 它的 When2Call 准确率在 documents-and-skills 阶段后跌破随机(测试 0.133);不要用它做工具调用路由。
- 日期算术是 27B 以下每个规模最弱的家族(
deadline策略准确率 0.35 / 0.65 / 0.725,对 Jev 的 0.95);KEV_DATE_FACTS=1有帮助。 - 知识由基座决定(MMLU-Pro 0.230–0.675,对 Jev 的 0.840)。
- Kev-9B 在 Mac 上尚未测量,Kev-27B 在 Mac 上预计能装进 96–128 GB,但尚未运行。
- 选择。 Kev-27B v2 和 Kev-9B v2 是在已知更早的开发读数的情况下,按审计后的规则重新选出的;它们的测试余量偏乐观。
- 每个模型只有一个温度,无法重排置信度顺序,所以在 5 % 误差预算下,这些模型在域外自动处理的决策比 Jev 少。
如何运行
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-4b@v1.0 --port 8009 # CUDA, or MLX on Apple Silicon
从 release tarball:
shasum -a 256 -c SHA256SUMS.txt
tar -xzf kev-4b.tar.gz
uv run --extra serve python -m kev.serve --run kev-4b --port 8009
TypeSafe SDK 原样可用:TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8009", model="kev-latest")。Kev-27B 需要一张 B200、H200 或 H100 80 GB:--run jaredpalmer/kev-27b@v1.0。要在 Modal 上部署 HTTPS 端点,见 skills/kev-deploy。
资产
每个 tarball 装着一个 checkpoint 在其权重 revision 上的样子(LoRA 适配器、带温度的 head.pt、tokenizer 文件、训练试验的 result.json、provenance.json、training_config.json、training_metrics.json 和日志),Kev 1.0 模型卡作为 README.md,以及锁定的 transfer-v4 读数为 locked_test.json。它们由 scripts/build_release_assets.py 从 docs/releases/kev-1.0-assets.json 构建,重新构建得到相同的字节。其中每个文件的日期都是 2026-10-01 00:00 UTC,kev.serve 会把它报告为解包 checkpoint 的发布日期。首批于 2026-10-01 附上的 tarball 把文件日期标成 1970-01-01,于是 kev.serve 报出 1969-12-31;它们在同一天被这批替换。权重和所有其他文件逐字节相同;只有 tarball 的 hash 变了。
| 文件 | SHA-256 | Checkpoint | 适配器 / 指针头 SHA-256 |
|---|---|---|---|
kev-0.8b.tar.gz (46 MB) |
0ae144c7675f0c3f333be0bb878a0f202ab9e6fa84169fb7cb16efe6176c1ef1 |
jaredpalmer/kev-0.8b@9a45d25e |
9b908623… / f400bd12… |
kev-4b.tar.gz (131 MB) |
2e707e2ebd08980dc7881222b7024cea5606401441c1a086afb170ae7784201c |
jaredpalmer/kev-4b@139fdd94 |
90e81735… / dd633435… |
kev-9b.tar.gz (172 MB) |
acd13320b7d1b052ce989f19ca9d1d9ba5219b8beced0ee67337908aef1deb3f |
jaredpalmer/kev-9b@b5d8c18e |
2b2a70cf… / 8e1dab2c… |
Kev-27B 未附带,因为它 51 GB 的权重超过了 GitHub 每个资产 2 GB 的上限。从 Hub 下载:jaredpalmer/kev-27b@v1.0(权重 commit 28be62e9,head.pt 7968f17b…)。
在每个 Hub 仓库上,v1.0 tag 指向上传 Kev 1.0 模型卡的那个 commit。该 commit 只改了 README.md,所以它的权重与第一张表里的权重 revision 是相同的字节:kev-0.8b bf75a6a8、kev-4b 6cfce5c2、kev-9b db029f08、kev-27b af0e6d55。
发布计划(给维护者;不属于已发布的说明)
已于 2026-10-01 完成(记录 runs/release/kev-1.0.json;PLAN.md「Released: Kev 1.0」)。第 3 步和第 4 步:只改模型卡的 commit,每个模型卡 commit 上打 v1.0(0.8B bf75a6a8、4B 6cfce5c2、9B db029f08、27B af0e6d55;所有其他文件不变)。第 5 步和第 6 步:资产生成两次,hash 相同,release 已发布并标记为 Latest。第 7 步:保留 kev-family,移除其资产,正文改成指向 kev-1.0 的指针,旧说明放在 runs/release/kev-family-notes-retired.md。第 8 步:pin 不变。第 9 步:collection 和 Space 已检查;Space 未重新发布。发布前写就的计划如下。顺序:
-
占位符:已填(2026-10-01),来自第 28 轮注册的上下文读数
runs/r28-readout/context.json(scripts/longdoc_report.py --context-margin -0.03,作用于runs/r28-{4b-r10,08b-r15}-longdoc、runs/r29-9b-r18a-longdoc和runs/r23-27b-k-w85-longdoc;原始runs/r28-context,在发布温度下的 ECEruns/r28-context-served),数字在docs/claims.json中。 -
合并本 PR。
-
Hub 模型卡。 每张 1.0 卡只作为
README.md上传(不带权重):只改模型卡的 commit 不需要kev.publish;hf upload jaredpalmer/kev-<size> docs/model-cards/kev-<size>.md README.md --commit-message "Kev 1.0 model card (weights unchanged)"。用HfApi().model_info(..., files_metadata=True)检查adapter_model.safetensors/head.pt(27B:model.safetensors.index.json和每个分片)的 hash 如下。 -
Hub tag。 四个仓库上都打
v1.0。默认(如规定):打确切的权重 revision;若第 3 步先跑了,就改打模型卡 commit,这样@v1.0显示的是 1.0 卡(权重逐字节相同;两个 commit 都记到 PLAN.md)。仓库 v1.0目标(权重)适配器 / 指针头 sha256 jaredpalmer/kev-0.8b9a45d25eb2ab761841196625383fa1dff0e56c1e9b908623…/f400bd12…jaredpalmer/kev-4b139fdd94f1b6a6ad80cc15e08fcb99cac885a10190e81735…/dd633435…jaredpalmer/kev-9bb5d8c18e44c60888d138b65cb6507ff0a5a448a02b2a70cf…/8e1dab2c…jaredpalmer/kev-27bmain(今天是ef78cc8a34d5f426fb229c52089db189218cfe5c:权重28be62e9,其后三个只改模型卡的 commit)权重 d27af6ab…/ 指针头7968f17b…hf repos tag create jaredpalmer/kev-0.8b v1.0 --revision 9a45d25eb2ab761841196625383fa1dff0e56c1e -m "Kev 1.0" hf repos tag create jaredpalmer/kev-4b v1.0 --revision 139fdd94f1b6a6ad80cc15e08fcb99cac885a101 -m "Kev 1.0" hf repos tag create jaredpalmer/kev-9b v1.0 --revision b5d8c18e44c60888d138b65cb6507ff0a5a448a0 -m "Kev 1.0" hf repos tag create jaredpalmer/kev-27b v1.0 --revision <main at release> -m "Kev 1.0" -
资产。
uv run python scripts/build_release_assets.py --release docs/releases/kev-1.0-assets.json --out /tmp/kev-1.0-assets构建kev-0.8b.tar.gz、kev-4b.tar.gz、kev-9b.tar.gz(各自含:上述 revision 上的 Hub 快照,即适配器、带温度的head.pt、tokenizer 文件、试验的result.json、provenance.json、training_config.json和training_metrics.json;1.0 卡作为README.md;锁定的读数作为locked_test.json),以及SHA256SUMS.txt和manifest.json(每个成员的 sha256)。若某次下载的适配器或指针头 hash 与规格不符,它会拒绝。Kev-27B 不是资产(51 GB;GitHub 单个资产上限 2 GB):说明指向 Hub。 -
GitHub release。 在合并 commit 上打 tag
kev-1.0;以这些说明中已发布的部分(本节以上全部)为正文创建 draft release,附上三个 tarball 和SHA256SUMS.txt,下载回来跑shasum -a 256 -c SHA256SUMS.txt,解包一个并服务它,然后发布并标记为 Latest。 -
每个规模一个 release。 发布策略在一个 GitHub release 里只保留每个规模的最佳版本。
kev-1.0发布后,kev-family与它重复:删掉它的三个 tarball 和SHA256SUMS.txt,正文改成指向kev-1.0的指针(或删除该 release;由 Jared 定)。更早的版本留在各模型卡列出的 Hub tag 上。 -
部署 pin。
skills/kev-deploy和skills/kev-finetune固定KEV_REF71d4829;1.0 的 checkpoint 不需要更新的代码。只有当后续的服务修复应随 1.0 一起发布时,才移动这个 pin。 -
Collection 与 Space。 Kev collection 已经列出四个仓库。Space 从
main服务 Kev-4B 和 Kev-0.8B,那就是 1.0 权重;除非kev/model.py、kev/api.py或kev/checkpoint.py在上次发布后改过,否则无需重新发布。