【免费下载链接】layaRun Laya, the open-source Jev-compatible System-1 decision model, from Node.js / TypeScript via ONNX Runtime项目地址https://gitcode.com/gh_mirrors/laya/laya点击查看免费下载Layapackage.json 中的receptron/laya是一个开源的、与 Jev 兼容的System-1 决策模型给它一个状态工单、邮件、JSON 对象和若干类型化问题它在一次前向传播中返回每个问题的校准概率而不是生成文本。本文带你从 PyTorch 检查点出发用一行脚本把它导出为 ONNX 决策模型并验证与 Python 参考实现的精度对齐误差约1e-5最终在 Node.js / TypeScript 环境下无需 Python 即可推理。1️⃣ Laya 是什么不写文本只做决策Laya 由 ModernBERT-large 编码器 专用决策头组成英文检查点约 421M 参数回答三类问题问题类型含义返回choice从若干选项中选一个每个选项的概率score有序量尺上的期望等级等级分布 期望分数noul是/否陈述校准的 P(true)它的关键设计是运行时零 Python 依赖src/laya.ts 基于onnxruntime-node加载 ONNX 图所有推理都在 Node.js 进程内完成CPU 上 3 个问题的批量调用约 140 ms。2️⃣ 为什么需要自己导出 ONNX日常使用时Laya.load()会自动从 Hugging Face 下载现成的 ONNX 权重包fp32约 1.7 GB并缓存到~/.cache/receptron-laya。只有在两种情况下需要自己动手导出你要基于更新版本的 PyTorch 检查点构建模型包你在使用一个尚未发布的模型变体。仓库已内置完整工具链导出脚本 export/export_onnx.py模型包说明见 onnx/README.md。3️⃣ 导出三步走环境 → 权重 → 推理图以下命令与 README.md 中 Exporting the ONNX bundle yourself 一节完全一致。第一步准备 Python 虚拟环境cd export uv venv -p 3.12 .venv uv pip install -p .venv/bin/python torch transformers safetensors onnx onnxscript onnxruntime huggingface_hub第二步下载 PyTorch 检查点只拉取导出所需的文件权重、编码器、tokenizer、配置与参考实现代码.venv/bin/python -c from huggingface_hub import snapshot_download; snapshot_download(convaiinnovations/laya, local_dirmodel, allow_patterns[model.safetensors,encoder/*,tokenizer/*,rl_agent_config.json,rl_common.py,rl_agent_api.py])第三步运行导出脚本.venv/bin/python export_onnx.py model ../onnx脚本结束时会在终端打印**与 PyTorch 的最大 logit 差值≈1e-5**以及输出大小这就是精度对齐的体检报告。4️⃣ 脚本内部发生了什么理解 export_onnx.py 的四个动作你就理解了整个 ONNX 导出流程加载权重从rl_agent_config.json构建模型L24-L27用safetensors严格加载权重并切换到 eval 模式。动态形状导出用torch.onnx.exportopset 18、dynamoTrue把 batch、序列长、选项数都声明为动态维度L54-L62导出的图对任意批大小通用。附带 tokenizer 与校准参数复制tokenizer/目录并把max_len、head_max_len、按选项数分桶的 temperature 写入laya_config.jsonL64-L67——这些温度值是概率校准的关键缺了它输出概率会失真。精度对齐自检parity check见下一节。⚠️一个隐蔽的坑脚本注释特别指出grad必须保持启用L53——PyTorch 的nn.TransformerEncoderLayer只在no_grad下走融合fast path而那条路径不可导出。如果你在自定义脚本里包了torch.no_grad()再导出很可能会失败。导出的图有 5 个输入input_ids、attention_mask、marker_pos、marker_mask、qtype和 2 个输出未校准logits、act_probs接口定义见 onnx/README.md。5️⃣ 1e-5 精度对齐是怎么验证的导出的最后一步就是验证。脚本在 L69-L77 做了差分测试同一组样例张量分别跑PyTorch 参考实现和ONNX RuntimeCPU provider对两组输出逐元素求差打印max |dlogits|与max |dact|。结果约为1e-5含义是ONNX 图与 PyTorch 的浮点偏差在第 5 位小数才出现。而 Laya 的最终输出概率按四位小数舍入见 src/laya.ts 的round4所以精度对齐误差远小于输出舍入粒度——对业务来说两者完全等价。6️⃣ 在 Node.js 中加载并复核把导出目录指向本地包即可跳过下载直接使用const laya await Laya.load({ modelDir: ./onnx });仓库提供了两层现成验证数值一致性测试test/test_model.ts 用固定的退款工单样例断言概率、分数、token 数与 Python 参考实现的输出逐位一致如billing: 0.9415、urgency: 1.3886、churn_risk: 0.0988。本地有模型包时运行LAYA_MODEL_DIR./onnx yarn test即可执行。可运行示例examples/basic.ts 演示完整的systemOne调用与耗时统计运行LAYA_MODEL_DIR./onnx yarn example。7️⃣ 常见问题速查问题说明选项报 options do not fit 错误每题选项须装进head_max_len192 tokens官方建议单个 choice 题少于 20 个选项输入被截断state 在问题头之后截断到max_len英文检查点为 512 tokens参数见 onnx/laya_config.json内存不够模型加载后约需 2 GB RAM每批问题另加几百 MBJS 与 Python 输出有微小差异JSON 序列化需与 Python 的json.dumps(ensure_asciiFalse)对齐src/sequence.ts 的pyJsonDumps已处理相关用例在 test/test_sequence.ts8️⃣ 相关路径索引导出脚本export/export_onnx.py模型包说明onnx/README.md校准参数onnx/laya_config.json运行时实现src/laya.ts、src/sequence.ts一致性测试test/test_model.ts调用示例examples/basic.ts总结整条链路只有三行核心命令——建环境、下权重、跑脚本。脚本内置的 parity check 会当场告诉你精度对齐是否达标1e-5 量级之后用modelDir指向本地包配合yarn test即可在纯 Node.js 环境中放心使用这份从 PyTorch 迁移而来的 Laya 决策模型。赞分享【免费下载链接】layaRun Laya, the open-source Jev-compatible System-1 decision model, from Node.js / TypeScript via ONNX Runtime项目地址https://gitcode.com/gh_mirrors/laya/laya点击查看免费下载相关推荐从PyTorch到MLXMOSS-Image-Base-bf16的Swift移植实战与1e-6级精度对齐验证从PyTorch到MLXMOSS Image Base bf16的Swift移植实战与1e 6级精度对齐验证 MOSS Image Base bf16 是一个人工智能大模型基础模型媒体生成本地部署ChongqingAscend/e5-base-unsupervised模型架构分析12层BERT如何实现高效文本表示ChongqingAscend/e5 base unsupervised模型架构分析12层BERT如何实现高效文本表示 ChongqingAscend/e5从PyTorch到MLXMOSS-Image-SFT-bf16的Swift移植如何做到1e-6级精度对齐从PyTorch到MLXMOSS Image SFT bf16的Swift移植如何做到1e 6级精度对齐 MOSS Image SFT bf16 是一个面向人工智能大模型媒体生成本地部署上一篇终极Lovelace Auto Entities教程如何自动填充智能家居控制界面的实体列表下一篇libsimdpp 开源项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考