Laya 本地替代 Jev 的可行性评估(真实实测)
结论
不能整体替代,但存在两个真正可替代的场景。
三句话定性:
- 延迟优势成立且真实——本机无 GPU(i7-13620H),Laya multilingual 单次前向 240-650ms,与 Jev 跨洋 466-824ms 同量级甚至更快;但优势来自"本地传输跳"而非模型架构的 33ms(那是 T4 数字)。
- 去重/判别精度不成立——同 7 对真实晨报去重输入,Laya 最好配置 5/7,Jev 6/7,且 Laya 的错都错在"高置信错判",直接改变行为。
- 批量形态彻底不成立——5 条记录放一个 JSON state,输出全部塌缩到 0.997-0.998(与 Jev 批量实测同一个已知失效模式),本地版必须在客户端逐条拆开,等于放弃批量的全部传输收益。
推荐决策:Watch + Sidecar Trial(限定场景),不替换现有 Jev 调用链。
一句话定位
Laya 是 Convai Innovations 发布的开源非自回归 System 1 决策模型(Apache 2.0,421M ModernBERT-large,三个 checkpoint),定位与 TypeSafe Jev 完全同构:choice / score / noul 三原语、无文本生成、输出校准概率。差别在交付形态——Jev 闭源 API,Laya 权重开放、可本地跑。
作者自述动机:他 2025 年 3 月就发过同架构的 arXiv 论文(2503.23303),2026 年 9 月 TypeSafe 以"突破"名义推出 Jev,于是他重做一版全开源横向版本。
实测环境
| 项 | 值 |
|---|---|
| 机型 | i7-13620H(10 线程)/ 31GB RAM / 无 NVIDIA GPU |
| 运行时 | torch 2.14.0+cpu、transformers 5.17.0、laya 0.3.6 / Python 3.12 |
| 模型 | convaiinnovations/laya(全套 2.37GB,本地路径 /data/laya-eval/hf) |
| 对照 | Jev 当日复测(Vercel AI Gateway,typesafe-ai/jev)+ 2026-09-20 历史基线 |
| 安装成本 | pip install laya + torch CPU 轮子,首次加载 checkpoint 17-31s |
| 内存 | 单 checkpoint 常驻 1.8-2.9GB RSS |
测试集(全部为本机真实生产输入,非构造样例)
| 编号 | 场景 | 来源 | 对照基准 |
|---|---|---|---|
| T1 | 晨报语义去重 7 对 | jev-p0-absorption-2026-09-20/result.json 真实候选对 |
人工 ground truth + Jev 当日复测 |
| T2 | 可复现性(8 次重复) | 对[2]、对[5] | Jev 8 次极差 0.010 |
| T3 | Wiki 治理告警分诊 | ~/.cache/hermes/wiki-alert-triage.json 今日真实 state |
Jev 当日 notify=0.12 |
| T4 | Hindsight retain 预筛重复对 | ~/.hermes/logs/hindsight-retain-prescreen/latest.json 20 对 |
Jev 批量 prob |
| T5 | 单 state 多问题 | 10 个 noul 问一次调用 | Jev 批量形态 |
| T6 | 多记录批量 | 5 对记忆放一个 JSON state | Jev decide_batch_records 形态 |
实测结果
T1 晨报去重 7 对(核心判据)
| 配置 | 准确率 | 与 Jev 判定一致 | 平均延迟 | 最大延迟 |
|---|---|---|---|---|
| Jev(跨洋 API,当日复测) | 6/7 | — | 547ms | 824ms |
| Laya multilingual + 中文提问 | 5/7 | 4/7 | 494ms | 645ms |
| Laya multilingual + 英文提问 | 2/7 | 3/7 | 403ms | 571ms |
| Laya english checkpoint + 英文提问 | 5/7 | 4/7 | 1256ms | 2158ms |
| Laya english checkpoint + 中文提问 | 3/7 | 2/7 | 1472ms | 2274ms |
逐对明细(gt=人工裁定,Jev=当日复测概率,其余为 Laya noul 输出):
| # | 真值 | Jev | ml+中文 | ml+英文 | en+中文 | en+英文 |
|---|---|---|---|---|---|---|
| 0 | 重复 | 0.66 | 0.219 | 0.947 | 0.159 | 0.127 |
| 1 | 不重复 | 0.22 | 0.984 | 0.993 | 0.941 | 0.372 |
| 2 | 不重复 | 0.89 | 0.027 | 0.754 | 0.492 | 0.334 |
| 3 | 不重复 | 0.10 | 0.250 | 0.996 | 0.133 | 0.265 |
| 4 | 不重复 | 0.26 | 0.138 | 0.907 | 0.890 | 0.865 |
| 5 | 重复 | 0.93 | 0.930 | 0.993 | 0.756 | 0.887 |
| 6 | 不重复 | 0.05 | 0.310 | 0.956 | 0.944 | 0.214 |
三个关键观察:
- 中英文提问方向相反且不可调和:中文提问让"掘金同作者两文"误判 0.984 重复,英文提问让 2、3、4、6 四对全部误判重复(0.754/0.996/0.907/0.956)。同一模型、同一 state,换语言就翻面——说明它没真正判别语义,而是在适配提问表面形式。
- 错误全部是高置信错误:ml+中文在错判的那条给 conf=0.984;ml+英文四条错判 conf 全部 ≥0.754。置信度门控救不了,因为模型错的时候一样自信。
- 好的一面:ml+中文 5/7 与 english+英文 5/7 都只差 Jev 1 分,且延迟更低(494ms / 1256ms)。若只挑一个配置做旁路候选,是
multilingual + 中文提问。
T2 可复现性:Laya 完胜
| 指标 | Laya | Jev |
|---|---|---|
| 8 次极差(pair[2] / pair[5]) | 0.0000 / 0.0000 | 0.010 / 0.010 |
| 判定翻转 | 0/8 | 0/8 |
Laya 是确定性前向,概率比特级可复现;Jev 有小幅非确定性。这一点 Laya 严格优于 Jev,也是唯一它明确胜出的工程属性。
T3 Wiki 治理分诊:方向相反,不可替换
| 配置 | notify 概率 | urgency |
|---|---|---|
| Jev(当日真实生产输出) | 0.12(silent,不打扰) | 1.05 |
| Laya multilingual + 中文 | 0.979(notify,打扰) | 1.64 |
| Laya english + 中文 | 0.864(notify,打扰) | 1.77 |
今日真实 state 是 verdict: maintenance、断链 0、孤岛 0,仅 32 个陈旧中心页——Jev 判 0.12 静默,Laya 判 0.979 要打扰人。这不是精度差 1 分的问题,是把该静默的日常维护项判成必须立刻介入。涛哥的原始诉求正是"减少告警后手动介入",换 Laya 会直接违背该目标。
T4 Retain 预筛 20 对
| 分组 | 与 Jev 判定一致 |
|---|---|
| 总体 | 13/20 |
| Jev 判重复(5 条) | 5/5 |
| Jev 判不重复(15 条) | 8/15 |
| 高 Jaccard 区(≥0.6,7 条) | 5/7 |
Laya 对几乎逐字相同的记录(Jaccard 1.0)判得很准(0.992/0.996/0.998),但中等相似度区间大量高置信误判:
| Jaccard | Jev | Laya | 性质 |
|---|---|---|---|
| 0.45 | 0.14 不重复 | 0.932 重复 | 第 10 轮 vs 第 8 轮审查,不同轮次 |
| 0.60 | 0.44 | 0.932 重复 | 不同轮次 |
| 0.438 | 0.08 不重复 | 0.872 重复 | 第 5 轮 vs 第 7 轮 |
| 0.368 | 0.12 不重复 | 0.872 重复 | 不同轮次 |
这是最危险的一类错误:同系列不同轮次的审查记录被判成重复,会直接触发"删除/合并"这类不可逆动作。
T5 / T6 批量形态:失效
| 测试 | 结果 |
|---|---|
| T5 单 state 10 问一次前向 | 3161ms(316ms/问)——无吞吐优势,且随问题数线性增长 |
| T6 单 state 5 记录批量 | 5899ms(1180ms/条)——输出全部塌缩 0.997-0.998 |
T6 与 Jev 批量已知失效模式完全一致:多记录放同一 state 时,模型无法给每条独立判断,全部输出同一个极端值。Jev 侧我们靠"隔离句 + scope 绑定 + 客户端绑校验"部分缓解;Laya 本地版同样必须逐条拆开串行,批量形态不存在。
四层审计
| 层 | 结论 |
|---|---|
| 宣称层 | README 主动披露大量弱点(base checkpoint 接近随机、moderation 在留出集仅 0.53、choice 需 <20 选项、typed-decisions 是微调产物),比多数项目诚实。但对话口径激进:HF 卡列"延迟 10.4x 更快",仓库内 research/results/app_benchmark.json 从未提交,BENCHMARKS.md 却引用它(issue #170)。 |
| 实现层 | 代码可读、可拆、可微调(Kaggle 免费 2xT4 训练 4-5h)。但社区已定位多个未修问题:act_head 输入未归一化导致 act_probability 恒为 1.0(#185);微调把温度拟合在训练集切片上而非留出集(#186,即校准泄漏);english/typed-decisions 的 choice:11+ 温度 0.1006 会把 0.24 信念放大成 0.99 置信度,当前仅被 clamp_temperature 钳到 0.5 兜底,权重未重训(PR #42)。 |
| 运行层 | 本机 CPU 可稳定跑,安装干净,确定性输出。代价:常驻 1.8-2.9GB/checkpoint、冷加载 17-31s、切语言需重载(Router 默认 max_loaded=1 时每次切换都重建)。 |
| 治理层 | Apache 2.0、权重本地可控、无外部依赖、零调用成本——数据面完全本地化,这是相对 Jev 的结构性优势。镜像 2.37GB 落 /data(65G 可用)。 |
三个专项验证
1. 静态面 vs 运行面一致性:不一致。README/HF 卡的"33ms"是 T4 GPU 数字,本机实测 240-650ms(约 10-15x 差,与官方 fallback 提示一致)。声明的"校准概率"在本机可见 uncalibrated warning(english checkpoint 温度被钳)。
2. 精确回捞能力:不适用(非检索系统)。但"可复现性"实测优于 Jev:8 次极差 0.0000。
3. 降级与回退路径:清晰。进程内库调用,异常直接抛,调用方沿用现有 jev_client 的 JevUnavailable → LLM 兜底 矩阵即可;摘掉即回现状,零主链侵入。
Laya vs Jev 总表
| 维度 | Jev(现用) | Laya(本地候选) | 胜者 |
|---|---|---|---|
| 部署形态 | 闭源 API(Vercel 网关) | Apache 2.0 权重,本地可跑 | Laya |
| 数据出境 | 跨洋外发 | 全部本地 | Laya |
| 单次成本 | ~$0.00002/次 | $0(仅电费) | Laya |
| 依赖风险 | Vercel 账号绑卡、网关限流 | 零外部依赖 | Laya |
| 可复现性 | 极差 0.010 级 | 极差 0.0000 | Laya |
| 去重精度 | 6/7 | 5/7(最好配置) | Jev |
| 分诊方向 | 0.12 正确静默 | 0.979 错误打扰 | Jev |
| 中英文一致性 | 同一问题双语稳定 | 换语言就翻面 | Jev |
| 批量形态 | 可用(带绑校验) | 塌缩不可用 | Jev |
| 单次延迟(本机实测) | 466-824ms 跨洋 | 240-650ms 本地 | 平/略优 |
| 硬件要求 | 无 | CPU 可跑,GPU 才快 | Jev |
| 成熟度 | 生产验证三处 | 仓库 5 天大,135 个开放 issue | Jev |
建议清单
值得吸收(P0)
- 本地确定性 + 零依赖这两条属性本身:Laya 证明了"421M 编码器 + 三原语"在本机 CPU 上完全跑得动,且概率比特级可复现。这为我们的决策点提供了一条不依赖 Vercel 的降级路径。
- 旁路候选文档化:把
multilingual + 中文提问配置记为 Jev 的应急后备(若 Vercel 网关长期不可用),但明确标注"精度低于 Jev,仅作降级用"。
可选试点(P1,需先立项验证)
- 自微调路线:Laya 的真正卖点是"可微调",而官方 base checkpoint 在 zero-shot 上接近随机。若把我们的真实去重/分诊标注数据(7 对 + 20 对 + 历史累积)拿去微调,才可能超过 Jev。这是一条独立工程,不是一次替换。
不吸收(明确留痕)
- 不替换晨报语义去重主链(精度 -1 分且错在高置信方向)。
- 不替换 Wiki 治理分诊(方向相反,违背减少打扰的原始目标)。
- 不替换 Hindsight retain 预筛(中相似度区大量高置信误判,触碰不可逆动作)。
- 不引入 Laya 的 Router 自动路由(本机切语言需重载 checkpoint,反而增延迟)。
- 不采用其批量形态(已实测塌缩)。
- 不为它增加常驻 sidecar(无收益,且违背"不留无收益常驻"纪律)。
风险与边界
- 本次实测 7 对去重 + 20 对预筛样本量小,准确率差值(5/7 vs 6/7)单题敏感,不构成统计学结论,但方向和失效模式明确:错误集中于中相似度区且全为高置信,这类失效不会因样本扩大而消失。
- Laya 仓库创建仅 5 天、135 个开放 issue、52 个开放 PR,核心缺陷(校准泄漏、act_head 饱和、温度未重训)均未修复。信任其概率输出前必须自建校准。
- 本机无 GPU,所有延迟数字为 CPU 实测;若未来上 GPU,Laya 的延迟优势会显著放大。
- Laya 对中文属于 multilingual checkpoint 的覆盖范围(官方 51 语言实测中 zh-CN 0.620 / ECE 0.376),中文能力中等偏上但远非强项。
下一步
- 维持现状:Jev 继续承担三处生产决策,不因本轮评估改动任何主链。
- 归档本报告 + 保留
/data/laya-eval环境(模型 2.37GB + venv + 测试脚本),作为 Jev 长期不可用时的降级后备与后续微调实验基座。 - 如要推进替代,唯一可行路径是自建微调:先用现有 27 对真实标注跑一轮小样本微调对照(Kaggle 2xT4 约 4-5h),达标再谈接入;不达标及时止损。
附:环境与产物
- 环境:
/data/laya-eval/(venv、hf 模型缓存 2.37GB、clone 源码) - 测试脚本:
/data/laya-eval/run_laya_compare.py(T1-T6)、run_jev_recheck.py(Jev 当日复测) - 原始结果:
/data/laya-eval/results/laya_compare_20260923-133555.json、jev_recheck_20260923-133434.json、run_all.log