SemIf

模型 创建 更新
deepseek-v4.1-flash 2026-10-10 2026-10-10

SemIf 是 TheoLeeCJ 的个人独立项目(原称 OpenJev),把决策模型「不生成文本、直接返回类型化选项概率」的接口模式用现成的开源模型复现出来的评测基线与运行时:给定一个状态与若干带描述的选项,它在一次前向里读出模型对固定答案 token 的 logits 并归一化,因此不产生任何输出 token,也不需要训练新权重。

SemIf 的取舍是用「不训练」换取可复现与可自托管:它不训模型、只换读出方式,所以任何人拿一个冻结的 4B 开源模型就能跑出同样的接口,全部 fixture、逐行预测、原始计时与 prompt 哈希都提交在仓库里;代价是它复现的只是接口形状,作者自己写明未复现 Jev 的架构与训练,概率也还不是可运营的校准置信度——不训练的开源 4B 模型仍与 Jev 在公开子集上差着一档。

是什么

  • 定位:不是新模型,而是基线(baseline)与运行时——它给现成模型套上决策模型的请求/响应形状,用于回答「一个不训练的开源模型能把这类判断做到什么程度」,也是托管决策服务采购前的对照物。
  • 与 TypeSafe 的关系:项目自称独立、与 TypeSafe 或 Jev 无关联、未获背书;它复现的是 Jev 公布的接口模式(运行时定义的准则、类型化选项、无解码循环),不是 Jev 未公开的模型或训练方法。
  • 工作入口:命令行 semif-score(--mode direct|serial|shared|reranker)、Python 包(pip install -e '.[test]')、以及一个浏览器内运行的 WebGPU demo(openjev.com,用 wllama 加载量化 GGUF,输入不出本机)。
  • 基座模型:默认并作为主基线的是 Qwen3.5-4B;浏览器 demo 另提供 Qwen3-0.6B(639 MB)与 MiniCPM5-2B(1.56 GB)两档,另有 Qwen3.8-27B EXL3 桥接与 Qwen3-Reranker-4B 作对照。SemIf 不带权重,用哪个模型由使用者决定。
  • 作者与维护:单人主导(GitHub TheoLeeCJ,仓库 5 位贡献者),代码 MIT 许可;权重与第三方素材维持各自上游条款(Apache-2.0 的 Qwen3-Reranker-4B、CC-BY-4.0 的 WANLI 等)。仓库地址为 TheoLeeCJ/SemIf-OpenJev(旧地址 TheoLeeCJ/SemIf 会重定向)。

如何工作

  • 输入:state(字符串,或 JSON 对象/数组,直接模式按结构化 JSON 保留)+ question(自然语言准则)+ options(每项一个 id 与 description)。一次请求可带多条判断。
  • direct 模式:把状态、准则与选项拼成一次前向,只对固定的全大写答案 token 的 logits 做 softmax,不采样、不解码任何 token;返回的概率是「条件于所给选项」的分布,不是校准过的运营置信度。
  • serial / shared 模式:先对共享状态前缀预填一次,再把各条判断作为后缀分支复用(serial 合并连续相同状态,shared 把所有同状态的问题并行批处理)。这是它的速度来源。
  • reranker 模式:按 Qwen3-Reranker-4B 原生的 yes/no 契约,把每个候选答案变成独立的 query/document 相关性命题,取 logit(yes) − logit(no) 再跨选项归一化——作检索排序的对照基线,不是通用判断的首选。
  • 后端:Torch/CUDA(默认)、llama.cpp(纯 CPU,读本地 GGUF)、PyTorch MPS 与原生 MLX(Apple Silicon,MLX 支持 direct/serial/shared、不支持 reranker)、以及 exllamav3 的 EXL3 量化桥接。各后端沿用同一批 prompt 与 prompt 哈希。
  • 校准:在原生概率之上叠一层可选的 per-workload 温度缩放(softmax(logits / T)),按工作负载用带标签样本拟合单个标量 T;因为是单调变换,argmax 与准确率都不变,只有置信度改变。
  • 窗口与显存随基座:SemIf 自身不另设上下文窗口,沿用基座的原生窗口——主基线 Qwen3.5-4B 262,144 token、浏览器档 Qwen3-0.6B 40,960、MiniCPM5-2B 131,072、EXL3 桥接的 Qwen3.8-27B 262,144(作者文档只写输入上限会强制校验、不截断,未给出具体数值)。显存按基座算:4B BF16 在 MLX 上实测峰值分配约 8.6 GB,三档浏览器 GGUF 分别是 0.64 / 1.56 / 3.01 GB。
  • 速度:RTX 3090 上一次状态预填后并行读 21 条判断中位 1.023 s(≈48.7 毫秒/决策、零输出 token);777 条决策 38.8 s(≈49.9 毫秒/条、20 决策/秒)。同模型生成 JSON 的对照是 21 条 5.332 s、111 个输出 token。Apple M5 上单次热决策 ≈260 ms(MLX)/ ≈600 ms(MPS)。
  • 可复现性:评测矩阵、选择清单、逐行预测、原始计时与模型 revision 都提交在仓库(results/raw/),prompt 与 fixture 带哈希;作者把「已复现 / 未复现」逐条列出。

