上游
Laya Python / PyTorch
上游参考实现和 Router。适合作为 canonical API、checkpoint、微调和跨平台推理的起点。
参考实现Python 服务CUDA / CPU微调
快速开始
pip install laya环境要求
- Python 3.10 或更高版本。这个下限来自依赖:
huggingface_hub1.x、transformers5.x 和torch2.14。 - PyTorch 支持 CPU、NVIDIA CUDA、Apple MPS 和 Intel XPU。如果需要纯 CPU 或特定 CUDA 版本,先装好对应的 PyTorch。
- 磁盘:英文 checkpoint 约 808 MB,多语言 checkpoint 约 647 MB,只下载你用到的那个。
建议装在虚拟环境里,并在不加载模型的情况下先验证安装:
python3 -m venv .venv
.venv/bin/python -m pip install laya
.venv/bin/python -I -c "import laya; print(laya.__version__)"
两种调用方式
Router(推荐):在一毫秒内识别每个 state 的文字和语言,自动交给合适的 checkpoint。中文会被送到多语言 checkpoint。
from laya import Router
router = Router(preload=True) # checkpoint 常驻内存
result = router.predict(state, questions)
print(result["routing"]) # 由哪个 checkpoint 回答、为什么
单个 checkpoint:适合专用流水线:
import laya
agent = laya.load("convaiinnovations/laya") # 英文
agent_ml = laya.load("convaiinnovations/laya", subfolder="multilingual") # 100+ 语言
result = agent.predict(state, questions)
实测速度(上游,Tesla T4)
| 每次调用的问题数 | laya | laya-multilingual |
|---|---|---|
| 1 | 39.5 ms | 32.8 ms |
| 10 | 158.6 ms | 72.3 ms |
| 50 | 771 ms | 337 ms |
在 CPU 上使用 Router(preload=True) 时,上游报告每次请求 193–464 ms。
生产环境要注意的设置
- 服务端要预加载。
Router()默认常驻两个 checkpoint;max_loaded=1会在每次语言切换时重新加载(CPU 上中位数 7.4 秒)。 - 能批量就批量。
agent.predict_batch(states, questions)共享前向计算。上游在 GPU 上测得每个决策从约 10 ms 降到约 1 ms;CPU 上单纯加大 batch 未必更快,sort_by_length=True可以减少 padding。 - 可选加速:
laya.load(..., fast=True)(TileLang GPU 路径)、Agent(compile=True)(torch.compile),以及基于 ONNX Runtime 的ONNXAgent。 - 基于 schema 的调用:
agent.decide(state, schema=...)接受 JSON schema 或 pydantic 模型(0.3.12 起)。 - 钩子(hooks): 在
Agent、Router、ONNXAgent上做审计日志、敏感信息脱敏、缓存和监控。 - 如果
laya.load()卡住,可能是装了 TensorFlow,用USE_TF=0运行。
这个运行时适合谁
它是参考实现:本站其他运行时都是对它的移植或封装,而且微调只能在这里做。除非你明确需要 Node.js、MLX 或独立的 HTTP 服务,否则从这里开始。想通过 HTTP 调用,见 自托管 Laya。
来源:NandhaKishorM/laya · Apache 2.0。
最后对照项目 README 核实:2026 年 9 月 24 日。