Decision 3.0:vLLM Semantic Router 把'路由决策'做成了五个开源小模型
Decision 3.0:vLLM Semantic Router 把"路由决策"做成了五个开源小模型
上一篇我们聊了 vLLM Semantic Router——那个给 Agent 提供统一模型 API、按策略在每次调用时选模型的决策层。这次它的团队交出了配套的**"大脑"**:Decision 3.0。
先说结论:这是一族 5 个开源多模态决策模型,从 0.8B 到 27B,全部 Apache-2.0。它们不做生成,只回答问题、返回概率——你给它一段文本或 JSON,可选几张图片,再给它一组命名问题,它在一次调用里把所有问题答完,每个答案给你一个校准过的概率,你拿去设阈值就行。
对路由和护栏来说,这是典型的 "System One(快思考)" 模式:不用再"提示一个大模型、再解析它的输出",直接拿到分数。
更值得说的是它还跑上了 Mac——有人把小的几个尺寸转成了 Core ML,决策不出机器、没有按次成本、没有网络往返。
目录
- 一、决策模型:让"该发给谁"不再是猜
- 二、Decision 3.0:五个尺寸,一次返回一组概率
- 三、它怎么工作:每个问题一次前向
- 四、成绩单:9B 干掉了上一代的 27B
- 五、横向对比与延迟
- 六、跑在 Mac 上:Core ML 版的 d3
- 七、四个演示:从 PR 分类到超级马里奥
- 八、怎么用,以及它的边界
一、决策模型:让"该发给谁"不再是猜
路由系统的核心动作,其实是一连串判断题:这条请求属于哪个领域?难度到哪一档?要不要升级到更强的模型?是不是敏感内容、要不要拦?工具有没有兼容问题?
过去这些判断大多靠两种土办法:要么写死规则(关键词、正则),要么用一个大模型做 prompt,再从它生成的自然语言里抠答案。后者的问题很明显——慢、贵,还不稳定,模型一句话绕个弯你就解析不出来。
决策模型(Decision Model) 换了个思路:既然要的是"是/否"或"选哪个",那就别生成文本了,直接预测每个选项的概率。快、便宜、可校准、可设阈值。Decision 3.0 就是 vLLM SR 团队在这一方向上做到多模态的一代产品。
二、Decision 3.0:五个尺寸,一次返回一组概率
一共有五个尺寸,覆盖从边缘到数据中心的整条线:
| 模型 | 参数量 | 说明 |
|---|---|---|
| d3-lite | 0.85B | 最轻,速度优先 |
| d3-nano | 2.21B | 中间档,性价比 |
| d3-mini | 4.54B | 兼顾速度与准确 |
| d3-flash | 8.39B | 9B 级,直逼上一代 27B |
| d3 | 26.09B | 旗舰,18B 之上的最强档 |
几个关键事实:
- 多模态输入:能读文本和 JSON,也能读图片(PNG / JPEG / WebP),每张图最高 1.6 百万像素,一次请求可以带多张,每个问题都能看到全部图片。
- 输出是概率,不是文本:每个问题是一道 Choice(多选一)、Yes/No 或 Score(打分),模型给每个选项返回一个概率。
- 底座是 Qwen:27B 的 d3 建在 Qwen3.8-27B 上;其余四个建在 Qwen3.5 的 0.8B / 2B / 4B / 9B 检查点上。
- 自带视觉编码器:d3-lite 里是 0.10B,d3-nano 和 d3-mini 是 0.33B,d3-flash 和 d3 是 0.46B。
- 开源协议:Apache-2.0;上下文长度为未公开。
这套设计的好处是:尺寸和成本可以按判断难度去配。PR 分类这种高频杂活交给 0.8B,复杂一点的多模态判断再上更大的。
三、它怎么工作:每个问题一次前向
流程其实很直白:
graph LR
A["State: text or JSON"] --> D["d3 forward pass"]
B["Images: PNG / JPEG / WebP"] --> D
C["Questions: Choice / Yes-No / Score"] --> D
D --> E["Probability per option"]- 输入:一个 state(文本或 JSON),加上可选的图片。
- 问题:关于这份输入的一组命名问题——Choice、Yes/No、Score 三种题型,每个问题都能看到所有图片。
- 概率:每个问题各自跑一次前向,返回每个选项的概率,全程不生成任何文本。
工程上有两个细节要注意:安装锁定 transformers==5.17.0;可选的 flash-linear-attention 包能加速线性注意力层;加载模型需要 trust_remote_code=True。
四、成绩单:9B 干掉了上一代的 27B
Decision 3.0 对标的是一块叫 Jev Decision Index 0.3.1 的榜(它排名的是 TypeSafe Jev 决策系统的开源复现)。这里要先说清楚:d3 的数字是团队内部评估,其他对手用的是榜单实测数据(文本榜 2026-10-10、视觉榜 2026-10-09)。
文本上,d3 拿到 64.1,领先 Perplexity Decider v1.1(62.8)和 Jev(60.1)。有一个诚实的注脚:公开套件里 Torchcast Decision 27B 的分数更高(65.1 vs 64.9)。
视觉上,d3 拿到 71.6,对手 Perplexity Decider v1.1 是 70.6。
但这一代最漂亮的故事是"以小博大":
- d3-flash(9B)拿到 59.0,直接超过 Decision 2.0 的 27B(55.9)。
- 相比 Decision 2.0,公开套件的提升从 +8.0(27B)到 +15.1(0.8B)——越小的模型,进步越大。
不过各档并不是全面领先,得看清楚:
- d3-mini(4B)和 d3-flash(9B)同时拿下各自的文本和视觉第一。
- d3-lite(0.8B)文本第一,但视觉只排第三(41.1,落后 JPT-0.8B 的 42.1)。
- d3-nano(2B)视觉第一,但文本输给 LiquidAI d1-3B(35.8 vs 40.1)。
在公开视觉任务上,d3 拿到 InfographicVQA 97.3 和 Mind2Web 89.9(都是近似重建版);弱项是 MMMU-Pro 视觉 46.2 和 Hateful Memes 内容审核 44.6。模型的最好成绩是文档抽取 KIE(CORD+FUNSD)的 97.7,最差是 R-Bench-M 的 34.1。
诚实的解读是:别把"9B 超过上一代 27B"直接读成"全面碾压"——它在特定任务上很强,在其他任务上未必,选型还是得按自己的负载测。
五、横向对比与延迟
放进同类里看,几个关键维度:
| 特性 | d3(vLLM SR) | Perplexity Decider v1.1 | Decision 2.0 Vega-27B | LiquidAI d1-3B |
|---|---|---|---|---|
| 参数量 | 26.09B | 26B | 29.37B | 3.12B |
| 底座 | Qwen3.8-27B | Qwen3.8-27B | Qwen3.8-27B | LFM2.5-VL-3B |
| 输入 | 文本、JSON、图片 | 文本、图片 | 文本、JSON | 文本、JSON、图片 |
| 上下文 | 未公开 | 每次决策 8,192 token | 32,768 token | 32,768 token |
| 协议 | Apache-2.0 | Apache-2.0 | Apache-2.0 | LFM 1.0 |
| 决策指数(自家卡) | 64.1(v0.3.1,内部) | 61.56 | 56.5(v0.2.1) | 48.57(v0.2.1) |
| 0.3.1 榜 | 64.1 | 62.8 | 55.9 | 40.1 |
| 视觉榜 0.3.1 | 71.6 | 70.6 | 未公开 | 未公开 |
| 延迟中位数 | 84 ms 文本(1×MI325X) | 未公开 | 71.4 ms | 9 ms |
延迟方面(单请求串行,单张 AMD Instinct MI325X):d3-nano 文本 21.7 ms / 带图 92.0 ms;d3-lite 文本 23.5 ms / 带图 60.7 ms;d3-mini 文本 28.5 ms / 带图 115.0 ms;d3-flash 文本 29.7 ms / 带图 171.8 ms;d3 文本 84 ms / 带图 342 ms。所有模型都在 AMD Instinct MI325X 上训练。
这就是决策模型的意义:文本判断基本在几十毫秒内完成,比"让大模型生成一段话再解析"快一到两个数量级,也便宜得多。
六、跑在 Mac 上:Core ML 版的 d3
这部分来自另一篇官方博客。有人把 d3-lite、d3-nano、d3-mini 转成了 Core ML(后来又加了 d3-flash),做成了文本、截图、实时视频的演示。
为什么这事重要:在 Mac 上做的决策没有按次成本、没有网络往返,而且 PR、网页、视频这些数据一次都不出这台机器。这和 vLLM SR 的分工正好接上——常规判断在设备上答,需要大模型的再交给路由器。
转换的思路是把模型拆开跑:Core ML 负责重的部分(backbone 和 vision tower),宿主 App 负责轻的步骤(embedding 查表、位置运算,以及最后那个小的读出矩阵乘)。细节上,文本图把 token embedding 当输入,图片/视频 token 可以拼进去之后再跑;prompt 右填充到几个固定长度——这对 d3 是精确的,因为 Gated DeltaNet 层是因果的、看不到 padding,全注意力层也会把它 mask 掉。视觉塔跑 fp32,固定 patch 数 + masked padding,视频用块对角 mask 把注意力锁在每对帧内。
一个关键的工程坑是权重位宽:fp16 下 d3-mini 的文本图每个长度桶是 6.7 GB,同时载入两个桶会让 24 GB 的 Mac 爆显存,每步要 8–12 秒;换成 8-bit 权重后两个桶能同时常驻。
转换用 PyTorch 2.7 + coremltools 9.0,并在两个公开基准上做了验证:
| 指标 | d3-lite | d3-nano | d3-mini |
|---|---|---|---|
| JevBench 公开套件(231 任务) | 73.2% → 74.0% | 75.3% → 75.8% | 81.8% → 81.8% |
| typed-decisions TEST(2,000 题) | 51.6% → 51.6% | 62.7% → 62.7% | 73.6% → 73.9% |
| JevBench 请求中位数延迟 | 204 → 53 ms | 173 → 69 ms | 438 → 169 ms |
| 下载体积 | 3.7 GB | 10.5 GB | 19.6 GB |
结论一句话:Core ML 版的分数和上游一致,但每个请求快 2.5–4 倍。原因是 Mac 上跑上游 PyTorch 时,DeltaNet 层会退回 Transformers 的参考实现(NVIDIA GPU 上那套快核用不了)。以上数据都来自一台 M5 Pro / 24 GB 的 MacBook Pro(跑在 GPU 上)。d3-nano 是"中间档"——速度接近 d3-lite,但在 typed-decisions 上高它 11 个点。
七、四个演示:从 PR 分类到超级马里奥
官方放了四个演示,正好说明"决策模型"能干什么:
- 给 PR 分类(d3-lite):对 1,000 个样例 PR,读完标题、描述开头和改动文件,回答两个问题——归哪个 vLLM-SR 工作组、属于什么类型的改动。每个 PR 0.12 秒,即每秒 8.3 个 PR、16.5 次决策。在真实的 vLLM-SR PR 上,d3-mini 与维护者的工作组标签对上了 168 个里的 134 个,改动类型标签对上了 182 个里的 153 个。
- 开真实网站(d3-mini):给它一个目标(打开 Travel 分类里一本五星评分的书)和一张 books.toscrape.com 的带编号截图,它自己挑下一次点击、读页面上的书、达标才停。17 个目标全部达成,每次点击约 2.2 秒。它也暴露了一个边界:d3 读值行、比大小不稳——整页一次选只到 17 中的 9;改成逐张读卡片、在代码里比较就全对了。
- 看实时视频(d3-mini):视频播放时,它每次看最近 4 秒(原生 2 fps,8 帧),回答"车在动吗""有人在骑车吗"。每次判断 Core ML 1.1 秒,而同一台 Mac 上 PyTorch 要 2.4 秒,答案大约比直播慢 2 秒。
- 打超级马里奥 1-1:d3 是通用决策模型,不是游戏智能体,这里没为马里奥做任何特别的东西。给它 JEV-9B 通关 1-1 的同款设置——马里奥在地面时游戏暂停,d3 回答关于前方特写的三个 Yes/No 问题(有没有敌人、有没有管/台阶、有没有坑),任一为"是"就跳,否则跑。结果 d3-flash 9B 在 Core ML 上开箱即通——56 次决策、每次 1.25 秒,全程没有游戏专属的提示词、示例或训练,用的就是它做路由判断时那套一样的 Choice / Yes-No 接口。用蒸馏把能力压到 d3-lite 后,65 次决策、每次 0.31 秒通关,比老师快 4 倍;而且当标签被"搜出能活下来的走法"修正后,学生能过老师自己都过不去的关卡。
马里奥那段最有启发性:一个与游戏无关的通用决策模型,靠三个是/否问题就打通了关卡——这说明"决策"这个原语足够通用,不只是给路由用的。
八、怎么用,以及它的边界
想上手,几个入口:
- Hugging Face 合集:https://huggingface.co/collections/vllm-sr/decision-30
- d3 模型卡:https://huggingface.co/vllm-sr/d3
- Mac / Core ML 版:https://huggingface.co/FluidInference/d3-coreml(每个目录都带一个基于 coremltools 的 Python 宿主)
- Swift 运行时:https://github.com/FluidInference/FluidUse 里的
D3Manager,能下载模型并回答请求
几句必要的提醒:性能数字有口径差异——d3 是内部评估,对手是榜单实测;"9B 强于上一代 27B"是特定基准上的结论,不等于全面领先,各档在不同榜单上的位次并不整齐;上下文长度未公开,做长输入设计时要自己测;论文/榜单里不少视觉任务是近似重建,和原版未必可比。
但方向是很清楚的:把"决策"从"生成"里剥离出来,做成又小又快的专用模型,让路由、护栏、工具体调用这些高频判断,能在几十毫秒内、甚至在本机完成。对任何一个正在把 Agent 往生产推的团队来说,这可能是比"再接一个更强的生成模型"更实在的一步。
作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top
本文首发于 AI人工智能时代,转载请注明出处。