适用场景

  • agent 循环里的路由、分诊与重试这类小判断:一次前向读出全部候选概率,省掉「生成一句话再解析回 if」的往返。
  • 一份长状态(文档、对话)对多条准则同时打分:shared 模式预填一次后并行求值。
  • 状态不便外发、或要在浏览器/本机跑:demo 与 CLI 都能全本地完成,输入不出设备。
  • 付费托管决策服务前的对照:先用现成 4B 模型量一遍自己的任务,再决定是否值得付费。

局限与争议

  • 概率不是运营置信度。 作者在 METHOD 与 CALIBRATION 里反复写明:softmax 只条件于所给备选,未经校准前不能当阈值用;HN 上也有直接质疑——「未经微调就不能说它输出的东西是真概率」。校准层能修正整体过度自信(WANLI 的 ECE 由 0.208 降到 0.069,折外区间不重叠),但自有与 Every 两个工作负载的增益不显著,作者自述合并温度对照的结果是「不确定,不是有害证明」。
  • 与 Jev 的差距不能被 3.8 个百分点掩盖。 在 TypeSafe 102 行公开子集上,直接读出与已发布 Jev 的模态一致率是 0.845 对 0.883;作者自己声明这不构成「接近 Jev」——样本小且被挑选、Jev 不是本项目运行的、只有一种指标,且概率质量仍差(总变差距离 0.177 对 0.127)。
  • 选项位置会翻转判断。 36 个自有案例里,选项顺序反转仍有 0.813 的准确率但有 10 例翻转,准则措辞包裹 9 例、无关上下文 4 例;作者写明「位置措辞与概率漂移尚未解决」。
  • 通用能力受基座限制。 最准的一档是 Qwen3.5-4B(自有任务集平衡准确率 0.813),掉到外部 NLI 数据(WANLI)只有 0.637;作者明确未复现「前沿级通用语义能力」。
  • 明确「未复现」清单:Jev 未公开的架构与并行采样器、RLCD 训练(训练数据与算法规格都不公开)、可运营的校准概率、TypeSafe 宣称的延迟与成本、完整 711 行基准、独立运行的 Jev 端点。
  • 无第三方复测。 全部数字出自作者自己的 harness,与独立第三方对 Clef/Jev/Kev 的同批实测不是一回事。
  • 收窄但有争议的观感批评。 HN 帖(改名前的 OpenJev,722 分 / 296 评论)里既有技术质疑(概率未经微调无意义、这类「jev 克隆」都是 vibecoded、只模仿输出形状),也有针对站点观感与「它和 jev 没什么关系」的批评,以及为它辩护的声音;作者的「未复现」清单与其中多条批评方向一致,而网站观感属评价而非事实。
  • 维护与命名风险。 以单人为主的个人项目,仓库最近一次推送为 2026-09-23(核验于 2026-10-10);同名/近名项目很多(daseinlabs/open-jev、GPT-AGI/OpenJev、jevlike、eider、vLLM 的 DiffusionGemma 补丁等),引用时需连同作者名与仓库地址写清。

相关方法比较

  • Kev:同为开权重、可自托管的 Jev 风格路线,但 Kev 是训练出来的权重族(照公开架构重建、有指针头与微调流程),SemIf 是不训练、直接用通用开源模型的读出方式。要最高准确率与微调能力选 Kev,要「零训练、立刻用现成模型复现接口」选 SemIf。
  • Jev:SemIf 复现的对象。Jev 是闭源托管服务、架构未公开、单价与延迟最低;SemIf 免费本地但通用准确率低一档,且概率未证实可当运营阈值。
  • Clef:同为开权重且能力更高一档,还是唯一能读图像(omni 另接音视频)的方案;SemIf 只用文本,靠的也不是专属权重。
  • Microsoft-Decision-1:同为文本、无输出 token 的决策评分方案,但走完全相反的路线——微软对 Qwen3.5-9B 做了后训练并只提供托管 API(Foundry 与 OpenRouter 的 Decisions API),SemIf 则不训练、直接把接口套在冻结的现成模型上。要厂商治理与采购路径选它,要「零训练、自己复现接口」选 SemIf。
  • 与受限解码库(Outlines、XGrammar、LM Format Enforcer)的区别:那些工具塑形模型生成的 token 以保证格式合法,SemIf 在「从一组已描述的固定选项中选」这个窄情形下完全跳过生成。

