Cloudflare 发布 9B 多模态决策模型 Clef-Flash 完整解析:单次前向传播从状态到决策,零文本生成零输出解析
【免费下载链接】clef-flash项目地址: https://ai.gitcode.com/hf_mirrors/Cloudflare/clef-flash
Clef-Flash 是 Cloudflare 开源的 9B 多模态决策模型:它把"当前状态"(文本、JSON、图片或视频)与一组带类型的结构化问题一起读入,在单次前向传播中为每个问题的所有允许选项直接输出概率——没有自由文本生成,也没有输出解析环节,中位延迟低至 38.8 毫秒 ⚡
🧩 一、Clef-Flash 是什么:把"判断"从生成中剥离
传统做法是让大语言模型"生成一段 JSON 答案",再用解析器读取。这个过程有两个天然痛点:
- 生成要逐 token 等待——哪怕答案只有几个词,也要自回归解码完;
- 解析可能失败——模型写错格式、多输出一个字,整条结果就废了。
Clef-Flash 从架构层面绕开了这两个问题:它不做任何文本生成,模型输出的是每个问题的选项 logit,对每个问题做一遍 softmax 就得到概率分布。响应体里output_tokens恒为0,这不只是数字游戏,而是架构决定的事实。
| 关键属性 | 说明 |
|---|---|
| 参数规模 | 9B(总计 9,409,813,744 参数,约 18.8GB bf16 权重) |
| 基座模型 | Qwen3.5-9B(含视觉编码器)后训练 |
| 输入 | 状态(文本 / JSON / 图片 / 视频)+ 结构化问题 |
| 输出 | 每个问题一个概率分布,无任何文本生成 |
| API 兼容 | Jev / SystemOne(POST /v1/systemone) |
| 许可证 | Apache-2.0 |
项目入口文档见 README.md,模型元信息在 config.json 中声明。
📥 二、输入长什么样:状态 + 三类问题
一条记录(record)由两部分组成:
state:任意字符串或 JSON,描述"待决策的情形";questions:问题 ID 到问题的映射,支持三种类型。
三类问题覆盖了绝大多数"系统决策"场景:
| 类型 | 含义 | 返回内容 |
|---|---|---|
noul | 真/假判断 | true 的概率 |
choice | 命名多选 | 选中项choice、置信度confidence、全选项probabilities |
score | 有序评分 | 期望分score、置信度、量规legend、各档概率 |
一个典型的输入长这样(JSON 格式,来自 README.md):
{ "state": {"invoice": {"vendor": "Acme", "total": 1250.0, "currency": "USD", "status": "overdue"}}, "questions": { "status": { "type": "choice", "instructions": "What is the invoice status?", "criteria": {"paid": "Invoice is paid.", "overdue": "Invoice is past due.", "draft": "Not sent."} }, "large": {"type": "noul", "instructions": "Is the total above 1000 USD?"} } }所有问题会被联合决策(jointly decided):模型一次性读取完整状态与完整问题集,各问题的答案共享同一份证据理解,而不是逐题孤立判断。
🧠 三、模型内部:9B 主干 + 轻量联合模式头
Clef-Flash 由两部分组成,权重分别存放:
主干(Backbone)
即 Qwen3.5-9B 语言模型加视觉编码器,以标准分片 safetensors 保存:
- model-00001-of-00004.safetensors ~ model-00004-of-00004.safetensors,权重映射见 model.safetensors.index.json
- 32 层、隐藏维度 4096、词表 248,320、最大位置 262,144(256K 上下文)
- 采用线性注意力与全注意力混合排布(每 4 层中 1 层全注意力),兼顾长序列效率
- 视觉编码器 27 层,16×16 图像块、时间块为 2,支持图片与视频帧输入
联合模式头(Joint Schema Head)
这是一个"小而精"的 Transformer 头,权重在 joint_head.safetensors,结构超参在 joint_head_config.json:宽度 1024、16 头、2 层证据路由 + 4 层联合评分、前馈 4096。
它的工作原理可以概括为三步(实现见 joint_schema_model.py#L281-L459):
- 读证据:主干一次前向得到整条序列的隐藏状态,模式头把"每个问题的描述位置"和"每个选项的描述位置"分别池化成向量;
- 路由:2 层交叉注意力(
EvidenceRoutingLayer,见 joint_schema_model.py#L242-L278)让各选项向量主动从整段状态中检索、聚合与它相关的证据; - 打分:4 层评分网络对所有问题、所有选项联合打分,融合"词嵌入语义相似度先验"与"联合证据相似度 + 残差打分器"两路信号(带可学习门控),最终每个选项得到一个 logit。
也就是说,一次前向传播 = 主干理解一遍 + 模式头给全部问题全部选项打分,没有解码循环。
| 文件 | 作用 |
|---|---|
| joint_schema_model.py | 记录编码、批处理、模型本体与systemoneAPI |
| joint_head.safetensors | 联合模式头权重 |
| joint_head_config.json | 模式头结构超参 |
| tokenizer_config.json、processor_config.json | 分词器与图片/视频处理器配置 |
| chat_template.jinja | 对话模板 |
| LICENSE | Apache-2.0 许可 |
🚀 四、快速上手:三步拿到第一个决策
官方测试环境为torch2.11 +transformers5.10.2,单张 H200 即可运行;使用图片/视频输入还需pillow。
from huggingface_hub import snapshot_download path = snapshot_download("Cloudflare/clef-flash") sys.path.insert(0, path) from joint_schema_model import collate_records, encode_record, load_release_model model, processor = load_release_model(path, device="cuda") record = { "state": "Our checkout started returning errors and orders are blocked.", "questions": { "outage": {"type": "noul", "instructions": "Is a service down?"}, }, } encoded = encode_record(processor.tokenizer, record, processor=processor) batch = collate_records([encoded], processor.tokenizer.pad_token_id, torch.device("cuda")) logits = model(batch)[0] # 每个问题一组 logit,softmax 即概率几个实用细节:
- SystemOne 直连:joint_schema_model.py#L546-L576 的
systemone()直接接收 Jev/SystemOne 的/v1/systemone请求体并返回同结构响应,包含model、按问题 ID 索引的answers和usage; - 多模态输入:在记录里加入
images(PIL 图片)或videos(帧数组)即可,且纯文本与多模态记录可混排在同一个 batch; - 长度控制:
encode_record支持max_length(默认 16,384 tokens)与max_state_tokens,可为状态部分单独限长。
📊 五、基准成绩:准确率全面在线,延迟是杀手锏
在 Cloudflare 内部运行的 Decision Index 0.2.1 套件中,Clef-Flash 在 35+ 项基准上与更大版本的 Clef、竞品 Jev 等正面对比(完整数据见 README.md)。挑几个代表性项目:
| 基准 | Clef-Flash | Jev | 说明 |
|---|---|---|---|
| BFCL(用例精确率) | 98.8 | 95.8 | 函数/工具调用 |
| API-Bank(准确率) | 93.1 | 88.2 | API 决策 |
| 家电模拟器(用例精确率) | 97.7 | 52.3 | 模拟器决策 |
| WinoGrande(准确率) | 97.5 | 92.0 | 常识推理 |
| HellaSwag(准确率) | 98.6 | 94.5 | 常识推理 |
| MMLU(准确率) | 91.8 | 91.7 | 通用知识 |
| ForecastBench(Brier,越低越好) | 10.6 | 17.4 | 概率预测质量 |
| 中位延迟(ms) | 38.8 | 524.1 | 越低越好 |
| p95 延迟(ms) | 122.4 | 536.0 | 越低越好 |
延迟优势直接来自架构:单次前向、零解码。38.8ms 的中位延迟意味着它可以放在在线请求链路里做实时分流、分类与判断,而不必像生成式方案那样等待数百毫秒。
端到端业务工作流(Typesafe Evals,四个业务场景)上,Clef-Flash 同样与更大版本 Clef、Jev 处于同一水平线:
| 工作流 | 指标 | Clef-Flash |
|---|---|---|
| 客服 | 精确动作 | 77.0 |
| 发票处理 | 精确动作 | 57.1 |
| 安全事件 | 精确动作 | 61.7 |
| Agent 轨迹可观测性 | 主动作 | 69.8 |
✅ 六、总结:什么场景该选它
Clef-Flash 适合"系统需要快速、结构化、可审计的判断"的场景:
- 🎯实时在线决策:客服分流、工单分派、安全事件分级、订单/发票处理——毫秒级响应,无需等待文本解码;
- 🔒生产级可靠性:输出天然结构化,不存在"JSON 解析失败"这类故障模式,每个答案自带置信度与完整概率分布;
- 🖼️多模态开箱即用:同一套接口同时吃文本、JSON、图片和视频,且可混合批处理;
- 🔌标准 API 兼容:与 Jev / SystemOne 接口完全兼容,迁移成本低。
如果你想要更强的综合推理(如 GPQA、BBH 等通用基准),可以看同系列更大尺寸的 Clef;而 Clef-Flash 的定位很明确——用 9B 的体量,把"从状态到决策"这件事做到又快又稳。
<output_articles/>
【免费下载链接】clef-flash项目地址: https://ai.gitcode.com/hf_mirrors/Cloudflare/clef-flash
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考