【免费下载链接】Qwen3.8-27B-singprobe
Qwen3.8-27B-singprobe是一个构建在Qwen/Qwen3.8-27B之上的流式安全探针(streaming guardrail)模型:它不额外运行独立的安全检测模型,而是直接复用基座模型在解码过程中产生的隐藏状态(hidden states),在每一个 token上实时打出三类分数——查询意图、回复不安全性、幻觉风险,解码开销低于0.5%。下面从[20, 41, 62]这三层隐藏状态切入,看懂它是如何以 10.1M 参数的"零头"成本输出 10 个安全信号的。
🧐 什么是 SingProbe:一个"内嵌式"安全仪表
传统的 LLM 安全防护通常要在主模型之外再挂一个独立的安全分类模型,对输入或输出做一遍再检测——这带来额外的推理延迟和部署复杂度。
SingProbe 的思路完全不同:大模型内部本来就"知道"自己在说什么。它在基座模型生成时"搭车"取用模型内部信号,像给发动机装了一块仪表,而不是再装一台发动机:
| 核心规格 | 数值 |
|---|---|
| 基座模型 | Qwen/Qwen3.8-27B |
| 探针参数量 | 10.1M(不到基座的 0.05%) |
| 截取的隐藏层 | [20, 41, 62] |
| 输出标签 | 8 种意图 + 不安全 + 幻觉,共 10 个 |
| 解码开销 | < 0.5% |
也就是说,安全检测的算力开销,被压缩到了几乎可以忽略的程度。
🔍 [20, 41, 62]:为什么是这三层?
在 Transformer 大模型中,每个 token 会依次穿过数十层网络,每层的输出都是一个5120 维向量(即hidden_size)。层数越靠后,向量里"任务语义"越浓;越靠前,则保留更多词法、句法层面的信息。
SingProbe 选择了三个位置作为"观测点":
- 第 20 层(浅层):偏词法/意图信号,擅长回答"用户在问什么类型的问题"
- 第 41 层(中层):过渡层,补充上下文中的语义细节
- 第 62 层(深层):接近最终决策,蕴含最完整的任务级语义
三层各取 5120 维,拼接后得到一个15360 维的"安全特征向量"。这一设计在 config.json 中可以找到对应配置:
base_model_layer_ids: [20, 41, 62]—— 定义截取的层号hidden_size: 5120—— 每层隐藏状态的维度num_labels: 10—— 输出的标签数量
💡 选择 3 层是信息与成本的平衡:单层信息不够充分,层数多了则拼接向量和探针计算量都会上升。浅—中—深三点采样,用最小代价覆盖了模型内部的完整信号带。
⚡ 分步拆解:三层向量如何变成 10 个安全信号
整个转换过程发生在 modeling_sing_probe.py 中的SingProbeAttnModel(见 SingProbeAttnModel),可以分为三步:
第 1 步|拼接三层信号基座模型解码时,第 20、41、62 层的隐藏状态被直接取出并拼接,得到 15360 维输入。探针在入口处会严格校验维度(见 _validate_input),保证只接受"正确的层号组合",防止误配。
第 2 步|微型注意力探针做上下文聚合拼接向量不是简单丢给一个分类器,而是先经过一个极小的注意力模块:Q 投影到 8 头 × 64 维,K/V 各投影到 64 维,再用 滑动窗口注意力(窗口 2048)在本地上下文范围内做因果聚合。这一步让探针能理解"当前 token 的前后文",而不是孤立地看一个词——这正是它能做到流式逐 token 检测的关键。
第 3 步|RMSNorm + 分类器输出 10 个分数聚合后的向量经过o_proj残差连接、RMSNorm 归一化,最后由线性分类器输出10 个 logit,对应label_0–label_9:8 种查询意图、1 个不安全分、1 个幻觉风险分。
另外,modeling_sing_probe.py 中还内置了一个更轻量的MLP 变体(SingProbeMlpModel):仅两层全连接(15360 → 1024 → 10),适合对极致延迟敏感的场景,配置定义在 configuration_sing_probe.py 中。
📊 效果如何:接近独立安全模型的水平
按 README.md 公布的结果(均为多个基准的均值,数值越高越好):
| 任务 | 指标 | SingProbe | 参考基线 |
|---|---|---|---|
| 查询意图分类(6 个基准) | F1 | 0.8683 | YuFeng-XGuard-Reason-8B:0.8714 |
| 回复安全分类(8 个基准) | F1 | 0.8676 | Qwen3Guard-Gen-8B-strict:0.8604 |
| 流式安全(3 个基准) | R-AUC / T-AUC | 0.9881 / 0.9305 | Qwen3Guard-Stream-8B-strict:0.9640 / 0.8893 |
| 幻觉检测(6 个基准) | AUC | 0.8035 | DRIFT:0.8000 |
部署层面两个关键数字:良性回复的误报率平均仅 0.03%(5 个数据集平均),解码开销 < 0.5%——对流式安全的检测速度而言,它甚至超过了专用 8B 流式安全模型的 T-AUC。
🚀 快速上手:一条命令启用流式安全防护
SingProbe 通过 SGLang 或 vLLM 的集成分支支持,启动服务时用--probe-ckpt指定本仓库即可,例如:
python -m sglang.launch_server \ --model-path Qwen/Qwen3.8-27B \ --probe-ckpt inclusionAI/Qwen3.8-27B-singprobe \ --port 30000之后每生成一个 token,服务端就会返回一个label_0–label_9的分数字典,应用侧可以据此做意图路由、实时拦截或幻觉告警。⚠️ 注意:探针必须与基座模型严格配对使用(Qwen/Qwen3.8-27B+ 本 checkpoint),换基座模型会导致层号错位而失效。
📁 核心文件导航
| 文件 | 作用 |
|---|---|
| config.json | 探针的完整配置:层号[20, 41, 62]、维度、注意力头数、滑窗等 |
| configuration_sing_probe.py | SingProbeAttnConfig/SingProbeMlpConfig配置类,定义input_size = hidden_size × 层数 |
| modeling_sing_probe.py | 探针主体:注意力版 SingProbeAttnModel 与轻量版 SingProbeMlpModel |
| README.md | 模型说明、基准结果与 Quick Start |
🎯 一句话总结
Qwen3.8-27B-singprobe 证明了:安全信号不必来自模型外部。从第 20、41、62 层各取一"帧"隐藏状态,拼接后经一个 10.1M 参数的微型注意力探针,就能在逐 token 流式输出的同时完成意图识别、安全分类与幻觉检测——开销不到 0.5%,误报率 0.03%。对于需要实时护栏的 LLM 应用,这是一种值得借鉴的"内生式"防护架构。
【免费下载链接】Qwen3.8-27B-singprobe
相关推荐
Qwen3.5-4B-singprobe核心架构解析:为什么在第9、19、30层提取隐藏状态
Qwen3.5 4B singprobe核心架构解析:为什么在第9、19、30层提取隐藏状态 Qwen3.5 4B singprobe(SingProbe)是一
如何训练自己的token级安全探针?Qwen3.8-27B-singprobe(SingProbe)训练方法与技术报告解读
如何训练自己的token级安全探针?Qwen3.8 27B singprobe(SingProbe)训练方法与技术报告解读 本文以开源模型 Qwen3.8 27
Qwen3.5-397B-A17B-singprobe 工作原理揭秘:为何复用隐藏状态就能实现零额外模型的安全探测
Qwen3.5 397B A17B singprobe 工作原理揭秘:为何复用隐藏状态就能实现零额外模型的安全探测 Qwen3.5 397B A17B sing
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考