OpenJev 将本地决策模型推理引入浏览器
OpenJev 实现设备端 Jev 风格的决策推理
OpenJev 是一个网页演示程序,它在浏览器中运行本地语言模型,并允许你通过读取原始 logits 或提示模型输出 JSON 分布来查询选项概率。该演示无需后端,无需排队,并将所有权重和输入保留在客户端。
直接读取 logit 与 JSON 生成对比
直接读取会读取模型针对所提供选项的选择 logits,对其进行归一化,并返回概率向量,无需任何 token 解码。JSON 生成则要求模型将相同的分布写为 JSON 对象,并逐个 token 进行流式传输。这两种方法在同一个已加载的模型上顺序运行,因此它们不会争抢 GPU 资源。
模型目录与性能数据
| 模型 | 大小 | Authored % | Perturbed % | TypeSafe % |
|---|---|---|---|---|
| Qwen3 0.6B | 639 MB | 44.0 | 52.8 | 40.7 |
| MiniCPM5 2B (默认) | 1.56 GB | 68.6 | 69.3 | 63.7 |
| Qwen3.5 4B | 3.01 GB | 81.3 | 76.6 | 84.5 |
| Published Jev (托管) | – | – | – | 88.3 |
权重从 Hugging Face 获取并缓存在浏览器中。首次加载可能需要几分钟,尤其是对于 4 B 模型。
数据含义说明
- 仅条件概率 – 直接分数是对显示选项的 softmax 结果;它们不是经过校准的置信度分数,且忽略了模型可能偏好的其他替代方案。
- 模型层级权衡 – 最小的模型可以在手机上运行,但会牺牲准确性。MiniCPM5 是桌面端的默认选择;4 B 模型需要更多的内存,可能无法在低端设备上运行。
- 实际耗时 – 设置、预热、提示准备、直接执行、第一个生成的 token 以及完整生成过程均使用
performance.now()进行测量。未使用任何预设基准测试。 - 量化权重 – 该演示通过
wllama使用固定的 GGUF 构建;量化可能会影响速度和质量。
社区反应与常见问题
“Authored 与 Perturbed 有什么区别?” – 该表格区分了原始 (authored) 数据集上的分数与用于鲁棒性测试的扰动 (perturbed) 版本上的分数。
“这和 Jev 的专有服务是一样的吗?” – OpenJev 复现了 Jev 的接口模式(运行时定义的语义决策),但运行在开放权重模型上;它不使用 Jev 的闭源模型或训练数据。
“为什么在手机上感觉很慢?” – 即使是 0.6 B 的模型在移动硬件上也可能需要半秒到几秒的时间;该演示比远程 API 调用更快,但仍受限于本地计算能力和 WebGPU 的可用性。
“我可以在没有 Hugging Face 账户的情况下运行它吗?” – 该演示直接从 Hugging Face 下载权重。防火墙后的用户可能需要镜像或手动下载。
“Jev 是商标吗?” – 一些评论者指出,“Jev”是一个注册商标服务,OpenJev 的命名可能会引起混淆。
实现的技术见解
OpenJev 利用 SGLang(或类似的推理后端)来缓存共享的提示前缀,然后为每个选项发出单独的请求。工作流程大致如下:
- 发送一个包含共享状态的丢弃请求。
- 依赖推理引擎的前缀缓存来避免重新计算共享部分。
- 为每个选项发出一个请求,每个请求都重复共享前缀。
- 从完整词汇表中提取一小部分特殊答案 token 的分数。
- 将这些分数转换为归一化概率。
一种更优雅的方法——分叉推理引擎以运行一次共享提示,针对每个选项克隆内部状态,并仅对相关 token 进行评分——已在 eider 等自定义引擎中得到演示,并有望出现在 llama.cpp、vLLM 及其他运行时的后续补丁中。
局限性与待解决问题
- 无 GPU 适配器 – 一些浏览器报告存在 WebGPU,但缺乏可访问的 GPU 适配器,导致演示回退到 CPU。
- 部分下载支持 – 中断模型下载会丢弃部分缓存的文件;支持断点续传将提高可用性。
- 法律模糊性 – 使用“Jev”名称可能侵犯了原始服务的商标权,且开源实现并未复刻 Jev 的专有模型。
- 基准测试透明度 – 虽然演示报告了原始耗时,但它没有提供针对闭源 Jev 服务的标准化延迟或准确性基准测试。
总结
OpenJev 展示了 Jev 风格的决策推理可以完全在浏览器中通过开放权重 LLM 复现,同时提供原始 logit 访问和结构化的 JSON 输出。该项目突显了模型大小、速度和准确性之间的权衡,并作为未来快速、无 token 决策 API 开源实现的验证性原型。
Sources
- HNOpenJev
相关
- Dispatch
- Dispatch
- 项目
- 项目
- Dispatch