d1-omni - 单次前向即出答案的 587M 边缘决策模型
d1-omni-600M 是 LiquidAI 发布的一个 587M 参数决策模型,构建在 LFM2.5-Encoder-350M 之上。它接收一段状态(文本、JSON,可带图片或语音片段)和一组具名问题,直接返回带类型的答案,不生成任何输出 token。据项目说明,它面向路由与分诊、内容审核、意图与主题分类、语音指令路由、抽取校验、重排序、智能体护栏和视觉检查等场景,而不是聊天模型。
d1-omni-600M 是 LiquidAI 发布的一个 587M 参数决策模型,构建在 LFM2.5-Encoder-350M 之上。按项目自述,它的用法与常见生成式模型不同:你给它一个状态(文本或 JSON,可附带图片或一段语音)和一组具名问题,它返回带类型的答案,且输出 token 数为零——每个答案都直接从模型在选项上的分布读出,没有生成过程,也不需要解析输出文本。它适合被放进需要「是/否」「从具名选项中挑一个」或「打分」的流水线里,例如路由与分诊、内容审核、意图与主题分类、语音指令路由、抽取校验、重排序、智能体护栏以及视觉检查。项目明确说明它不是聊天模型,不写文本。
维护者与状态
该项目由 LiquidAI 维护,仓库托管在 Hugging Face 上,任务类型为 image-text-to-text,使用 transformers 框架。仓库创建于 2026-10-05,最后更新于 2026-10-07。截至 2026-10-11,近 30 天下载量为 10030,点赞数为 100。事实表中未记录正式 release 信息,因此这里不对版本发布情况作额外推断。
主要能力
以下能力均来自项目自述(模型卡),并非第三方评测结论:
- 视觉-语言:文本与图片在同一次前向中处理;大尺寸画面会被切块,一个状态里可以放多张图片。
- 音频-语言:文本与最长 30 秒的语音在同一次前向中处理。
- 边缘尺寸:共 587M 参数,由 381M 的共享主干与决策头、94M 视觉编码器和 112M 音频编码器组成;据项目说明,各模态跑的是同一套主干权重。
- 结构化提问:问题遵循 Decision Index 模式,包含
type、instructions和criteria三类字段。支持noul(是/否)、choice(从具名选项中选一个)和score(2 到 10 个有序等级)三种题型。 - 批量调用:
system_one_batch可在一次调用中处理多条请求。 - 原始分布:
probabilities接口按选项顺序返回原始分布。
模型细节方面,项目自述给出的规格包括:视觉编码器为来自 LFM2.5-VL-450M 的 SigLIP2 视觉塔,音频编码器为 17 层 FastConformer,上下文长度为 16,384 token(文本、图像与音频位置合计),词表大小 65,536。带图片时,状态与问题文本会被截到 896 token,与训练时一致。
关于精度,项目说明模型以 float32 训练;在 GPU 上 float16 更快且能保持 float32 的答案,据其自述的检查结果,在全部文本(243 行)、图像(214 行)和音频(416 行)样本上给出的首选答案一致;项目建议避免 bfloat16,因为它在 0.8% 的文本行和 1.7% 的音频行上改变了首选答案。项目还表示,由于这是早期研究版本且仍在积极开发中,因此不公布 d1-omni-600M 的推理速度数字。
使用入口
仓库地址:LiquidAI/d1-omni-600M。
据项目说明,使用前需安装依赖,要求 transformers>=5.15:
pip install "transformers>=5.15" torch torchvision pillow soundfile
模型自带代码,因此需要以 trust_remote_code=True 加载。项目给出的最小示例如下:
import torch
from transformers import AutoModel
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float32 if device == "cpu" else torch.float16
model = AutoModel.from_pretrained(
"LiquidAI/d1-omni-600M",
trust_remote_code=True,
dtype=dtype,
).to(device)
questions = {
"refund": {
"type": "noul",
"instructions": "Is the customer asking for a refund?",
},
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Charges, refunds, invoices",
"technical": "App or site faults",
"fraud": "Suspected unauthorised use",
},
},
}
print(model.system_one("I was charged twice this month, please refund one of them.", questions))项目列出的调用接口包括:system_one(state, questions, images=None, audio=None),对单个状态及其图片或音频片段回答具名问题,媒体只编码一次供所有问题共用;system_one_batch([(state, questions[, images[, audio]]), ...]),批量处理多条请求;以及 probabilities(state, questions, images=None, audio=None),返回按选项顺序排列的原始分布。
关于输入形式,项目说明:状态可以是字符串、任意 JSON 值,或在图片/音频本身就是整个状态时传 None;images 为一张 PIL 图片或其列表;audio 为一段 16 kHz 单声道片段,采样为 int16 或浮点。单条请求只能带图片或音频之一,同时传入会抛出 ValueError。每次调用返回 {"answers": {name: answer}, "usage": {"input_tokens": n, "output_tokens": 0}},其中 input_tokens 统计主干读取的每一个位置。项目还说明,文本答案使用存储在 config.json 中的按题型温度进行校准,图像与音频答案则是训练所得的 softmax 输出。
许可与限制
该仓库的许可证在事实表中记为 other,即自定义许可,具体条款以仓库中的 LICENSE 文件为准,本文不对其可否商用等问题作出判断。
项目自述中列出的已知限制与适用边界包括:
- 音频能力是在英语使用者与助手之间的请求上训练的,训练任务涵盖话语类型、主题以及说话人想要什么;片段会被截断到 30 秒。
- 带图片时,状态与问题文本会被截到 896 token,这是训练时的设定。
- 单条请求不能同时携带图片和音频。
- 它不是聊天模型,不生成文本,因此不适用于需要自由文本输出的场景。
- 项目称其为早期研究版本,仍在积极开发中,因此未公布推理速度数据。
此外,项目自述提到其内部评测中未纳入 HelpSteer2,原因是它可能与 d1-omni-600M 的训练数据存在重叠。