开源jevlike:复现TypeSafe Jev系统一模型


这是 GitHub 上一个名为 jevlike 的开源项目,由 vinnylarouge 开发。它是一个用于训练小规模模型的独立启动器(starter),旨在让模型一次性从一组文本选项中选出概率最高的答案,而无需像传统语言模型那样逐词生成。

项目定位:对标 TypeSafe 的 Jev 模型

该项目明确表示,它的灵感来源于 TypeSafe 公司的商业模型 Jev。Jev 是一种“系统一”(System One)模型,专为快速决策任务设计。由于 TypeSafe 并未公开 Jev 的设计细节,jevlike 的目标就是提供一个输入输出形状相同的独立实现。


生成答案,其实是在花冤枉钱

你要寄一封信,结果邮局非要你把信从头到尾大声朗读一遍才能寄出去,你会不会觉得这规矩荒唐透顶!

今天绝大多数AI干的事,差不多就是这么荒唐。你让它回答一个选择题,它会先在脑子里(其实是输出层上)把“好的,让我想想……根据上下文……我认为答案是……”这一串废话一个字一个字地生成出来,最后才蹦出你真正想要的那个选项。

这个过程有个专业名字叫自回归生成(autoregressive generation),意思是每输出一个词,都要回头看一眼前面写过的所有词,再决定下一个写什么。写一个四百字的回答,模型就得老老实实算四百步。

但这四百步里,真正有用的可能只有最后那个词!

一家叫Dream Security的安全公司算过一笔账:在72B参数的大模型上,传统生成式分类每条样本大约要花一秒,而直接从模型输出分布里读取答案,只需要不到一百毫秒——快了8到40倍。你每天要处理几百万封邮件、几百万条防火墙规则,一秒一条就等于“完全没法用”。

jevlike想干的事,就是把“写作文”和“做选择”这两件事彻底拆开。

把每个选项变成一把独立探照灯

开源开发者vinnylarouge在GitHub上发布了jevlike项目,明确声明它的目标是对标Jev的输入输出形状并提供一个功能等价的独立实现,而jevlike的核心机制可以用一个极其直观的比喻来理解:它把每个选项变成了一把独立的探照灯,让每把探照灯分别去照亮上下文里跟自己最相关的部分,而不是把所有选项揉成一团塞进模型里让它们互相干扰。

具体来说,jevlike的工作流程分三步走:
第一步,模型把每个选项文本编码成一个query向量(查询向量),这个向量本质上就是选项的数学指纹;
第二步,每个query向量独立地对上下文执行注意力加权(attention weighting),也就是每把探照灯在上下文里扫一遍,把跟自己最相关的词语亮度调高、无关的词语亮度调暗,生成一个专属的上下文表示;
第三步,模型用一个共享的点积运算给每个选项和它专属的上下文表示打一个分数,再经过softmax层把这些分数转化成概率分布,概率最高的那个选项就是模型的最终答案!

这套机制跟传统文本分类模型的根本区别在于选项的处理方式,传统做法是把所有选项拼成一个长字符串塞进模型里一次性处理,选项越多字符串越长,模型的计算量呈指数级膨胀,而jevlike让每个选项独立编码、独立查询,选项数量增加时计算量只呈线性增长,在8个选项的测试场景下,jevlike的一次性评分(one-pass scoring)比强制生成400个token的小型自回归解码器快了大约100倍,这不是靠换显卡换来的加速,而是靠换思路换来的加速!

不做生成做选择,这条路走得通吗

jevlike的核心思路说起来简单得吓人:既然选项是已知的,为什么还要让模型自己“写”出答案!

它把每一个选项——比如“退款”“销售”“技术支持”——编码成一个查询向量(query vector),你可以把这个向量想象成一把钥匙,专门用来打开上下文里跟这个选项最相关的信息。然后模型用这把钥匙去“翻”一遍上下文,给每个词打一个注意力权重,最后算出一个分数。

所有选项都走完这个流程,谁分高谁就是答案。

这跟传统做法差在哪儿呢,传统模型是“我先想好答案,再写出来”,jevlike是“我同时给所有选项打分,谁高选谁”。前者像一个作家,后者像一个裁判。

