Laya:一个开源的系统1决策引擎

Laya 是一个非自回归决策引擎,旨在用简单的、结构化的反射决策替代生成式大语言模型(LLM)。通过使用双向编码器而非自回归的标记生成,Laya 在单个 GPU 上大约只需 32.8 毫秒即可对结构化模式输出校准的概率预测,相比生成式替代方案显著更快且成本更低。

AI 决策的系统1方法

现代 AI 流水线常常面临瓶颈:使用大型生成式 LLM(系统2)来处理仅需反射式响应(系统1)的任务。诸如工单路由、垃圾邮件检测和越狱识别等任务并不需要文本生成,而只需要特定的标签或概率。

使用生成式 LLM 来完成这些任务会引入多种低效问题:

  • 延迟:需等待标记流式输出(500ms 到 2,000ms)。
  • 成本:80 亿参数以上的模型推理成本高昂。
  • 可靠性:需要使用正则表达式或 JSON 解析器从自由文本中提取标签。
  • 校准性:LLM 常常会虚构置信度分数(例如输出 "confidence: 0.95",但缺乏数学依据)。

Laya 通过单次前向传播提供即时且校准的概率,彻底消除了幻觉或格式错误的 JSON 输出的可能性。

决策原语与架构

Laya 使用三种核心原语,对任意状态(文本、邮件或 JSON)进行类型化问题的评估:

  1. Choice:从一组标准字典中选择一个选项,返回所选键、概率分布以及校准后的置信度分数。
  2. Score:将状态置于有序量表上(例如 0 到 3),返回预期等级和分布。
  3. Noul:一个布尔问题,返回校准后的概率 $P(\text{true})$,范围为 0.0 到 1.0。

模型检查点

Laya 通过 Hugging Face 上的捆绑仓库分发,提供三个专用检查点:

检查点 主干编码器 参数量 上下文长度 主要优势
laya ModernBERT-large 421M 512 英文分类、护栏机制、邮件分类
laya-multilingual mmBERT-base 322M 1024 支持 100+ 种语言、跨语言自然语言推理
laya-typed-decisions ModernBERT-large 421M 1024 代理可观测性、发票处理、安全警报

多语言路由与脚本检测

Laya 开发过程中的一个关键发现是:以英语为中心的模型即使无法读取输入脚本(例如在高棉文文本上报告 95% 置信度,但准确率为 0%),仍会报告高置信度。由于对不支持脚本的置信度门控不可靠,Laya 实现了一个亚毫秒级的纯 Python Router

该路由器通过检查 22 种字母表的 Unicode 脚本,并分析拉丁语停用词分布,可在前向传播之前将流量路由到合适的模型。检测开销可忽略不计,通常在 0.09ms(英文)到 0.73ms(大型 JSON 文档)之间。

性能对比:Laya 与 TypeSafe Jev

Laya 被定位为 TypeSafe Jev 的开源替代方案。基准测试表明其在速度和成本方面具有显著优势,尽管在零样本能力上存在一些权衡。

指标 TypeSafe Jev 1.13.0 Laya(已路由) 差异
延迟 P50(1 个问题) 236–276 ms 32.8 ms 快 7.8 倍
延迟 P50(10 个问题批量) ~1,500 ms 72.3 ms 快 20 倍
校准误差(ECE) 0.246 0.081 校准性提升 3 倍
每百万 token 成本 $0.042 $0.00 免费(Apache 2.0)
权重与代码 封闭 API 开源 可自托管

工程限制与要求

Laya 是一个用于专业化的基础模型,而非无所不知的零样本预言机。用户应了解以下限制:

  • 微调必要性:开箱即用的基础模型在特定基准测试(如 typed-decisions)上得分可能接近随机(~0.35)。高准确率(0.766)需通过在训练集上微调实现。
  • 选择预算:当选择模式超过 20 个选项时,性能会因头部长度的 token 预算限制而下降。
  • 上下文窗口:检查点限制在 512–1024 个 token,远小于 Jev 报告的 32k 上下文窗口。
  • 温度校准:为将预期校准误差从 0.466 降低至 0.081,应为每种问题类型拟合一个标量温度以匹配领域分布。

社区见解与反方观点

技术用户之间的讨论凸显了“模型”与“产品”之间的分歧。虽然 Laya 提供了权重和架构,但批评者认为 Jev 的价值在于其零样本性能以及通过 API 实现的部署便捷性。

"Jev 成功的关键在于它无需微调即可工作……能够在几分钟内解决任意分类问题,而不是需要一周时间,这意义重大。"

其他用户指出,Laya 的方法本质上是回归到‘传统机器学习’,即利用 BERT 风格架构并结合更新的训练方法(RLCD)来比生成式 LLM 更高效地解决分类任务。

快速入门实现

Laya 可通过 pip 安装(pip install laya>=0.3.3),并配合 Router 处理多模式决策:

from laya import Router

router = Router(preload=True)

questions = {
    "queue": {
        "type": "choice",
        "instructions": "哪个工程队负责这个工单?",
        "criteria": {
            "infrastructure": "服务器宕机、网络中断",
            "billing": "退款、SLA 信用"
        }
    },
    "urgency": {
        "type": "score",
        "instructions": "这个工单有多紧急?",
        "criteria": ["低", "中", "高", "严重"]
    }
}

res = router.predict({"body": "API 已宕机!"}, questions)

Sources

相关