开源Laya模型:毫秒级反射决策,比Jev快6倍

开发者开源Laya模型,实现毫秒级反射决策。其响应仅需32.8毫秒,比商业产品Jev快6到8倍,支持百种语言,通过概率输出杜绝幻觉,为即时精准决策提供开放方案。

人工智能领域正涌现出一类新型架构:非自回归(Non-Autoregressive)模型。与生成文本的大语言模型不同,这类模型专注于即时、精准的反射式决策。

近期,由 OpenAI ChatGPT 联合发明人 Diogo Almeida 创立的资金充足实验室 TypeSafe AI 推出了名为 Jev 的商业产品。Jev 采用 RLCD(Reinforcement Learning for Calibrated Decisions,用于校准决策的强化学习)技术,在垂直销售对话中输出逐次转换轨迹,每百万输入代币收费 0.042 美元,典型响应时间约为 150 毫秒。然而,Jev 并未公开技术文档、模型权重或训练数据集。

Laya响应时间仅32.8毫秒

针对这一现状,开发者 Nandha Kishor M 发布了完全开源的系统 Laya。Laya 基于该团队此前在 arXiv (2503.23303, 2510.01237) 发表的研究成果构建,旨在提供一个开放、横向的系统 1 级决策模型家族。由于建立在双向编码器之上,Laya 在单个 GPU 上运行仅需 32.8 毫秒(批量处理时 7.2 毫秒/问题),速度比 Jev 快 6 到 8 倍,并支持 100 多种语言。


核心机制:系统 1 与系统 2 的分野

现代 AI 管道存在显著瓶颈:使用生成式 LLM 处理简单的反射性决策任务。例如,当客户支持工单到达、电子邮件进入收件箱或用户提交 API 提示时,系统需要判断:

  • 工单应分配至哪个部门?
  • 邮件是钓鱼攻击还是垃圾邮件?
  • 提示词是否包含越狱或注入指令?
  • 问题的紧迫程度等级(0-3)是多少?
  • 查询需要代码执行还是简单的事实答案?

调用 8B、70B 甚至前沿生成式 LLM 来完成此类任务效率低下。用户需等待 500 至 2,000 毫秒以获取流式 Token,承担高昂推理成本,并编写正则表达式从自由文本中提取标签。此外,LLM 常表现出“虚假自信”,其输出的置信度分数缺乏数学校准基础。

Laya 模拟人类大脑的“系统 1”思维模式:在标准硬件上实现 30 至 35 毫秒内的即时反射决策,提供诚实且精准的概率输出。


三种决策原语

Laya 通过单次前向传递评估任何状态(原始文本、电子邮件、工单或 JSON 文档),依赖以下三种基本原语:

  1. 选择(Choice):从标准词典中选择选项。返回所选键、所有选项的概率分布以及校准后的信任分数。
  2. 评分(Score):将状态置于有序标尺上(如级别 0, 1, 2...)。返回预期级别、对标题等级的分布及信心值。
  3. Noul(布尔判定):针对直接的是/否问题,返回校准概率 P(真)(范围 0.0 到 1.0,P(假) = 1 - P(真))。

由于输出空间纯粹由概率和数字组成,模型不生成文本,因此物理上杜绝了幻觉、模式违规或错误 JSON 的产生。


检查点与捆绑架构

单一模型难以覆盖所有任务和语言。Laya 在 Hugging Face 的单个存储中心下合并发布了三个专用检查点:

检查点 骨干编码器 参数量 上下文长度 主要优势
convaiinnovations/laya (English) ModernBERT-large 421M 512 英语文本分类、防护栏、电子邮件分类
convaiinnovations/laya (Multilingual) mmBERT-base (256k vocab) 322M 1024 (最多可达 8k) 支持 100+ 种语言,速度快 2.2 倍,跨语言 NLI
convaiinnovations/laya (Typed-Decisions) ModernBERT-large 421M 1024 代理可观察性、客户服务、发票处理、安全警报 (准确率 0.766)

选择性下载子文件

为避免用户管理多个仓库或下载 2.5GB 的组合权重,主仓库 convaiinnovations/laya 捆绑了所有三个模型。利用 Hugging Face 的 allow_patterns 功能,SDK 仅下载特定的请求子文件:

# Downloads English model (~808 MB)
agent_en = laya.load("convaiinnovations/laya")

# Downloads ONLY the multilingual subfolder (~647 MB), not the entire 2.5 GB bundle
agent_ml = laya.load("convaiinnovations/laya", subfolder="multilingual")

多脚本现实下的路由机制

在 Massive 基准测试(51 种语言,20 个选项,随机基线=0.050)中发现,英语模型在处理非拉丁字母时表现极差。ModernBERT-large 的 50,000 词元英文 BPE 词表在非拉丁文字上失效:

  • 高棉语:准确率 0.000,但报告置信度高达 95%。
  • 亚美尼亚语:准确率 0.050(等同于随机猜测),置信度 0.885。
  • 希伯来语:准确率 0.060,可靠性 0.964。
  • 孟加拉语:准确率 0.080,置信度 0.945。
  • 印地语:准确率 0.100,可信度 0.941。

关键教训在于:当模型无法读取输入脚本时,其置信度依然很高。在 51 种语言中,英语检查点的平均可靠性从未低于 0.885,无论其准确率是 82% 还是 0%。因此,信任门控无法保护系统,必须在向前传递之前决定使用哪个模型。

微毫秒纯 Python 路由