实践建议

  • 先在自己的任务集上复测:SemIf 的公开数字是自跑基线,不是排行榜成绩;它的价值在于给你一条「不训练能到哪」的地板线。
  • 需要置信度阈值分流时,别用原生 softmax 或固定的 0.5 线;按自己的工作负载拟合一次温度(作者提供了只依赖 numpy、离线跑的脚本),并接受小样本上增益可能不显著。
  • 状态很长、判断很多时优先用 shared / serial 模式:一次预填、分支复用是它的主要加速来源(3090 上 777 条从逐条 333 秒降到并行 38.8 秒)。
  • 把「检索排序」和「通用判断」分开测:reranker 模式排序强(两个检索任务 MRR 都是 1.0),但它的分类阈值未经校准,不能拿它的行级二分类准确率当通用判断能力。
  • 想要开权重里更高的准确率或要微调,改用 Kev 或上 Clef;想要最低成本延迟且接受闭源,直接用 Jev。SemIf 的合适位置是基线与本地原型,而不是接管生产阈值。

变更记录

  • 2026-10-10:创建。收录项目定位(接口基线而非模型)、direct/serial/shared/reranker 四种模式与各后端、质量阶梯与 TypeSafe 子集对比、扰动与校准结果、作者自述的「未复现」清单、HN 上的批评与辩护,以及与 Jev / Clef / Kev 的取舍对照。
  • 2026-10-10:按用户要求补入统一的量化口径:各基座模型的原生上下文窗口(token)、按基座折算的显存占用与延迟的「毫秒/决策」换算。
  • 2026-10-10:加入 Microsoft-Decision-1 后,「相关方法比较」与「相关知识」补入该条目(同为文本、无输出 token,但走训练加托管的相反路线),比较页链接说明由「四者」改为「五者」(仅同步引用,未改动本页结论)。

相关知识

  • 决策模型:本页所属主题入口,说明收录边界与成员清单。
  • Jev:同主题条目;SemIf 复现其接口模式,并在其公开评测子集上作对照。
  • Kev:同主题条目;代表「训练专属权重」的另一条开源路线,与 SemIf 的「不训练」形成对照。
  • Clef:同主题条目;另一条开权重路线,能力更高且支持图像输入。
  • Microsoft-Decision-1:同主题条目;同在文本、无输出 token 的形态内,但由厂商后训练并只提供托管 API,是「训练加托管」的对照。
  • 决策模型比较:五者的逐维度矩阵,重点写部署形态、模态与证据强度。
  • 知识库:全部主题的索引。

参考来源

  • SemIf README(GitHub 仓库,master 分支):项目定位与免责声明、四种模式与四条后端路径、输入 JSON 形状、校准表摘要、Latest changes(2026-09-18 / 2026-09-22)与 MIT 声明(读取于 2026-10-10)。
  • docs/METHOD.md:706 行冻结评测矩阵的构成、四个系统的定义、扰动设计、系统基准口径,以及「强制类型化输出仍可能语义错误」「softmax 不是校准置信度」等解释规则。
  • docs/RESULTS.md:质量阶梯(0.6B 0.440 / 2B 0.686 / 4B 0.813、TypeSafe 子集 0.845 对 Jev 0.883)、3.8 个百分点的边界说明、扰动翻转、21 条判断 1.023 s 对 5.332 s、3090 上的模式计时,以及「已复现 / 未复现」清单(读取于 2026-10-10)。
  • docs/CALIBRATION.md:per-workload 温度缩放的方法、WANLI 的 ECE 0.208 → 0.069、其余工作负载增益不显著,以及合并温度对照「不确定非有害」的自述。
  • docs/APPLE_SILICON.md 与 docs/MLX.md:M5 上热决策 0.26 s(MLX)/ 0.6 s(MPS)与 37×21 fixture 的 9.1 s / 16.4 s;MLX 支持的模式与 reranker 不支持。
  • THIRD_PARTY.md:基座与数据的上游固定 revision、许可条款与「不分发权重」声明。
  • GitHub API:TheoLeeCJ/SemIf-OpenJev:创建 2026-09-16、最近推送 2026-09-23、star 4,765、fork 347、open issues 47、无 release、MIT、5 位贡献者(读取于 2026-10-10)。
  • OpenJev / SemIf 浏览器 demo:on-device 三档模型与「直读对 JSON 生成」并排回放,以及「原名 OpenJev、与 TypeSafe 无关联」的声明。
  • OpenJev(Hacker News,2026-09-18):722 分、296 条评论;提供未经微调概率是否可信、这类「jev 克隆」是否只模仿形状、站点观感等批评,以及为它辩护的反面意见(读取于 2026-10-10)。
  • SemIf(AI/TLDR 目录):第三方把它归入 structured output 层并与受限解码库区分;其「当日 621 分」与 HN 当期 722 分口径不一致,未采用。
  • Qwen3.5-4B(Hugging Face 模型卡):主基线的原生上下文 262,144 token、可外推至 1,010,000(读取于 2026-10-10)。
  • Qwen3-0.6B config.json 与 MiniCPM5-2B config.json:max_position_embeddings 分别为 40,960 与 131,072(读取于 2026-10-10)。