推理与部署工具
EdgeJev:在普通 CPU 上离线运行的本地类型化决策推理服务
yzfly/edgejev · 离线可用的本地类型化决策:4 核 CPU 单题 15.6ms。Local & offline Jev / System One inference on CPU — ONNX + INT8, no torch at runtime. 支持 laya / kev / PlayJev
ELI5:它是什么,解决什么问题
EdgeJev 把 laya、kev、NanoJev、PlayJev 等开源 Jev / System One 复现项目统一为「转换 → 量化 → 部署」的流程:导出 ONNX、做 INT8 量化,并起一个与官方 /v1/systemone 协议兼容的本地服务。它以 ONNX Runtime 在 CPU 上做离线推理,运行时只依赖 onnxruntime、tokenizers、numpy,不需要 torch、API key 或联网,数据不出本机;同时提供 build / serve / eval / bench / info 等 CLI 子命令和训练模块。
核心能力与快速开始
★ 21 · Python
- 能做什么
- 把开源 Jev / System One 复现后端(laya、kev、nanojev、playjev)统一成一条转换、量化、部署路径:从 checkpoint 导出 ONNX、可选 INT8 量化,并生成自包含的 model.onnx、tokenizer.json、edgejev.json 目录,可直接拷到内网机器离线运行。提供与官方 /v1/systemone 协议兼容的本地 HTTP 服务,官方 SDK 只需改 base_url 即可切换。决策原语支持 choice(多选)、score(打分)、noul(是否类判断),返回答案、概率与置信度。CLI 含 build(转换+量化+多形状自检)、serve、eval(AG News / emotion 指标)、bench(延迟)、info。另有 edgejev.train 训练模块,含严格恰当评分规则损失、ECE 可靠性分桶、硬/软标签数据统一,以及可被 build --backend laya 导出的模型结构。
- 适用场景
- 适合数据不能出内网或 air-gapped 环境下的类型化决策调用(如客服工单分流、情感强度打分、紧急程度判断),也适合希望省去每次决策网络往返的实时链路;官方 SDK 开发者可先用官方托管 API 写完代码,再切换到本地服务。另可用于把上游 Jev 复现权重做 ONNX/INT8 转换部署与精度—体积—延迟的横向评测,以及用自带训练模块在自有数据上做概率校准训练。
- 项目形态
- 可直接使用的工具
- 部署方式
- 以 Python 包形式通过 uv tool install / uv add / uvx 安装;build 阶段需要联网从 Hugging Face 拉权重并安装 edgejev[build](含 torch / transformers),转换完成后以自包含目录离线运行,本地服务用 `edgejev serve --model ./jev-int8 --port 8009` 启动,通过 TYPESAFE_BASE_URL 指向本地。文档给出 Linux / Windows x86(CPU,AVX512-VNNI / AVX2)、macOS Apple Silicon(CoreML,不支持算子回退 CPU)、Linux ARM(int8 走 SDOT)的平台说明,可用 --provider cpu 或 EDGEJEV_PROVIDER 强制 CPU。
- 主要依赖
- 运行时只需 onnxruntime、tokenizers、numpy,不装 torch;Python 3.9+。构建阶段需要 edgejev[build](torch / transformers / laya),playjev 后端需要 edgejev[vlm](torch / torchvision / pillow),训练需要 edgejev[train]。nanojev 后端 state 不能截断,超过 max_len 会直接报错。
- 使用限制
- 不同后端默认精度不同,量化对精度影响差异明显:kev 量化后 AG News 掉 6 点、emotion 从 44.0% 掉到 21.0%;nanojev 量化后对上游 logits 偏差从 0.029 涨到 0.89,60 条里 4 条 argmax 翻转,故仅 laya 默认 int8,其余默认 fp32。动态量化结果依赖 batch,自行批量推理需固定 batch=1 或使用 fp32。int8-static 当前不可用(精度掉到随机水平且慢约 4 倍)。QUInt8 在 x86 无选择理由(ARM SDOT 不适用该结论)。把嵌入表排除量化没有收益且体积从 324 MB 涨到 915 MB。fp16 在 x86 CPU 没有意义,且 fp16 pass 处理不了 dynamo 导出图的 _to_copy 节点。playjev 后端走 torch 而非 ONNX,因为混合线性注意力没有对应 ONNX 算子,且无上游数值可对拍。nanojev 发布的 checkpoint 只在四款游戏决策上训练过,不是通用分类器。
- 许可证
- NOASSERTION
- 最近推送
- 2026-09-21 19:47
资料检查:2026-10-12 07:00 · 卡片整理:2026-10-12 07:00
卡片由 AI 根据仓库资料整理,未进行安装或运行验证 · 本次更新未完成,保留上次成功内容
职业应用
程序员
在本地 CPU 上离线运行类型化决策推理服务,通过 edgejev build 将模型导出为 ONNX 并做 INT8 量化,再用 edgejev serve 启动与官方 /v1/systemone 协议兼容的本地服务,供程序在无网络、无 API key 的环境下调用决策接口。
查看内容依据
EdgeJev 把 laya、kev、NanoJev、PlayJev 等开源 Jev / System One 复现项目统一为「转换 → 量化 → 部署」的流程:导出 ONNX、做 INT8 量化,并起一个与官方 /v1/systemone 协议兼容的本地服务。
由 AI 根据来源材料整理,未进行安装或运行验证
讨论 0
登录后参与讨论,阅读资讯无需注册。
还没有评论,来分享第一个看法。