Laya 内置路由器,通过检查输入文本的 Unicode 脚本(涵盖天城文、CJK 汉字、西里尔、阿拉伯、希伯来、泰米尔、泰文等 22 种字母)并分析拉丁语停用词分布来实现路由:

  • 标准英语文本检测开销:0.09 毫秒。
  • 天城文/印度文字检测开销:0.54 毫秒。
  • 大型 200 行嵌套 JSON 文档检测开销:0.73 毫秒。

相比 33ms 的前向传递,路由开销可忽略不计(<2%)。通过 Router(preload=True),所需模型保留在 VRAM/RAM 中,消除了流量在语言间交替时 7 到 10 秒的冷交换惩罚。

from laya import Router

# Preload checkpoints into memory for instant sub-35ms routing
router = Router(preload=True)

# English -> automatically routed to ModernBERT-large
res_en = router.predict({"body": "I was charged twice, please refund."}, questions)

# Hindi -> automatically routed to mmBERT-base (100+ languages)
res_hi = router.predict({"body": "मुझसे दो बार शुल्क लिया गया, कृपया पैसे वापस करें।"}, questions)

# Explicit override when you already know the domain
res_spec = router.predict(state, questions, model="typed-decisions")

性能对比:Laya vs TypeSafe Jev

基于公开数据集和标准基准,Laya 与 TypeSafe Jev 进行了直接对比。Laya 的数据为实测结果,Jev 的数据源自第三方独立研究(AbdelStark, nibzard)及 TypeSafe AI 官方发布。

基准/指标 TypeSafe Jev 1.13.0 Laya (Routed) 优势 / Delta
typed-decisions (2,000 decisions) 0.727 0.766 +3.9% (超过 0.735 教师上限)
AG News (4 labels) 0.910 0.950 准确率高出 +4.0%
DAIR Emotion (6 labels) 0.480 (Brier 0.846) 0.595 高出 +11.5% (Jev 有 16% 零概率)
校准误差 (ECE) 0.246 0.081 概率校准确良度提升 3 倍
延迟 P50 (1 Question) 236 – 276 ms 32.8 ms 执行速度快 7.8 倍
延迟 P50 (10 Questions Batched) ~1,500 ms (串行) 72.3 ms (7.2 ms/q) 批量调用速度快 20 倍
可用语言数 (> 3x random) 无公开基准 51 种语言中的 45 种 全球语言覆盖
每百万 Token 成本 $0.042 (计量 API) $0.00 (自托管) 100% 免费 Apache 2.0
模型权重 & 代码 封闭专有 API 开源 safetensors 支持气隙隔离 & 本地部署

真实世界应用工作流

在评估的 9 个企业工作流中,Laya 展示了生产就绪的决策质量:

  • 电子邮件垃圾过滤 (Enron):准确率 0.993,F1 0.993,ECE 0.013。
  • 钓鱼检测:准确率 0.980,F1 0.979,ECE 0.012。
  • LLM 防护栏与越狱检测 (held-out ToxicChat):准确率 0.755 – 0.762。在 50% 选择性覆盖率下,准确率达到 0.931
  • RAG 段落相关性过滤:单次前向传递准确率 0.657
  • 支持工单队列路由 (10-way):准确率 0.522

局限性说明

Laya 团队明确指出了当前架构的限制:

  1. 选项过多导致性能下降:在 Banking77(77 个标签)压力测试中,Laya 得分为 0.425,而 Jev 为 0.870。这是因为选项共享 192-256 token 的 head_max_len 预算,在 77 个选项下每个候选项仅剩约 3-4 个 token。建议:保持选择模式在 20 个选项以内,或使用两步粗到细的层级结构。
  2. 零样本 vs 微调:开箱即用的基础模型在 typed-decisions 基准上的得分约为 0.35(接近随机)。0.766 的高分是通过在基准的训练集上进行微调获得的。应将 Laya 视为快速的基础模型进行专业化定制,而非全知的零样本预言机。
  3. 温度校准:基础权重附带原始温度 logits。在领域分布上为每种问题类型拟合一个标量温度,可将期望校准误差从 0.466 降至 0.081。

快速入门

安装命令:

pip install laya>=0.3.3

以下是运行多模式决策并自动语言路由的完整示例:

import laya
from laya import Router

# Initialize router with preloading (avoids swap delay)
router = Router(preload=True)

# Define complex state
ticket = {
    "ticket_id": "TCK-8821",
    "customer": "enterprise_user",
    "subject": "System downtime and billing dispute",
    "body": "Our production API has been failing since 6 AM. We lost critical transactions. We demand an immediate SLA refund."
}

# Define multiple questions of different primitives
questions = {
    "queue": {
        "type": "choice",
        "instructions": "Which engineering queue owns this ticket?",
        "criteria": {
            "infrastructure": "server outages, network downtime, database failures",
            "billing": "refunds, SLA credits, invoice disputes",
            "security": "breaches, vulnerability reports",
            "support": "general customer inquiries"
        }
    },
    "urgency": {
        "type": "score",
        "instructions": "How urgent is this ticket?",
        "criteria": ["low priority", "medium", "high priority", "critical blocker"]
    },
    "churn_risk": {
        "type": "noul",
        "instructions": "Does the customer threaten to cancel or express severe churn intent?"
    }
}

# Single forward pass: evaluates all questions simultaneously
res = router.predict(ticket, questions)

print("Routing Decision :", res["routing"]["model"])
# -> english

print("Assigned Queue   :", res["answers"]["queue"]["choice"])
# -> infrastructure (confidence: 0.96)

print("Urgency Score    :", res["answers"]["urgency"]["score"])
# -> 2.87 / 3.0

print("Churn Risk

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读