JEV-27B-VL多模态决策模型登顶0.3视觉榜单

AutoTrust AI Lab开源了一款基于Qwen3.8-27B的多模态决策模型JEV-27B-VL。这款模型创新性融合了System 1快速决策与System 2深度推理能力,在最新的Jev Decision Index 0.3视觉榜单中,从20个参赛视觉决策模型中拿下第一名的成绩。
System 1可以在单次前向传播中完成yes/no判断、2到256个选项选择以及0到5的评分,还能输出校准后的概率;System 2则保留了Qwen3.8-27B原生的通用多模态理解与推理能力。值得一提的是,JEV-27B-VL的决策头仅通过纯文本训练,就可以实现零样本迁移到图像任务中。
截至2026年10月7日,该模型在13695条评测数据上取得了77.8%的准确率,支持最长256K tokens的上下文长度,采用Apache 2.0协议开源。
多场景落地效果实测
机械臂抓取与放置
每一次操作都由System 1完成决策,模型接收顶部相机的画面输入,分别判断目标物体相对于机械臂夹爪的左右、上下位置,再据此调整机械臂的移动路径。在20个随机搭建的测试场景中,模型整体完成率达到75%,是JEV系列中的最佳表现。所有成功抓取的方块都被准确放入托盘,出现的失败案例均为抓取位置偏离目标3.0到3.7厘米,单次决策耗时约240毫秒。
计算机自动化操作
浏览器会为可点击的元素添加编号标注,System 1根据页面截图选择下一步需要点击的元素,或是判断当前任务已经完成。在商店、设置和邮件三类共60个随机多步任务中,结合编号框与元素文本信息时,模型的任务完成率达到95%。每个任务包含3到7次点击操作,单次点击的决策时间约0.26秒。对于没有附带文本的颜色样本,模型的点击判断完全依赖页面截图完成。
零样本短视频推荐
模型仅依靠用户最近观看的5条视频封面和1条候选视频的封面,就能在一次前向传播中计算出用户观看该候选视频的概率,全程不需要依赖用户交互日志、物品向量或是额外的训练数据。研究团队在公开的MicroLens-100k数据集上,对200名用户进行了离线评测:将每位用户实际接下来会观看的视频,隐藏在另外19位用户在±3天内观看过的视频中,模拟真实信息流的候选内容池,让各模型对这20个候选视频进行排序。仅使用视频封面信息的情况下,该模型取得了0.727的AUC值,与使用59045名用户行为数据训练的物品协同过滤方法基本持平,Top-5命中率则达到59%,优于对比方法的表现。
草图识别任务
System 1会根据用户的绘制过程逐笔判断当前草图属于16个候选类别中的哪一个。在320幅真实玩家的手绘草图测试中,当用户完成全部绘制后,模型的识别准确率达到88%;即使只绘制了60%的笔画,准确率仍有62%,远高于随机猜测的水平,单次判断耗时约270毫秒。
智能体任务评审
在ACL 2026收录的Plan-RewardBench基准上,模型需要从两条完整的工具型智能体执行轨迹中选出更优的一条,任务覆盖智能体规划、错误恢复、安全拒答和工具无关性等多个维度。JEV-27B-VL的System 1模块在1171对样本上的宏平均准确率达到73.2%。
在AgentRewardBench的1302条专家标注的智能体轨迹上,模型可以根据用户目标、智能体的具体动作、最终回复和最终运行截图,零样本判断任务是否真正完成。在每个评判器自身的召回率水平下,该模型的精确率均高于官方排行榜上的所有同类评判器。当阈值设为0.5时,模型的精确率为78.4%,召回率为70.2%,AUROC值达到0.91,全部判断任务在单张GPU上仅需约4分钟即可完成。
多模态评审任务
在CVPR 2025收录的VL-RewardBench基准的1247对人工核验回答样本中,模型根据图像、问题和两个候选答案,零样本判断哪个答案更优,总体准确率达到78.3%,超过该基准官方排行榜上的所有模型。
在Multimodal RewardBench 2的四项任务中,每项任务包含1000对专家标注样本,分别为文生图、图像编辑、交错输入和推理得分。该模型在四项任务上的平均分与GPT-4.1和Qwen3-VL-32B相当,GPT-5和Gemini 3 Pro仍保持领先地位。
环境配置与模型下载
默认的启动配置使用32K的上下文长度,建议使用显存80GB或更大的GPU。如果需要完整的256K上下文支持,则需要额外配置KV Cache;官方测试中,256K的提示任务在183GB的B200显卡上运行,若使用80GB的GPU,建议先将最大上下文长度设为131072。
首先安装依赖工具,然后将模型下载到本地目录:
pip install -U modelscope modelscope download --model autotrust/JEV-27B-VL --local_dir JEV-27B-VL
下载完成后,可以直接运行仓库内的启动脚本:
bash JEV-27B-VL/serve.sh
该脚本会在8000端口启动标准的vLLM OpenAI兼容服务,同时额外提供System 1模块使用的POST /v1/decide接口。如果需要自定义启动参数,可以执行自定义启动命令:
python3 JEV-27B-VL/serve_decide.py \
--model JEV-27B-VL \
--served-model-name autotrust/JEV-27B-VL \
--enable-lora \
--max-lora-rank 32 \
--lora-modules jev-decision=JEV-27B-VL/adapter_vllm \
--logprobs-mode processed_logprobs \
--max-model-len 32768 \
--enable-prefix-caching \
--mamba-cache-mode align \
--limit-mm-per-prompt '{"image": 8}' \
--max-num-seqs 8 \
--trust-request-chat-template
如果需要启用完整的256K上下文支持,可以在运行serve.sh之前设置环境变量:
export MAX_MODEL_LEN=262144 bash JEV-27B-VL/serve.sh
System 1:可输出校准概率的决策接口
/v1/decide接口接收kind、state、question和可选的options参数。其中,kind为noul时对应yes/no判断,为score时对应0到5的评分,为choice时支持2到256个候选项的选择。
以下是一个使用curl调用该接口的示例:
curl localhost:8000/v1/decide \
-H 'Content-Type: application/json' \
-d '{
"kind": "choice",
"state": "Customer: my card was charged twice for one coffee.",
"question": "Which team should handle this?",
"options": ["billing", "shipping", "tech support"]
}'
该接口会返回每个选项的概率、最高概率选项、token使用量和耗时。例如上述请求会将billing作为首选选项,并返回约0.9969的概率值。
如果需要进行图像决策,可以将state参数写成文本与图片交替的列表。图片既可以使用HTTPS URL,也可以使用Base64编码的data URL,以下是Python示例代码:
import base64 import requestsdef image(path):
data = base64.b64encode(open(path, “rb”).read()).decode()
return {“image”: “data:image/jpeg;base64,” + data}def decide(kind, state, question, options=None):
body = {“kind”: kind, “state”: state, “question”: question}
if options:
body[“options”] = options
result = requests.post(
“http://localhost:8000/v1/decide”, json=body
).json()
return dict(zip(result[“options”], result[“probabilities”]))print(decide(
“noul”,
["Photo: ", image(“photo.jpg”)],
“Is this scenario one where: the image shows food or cooking?”
))
System 2:多模态理解与推理接口
System 2可以通过标准的OpenAI兼容接口调用,支持关闭思考模式直接回答图像相关问题,以下是Python示例代码:
import base64 import requestsdef image_url(path):
data = base64.b64encode(open(path, “rb”).read()).decode()
return {
“type”: “image_url”,
“image_url”: {“url”: “data:image/png;base64,” + data},
}result = requests.post(
“http://localhost:8000/v1/chat/completions”,
json={
“model”: “autotrust/JEV-27B-VL”,
“messages”: [{
“role”: “user”,
“content”: [
image_url(“chart.png”),
{“type”: “text”, “text”: “What does this chart show?”},
],
}],
“max_tokens”: 1024,
“chat_template_kwargs”: {“enable_thinking”: False},
},
).json()
print(result)