而且这个裁判非常灵活。每一行训练数据里选项数量可以不一样,最少两个、最多十几个都行,每次预测都可以面对全新的选项列表。默认情况下,jevlike从零开始学字节嵌入(byte embeddings),也就是说它不需要任何预训练,直接啃原始字节就能学;如果你想要更好的语义理解,也可以挂载Hugging Face上的预训练编码器,把它冻结住不动,只训练那个小小的评分头。

这就怪了,一个“从零学起”的小模型,真能干过那些千亿参数的大块头吗!


冻结编码器让语义理解零成本

jevlike提供了两条编码器路径供用户选择,默认路径是从零开始学习字节嵌入(byte embeddings),也就是模型把每个字符当作一个独立的符号来记忆,这条路径的训练成本极低,一张普通消费级显卡就能跑,但代价是模型对语言语义的把握非常弱,它更像是在做像素级的模式匹配,而不是真正读懂文字背后的含义。

可选路径则聪明得多,它允许你从Hugging Face上拉一个预训练好的语言模型作为编码器,比如通义千问的Qwen2.5-0.5B这种只有五亿参数的小模型,然后把它的权重完全冻结住不让训练过程修改,只在最顶端加一个极小的评分头(scorer head)来学习如何给选项打分,这条路径的妙处在于预训练编码器已经吸收了海量文本的语义知识,它知道"愤怒"和"生气"是近义词、"开心"和"悲伤"是反义词,这些知识不需要你花一分钱重新训练,评分头只需要学会如何利用这些现成的语义信息来做选择题就够了!

在Wikispeedia下一跳预测实验中,jevlike用冻结的Qwen2.5-0.5B编码器在目标不重叠的测试数据上达到了26%的Top-1准确率,而打乱上下文的对照组和随机编码器的准确率只有8%左右,这18个百分点的差距证明模型确实学会了从上下文中提取跟选项相关的语义信号,而不是在靠运气蒙答案,但26%这个数字离实用门槛还有多远,目前谁也说不准!


一百倍差距是怎么来的

有个数据值得好好看看。

在本地实验里,jevlike的一次性评分方式比强迫一个小型解码器“写出”四百个token快了大约一百倍。这不是在吹牛,背后的原因很朴素:生成四百个token意味着模型要串行运行四百次计算,每次都得等上一次算完;而jevlike只需要一次前向传播,所有选项的分数同时算出来。

串行和并行的差距,就像你排一条队买奶茶和同时开十个窗口买奶茶,队伍再短也架不住窗口多。

但这里有个关键前提,你必须提前知道所有选项是什么。jevlike没法在“不知道答案在哪儿”的情况下自己探索,它只能在你给定的选项里挑最好的那个。这就像考试的时候选择题的选项是印好的,它做题飞快,但要是碰上填空题,它就彻底傻眼了。

这个限制听起来像是个致命伤,但仔细一想,现实中大量的AI应用场景恰好就是选择题:客服系统里给用户问题分类、游戏AI选择按哪个按钮、软件界面里决定下一步跳转到哪个页面——这些任务的选项都是预先定义好的。

那jevlike到底在这些场景里表现得怎么样呢?

从维基百科到毁灭战士,同一个大脑换不同考题

jevlike的架构设计有一个容易被忽略的通用性特征:它的输入并不限定于文本,只要你能把待决策的对象编码成向量,评分头就能给它们打分,vinnylarouge在项目里展示了两个极具想象力的跨界应用案例,一个是国际象棋走法评估,另一个是Doom游戏控制器。

第一个实验是Wikispeedia下一跳预测,你可以把它想象成在一个巨大的维基百科迷宫里导航,从当前页面出发,要猜人类玩家下一步会点哪个链接。这个数据集里有4604篇文章和119882条链接,全部来自斯坦福网络分析项目的人类导航记录。jevlike挂载了一个冻结的Qwen2.5-0.5B编码器,在目标不重叠的数据上达到了26%的准确率,而打乱上下文和随机编码器的对照组只有8%左右。

26%听起来不高,但你要知道这是在猜“下一步点哪个链接”,相当于蒙着眼睛在几千个选项里找路,能到26%已经说明模型确实学到了东西。

