English · 简体中文 · 日本語
OneJev 是基于 [Qwen](https://huggingface.co/Qwen) 的多模态 System One 决策模型,一次前向传播即可为截图、照片、视频和文本上的带类型问题返回校准后的概率,提供 0.8B、4B、9B 和 27B 四种尺寸。
## 🔥 新闻
- 🔥 **2026-10-13** 我们发布了 [OneJev 1.5](https://huggingface.co/collections/OmniJev/onejev15),欢迎试用。
- **2026-09-28** 我们上线了在线 demo,👉 [点我试用](https://huggingface.co/spaces/BradNLP/OneJev)。
- **2026-09-27** 我们发布了 [OneJev](https://huggingface.co/collections/OmniJev/onejev) 和 [OneJev 数据集](https://huggingface.co/datasets/OmniJev/OneJev-Data)。
## Decision Index(公开部分)
## 其他评测
准确率(%)。OneJev 测试集是我们自己的留出集,其余为公开评测。
## 速度
## 快速开始
任选一种后端启动,再运行下面的 Python 示例。
### 选项 A:PyTorch
适用于 NVIDIA GPU,支持文本、图片和视频。
```bash
pip install "qev[torch] @ git+https://github.com/OmniJev/OneJev.git"
qev serve --model OmniJev/OneJev1.5-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 prithivMLmods/OneJev1.5-9B-GGUF:Q8_0 --port 8000
```
### 选项 C:Docker
仓库附带 Compose 栈,会自动检测硬件并启动一种后端。llama.cpp 配置首次启动时会下载 `prithivMLmods/OneJev1.5-9B-GGUF:Q8_0`;换尺寸或量化请在 `docker/.env` 中设置 `QEV_GGUF`。
```bash
cp docker/.env.example docker/.env # 受限/私有仓库请设置 HF_TOKEN
./docker/start.sh # 自动检测(Windows:.\docker\start.ps1)
./docker/start.sh logs # 跟踪日志
./docker/start.sh down # 停止所有 profile
```
用 `./docker/start.sh ` 强制指定后端(加 `--build` 重新构建)。所有配置都在 :8000 提供接口和 Playground 界面。Windows 上仅支持 `torch`(NVIDIA)和 `cpu`。
### 发起请求
两种后端都在 `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
```
## 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)
## 星标与下载量
## 引用
```bibtex
@misc{onejev2026,
title = {{OneJev}: A Multimodal System One Decision Model},
author = {{OmniJev Team}},
year = {2026},
howpublished = {\url{https://github.com/OmniJev/OneJev}}
}
```