English · 简体中文 · 日本語
OneJev 是一个多模态 System One 决策模型,一次前向传播即可为截图、照片、视频和文本上的带类型问题返回校准后的概率,提供 0.8B、4B、9B 和 27B 四种尺寸。
## 结果
准确率(%)。OneJev 测试集未参与 OneJev 训练。Jev 1.13 使用公开的纯文本评测分数;Jev-Omni 和 Qwen3.8-27B 思考模式由我们评测。
## 快速开始
任选一种后端启动,再运行下面的 Python 示例。
### 选项 A:PyTorch
适用于 NVIDIA GPU,支持文本、图片和视频。
```bash
pip install "qev[torch] @ git+https://github.com/OmniJev/OneJev.git"
qev serve --model OmniJev/OneJev-4B --port 8000
```
### 选项 B:llama.cpp
使用 GGUF 模型,支持文本和图片;视频使用 PyTorch。先安装 [llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/docs/install.md)(macOS 可运行 `brew install llama.cpp`)。
```bash
pip install git+https://github.com/OmniJev/OneJev.git
qev serve --gguf mradermacher/OneJev-4B-GGUF:Q8_0 --port 8000
```
### 发起请求
两种后端都在 `http://localhost:8000` 提供相同接口。在另一个终端中,用你自己的 `screenshot.png` 运行示例:
```python
from qev import Client, Choice, Noul, Score
from qev.media import data_uri
r = Client("http://localhost:8000").system_one(
state={"任务": "支付 ACME 的待付款发票", "屏幕": ""},
media=[{"type": "image", "data": data_uri("screenshot.png")}],
questions={
"完成状态": Noul("发票已付款"),
"下一步": Choice("智能体下一步应该做什么?",
{"点击": "点击界面元素", "输入": "输入文字", "滚动": "滚动页面", "停止": "停止操作"}),
"任务进度": Score("任务完成到哪一步了?", ["尚未开始", "完成一半", "即将完成", "已完成"]),
},
)
r.answers["完成状态"].noul # “是”的概率
r.answers["下一步"].probabilities # 每个选项一个概率
r.answers["任务进度"].score # 期望等级
```
接口兼容 TypeSafe System One。更多示例:[视频](../examples/video.py)、[curl](../examples/curl.sh)、[官方 TypeSafe SDK](../examples/official_sdk.py)。
## 训练
```bash
git clone https://github.com/OmniJev/OneJev.git
cd OneJev
pip install -e ".[train]"
# A、B 二选一,下面默认启用 A。
# A. Demo:100 条样本,含图片(23 MB)
hf download OmniJev/OneJev-Data sample/sample-100.parquet --repo-type dataset --local-dir data/onejev
python -m train.unpack data/onejev --sample
# B. 全量数据:94,707 条(17.7 GB)。使用 B 时,取消下面两行的注释,并跳过 A。
# hf download OmniJev/OneJev-Data --repo-type dataset --include "data/*.parquet" --local-dir data/onejev
# python -m train.unpack data/onejev
```
两种方式都会生成 `data/onejev/train.jsonl`,并将图片和视频帧解包到 `data/onejev/media/`。
[OneJev-Data](https://huggingface.co/datasets/OmniJev/OneJev-Data) 公开了原始 99,193 道训练题中的 94,707 道,其余来源不允许再分发。
### 微调
四个模型分别基于 Qwen3.5-0.8B、Qwen3.5-4B、Qwen3.5-9B 和 Qwen3.8-27B,冻结视觉塔,微调一轮。配置使用 `5e-6` 学习率、16,384 token 长度上限,对答案概率计算交叉熵和 Brier 损失。在四张 GPU 上训练 4B 模型:
```bash
torchrun --nproc-per-node 4 -m train.sft --config train/configs/onejev_4b_full.yaml
```
配置:[0.8B](../train/configs/onejev_08b_full.yaml) · [4B](../train/configs/onejev_4b_full.yaml) · [9B](../train/configs/onejev_9b_full.yaml) · [27B](../train/configs/onejev_27b_full.yaml)。将 `--nproc-per-node` 设为 GPU 数量;9B 和 27B 配置启用 FSDP,分片存储模型与优化器状态。使用自有数据时,修改配置中的 `train` 和 `media_root`。
4B 的最终模型保存在 `train/runs/onejev_4b/final`,可直接启动:
```bash
qev serve --model train/runs/onejev_4b/final --port 8000
```
## 引用
```bibtex
@misc{onejev2026,
title = {{OneJev}: A Multimodal System One Decision Model},
author = {{OmniJev Team}},
year = {2026},
howpublished = {\url{https://github.com/OmniJev/OneJev}}
}
```
## Friendly Links
- [LINUX DO](https://linux.do)
- [Jev](https://typesafe.ai)
- [Awesome JEV](https://github.com/OmniJev/awesome-jev-gallery)
- [Awesome JEV Website](https://omnijev.github.io/awesome-jev-gallery/)
- [PlayJev](https://github.com/OmniJev/PlayJev)
## 许可证
[Apache 2.0](../LICENSE)