但接下来这个实验才是真正让人瞪大眼睛的。

作者把同一套评分机制搬到了游戏控制器上。你看到的画面不再是文字,而是Doom游戏640×480的实时画面切片,七个按钮——前进、后退、左转、右转、射击等等——各自变成一个选项,模型从图像块里直接给每个按钮打分。同一个评分头,换一组输入,就从“读文章选答案”无缝切换到了“看画面按按钮”。

Doom实验的联合检查点在十局游戏中平均击杀0.60个敌人,奖励值为-97.50,数字本身不好看,但重点不在成绩,在于证明了一件事:选项注意力机制根本不关心上下文是文字还是像素,它只关心“把上下文和选项对齐”这个操作本身。

国际象棋实验更有意思。那个专门训练的国际象棋检查点在跟随机走子的50局对战中拿到4胜46平0负,看起来还不错;但换到跟Stockfish第0级对战,成绩变成了0胜2平48负。这个反差恰好说明了jevlike的能力边界,它能在选项空间里快速定位,但它的天花板被训练数据的质量死死锁住。

同一个大脑,换个考题就是天壤之别!

竞品Jev卖四十块钱,这个开源版本差在哪

jevlike明确说自己是TypeSafe公司商业模型Jev的“独立启动器”,输入输出形状一样,但内部设计完全是自己的。

Jev是2026年9月15日由TypeSafe AI发布的,CEO是Diogo Almeida,InstructGPT论文的合著者之一——那篇论文正是让ChatGPT学会“当助手”的关键工作。Jev的定价是每百万输入token收费0.042美元,输出token计费为零,在TypeSafe自己的测试里比同类LLM快20到200倍、便宜40到400倍。

但所有性能数据都是TypeSafe自己说的,架构没公开,权重没发布。唯一一家独立测试机构Every让Jev处理了37份文档、21个问题,777次判断在不到0.7秒内完成,成本约四分之一美分,但准确率比前沿模型低了一档。

jevlike跟Jev的最大区别在这里:Jev是一个闭源的商业服务,jevlike是一个你可以打开代码、改架构、换编码器、甚至把评分头接到游戏画面上的开源实验框架。Jev追求的是在生产环境里替代LLM做决策,jevlike追求的是让你亲手搞明白“一次性评分”这件事到底能走多远。

jevlike不是Jev的复制品,它是Jev的解剖刀。

这套玩法注定只能做选择题

jevlike的局限跟它的优势一样锋利。

你没法用它做开放式推理,因为它的设计前提就是“选项已知”。你没法用它生成任何文字,因为它根本不走生成这条路。每次界面上的选项变了,评分头可能需要重新训练或调整,这意味着UI一更新,模型就可能“失忆”。

但你换一个角度想,生成式模型不也有自己的死穴吗!它需要你给它一个prompt,然后祈祷它输出正确格式的答案,再写一个解析器把答案从一堆废话里捞出来——这个流程本身就够脆弱的了。

TypeSafe的文档里有一句话说得特别直白:LLM的设计目标是生成给人读的文本,当你需要模型做出一个你的代码要消费的判断时,这就会造成不匹配。

jevlike的选择是:跳过文本,直接给判断。

Doom实验里那个评分头,它的参数不到两百万。你手边随便一台笔记本都能跑得动。但就是这么一个轻到几乎不存在的模型,在它擅长的选择题任务上,可以做到比一个大它几百倍的生成式模型快出一到两个数量级。

这个对比本身就在说一件事:有些问题根本不需要“思考”,只需要“选择”!

作者在GitHub页面上放了一段十秒钟的演示视频,Doom的致命走廊战斗画面和象棋走子画面被拼接在一起,同一个评分头在两种完全不同的输入模态下做出决策,中间没有任何模型切换。视频下面有一行小字:这些片段是为了展示活跃度而挑选的,不代表典型游玩水平或能力声明。

但如果你把这段视频暂停在某一帧,仔细看那些张量在注意力权重上的流动——选项查询向量找到上下文里的关键位置,点积算出分数,softmax归一化成概率——你会发现整个“决策”过程没有任何神秘之处,它就是一次矩阵乘法而已。

现在你知道了:让AI做选择,根本不用让它先写作文!