☰
如何训练自己的流式安全探针:Qwen3.5-122B-A10B-singprobe训练代码与技术报告深度剖析
2026/10/16 21:16:04 网站建设 项目流程

【免费下载链接】Qwen3.5-122B-A10B-singprobe

项目地址:https://ai.gitcode.com/hf_mirrors/inclusionAI/Qwen3.5-122B-A10B-singprobe
点击查看免费下载

本文以 inclusionAI/Qwen3.5-122B-A10B-singprobe(SingProbe,流式安全探针)为蓝本,从 6.17M 探针的架构设计、注意力与 MLP 双实现代码,到训练与部署步骤,带你一步步学会如何训练自己的流式安全探针,适合 AI 安全与 LLM 推理优化的新手阅读。

什么是流式安全探针:内置,而非外挂 🛡️

大模型安全常见做法是"外挂护栏模型":等回答生成完,再跑第二个安全模型审查。这种方式有三个明显痛点:

  • 延迟翻倍:必须等完整生成后才能审查
  • 资源翻倍:需要部署一个额外的模型
  • 无法流式:只能"事后"检测,无法在 token 生成的当下干预

流式安全探针(SingProbe)换了思路:不再单独部署安全模型,而是直接在基座模型 Qwen3.5-122B-A10B 内部"抽头"(tap)隐藏状态,在生成过程中对每个 token 实时打分,一次判断三件事:

  1. 查询意图(query intent):用户问题属于哪类意图,共 8 类;
  2. 回复不安全性(unsafe):当前生成的内容是否不安全;
  3. 幻觉风险(hallucination):模型是否在"编造"事实。

解码时额外开销不足0.5%——相当于给 122B 大模型"免费"配上了护栏。

架构揭秘:6.17M 参数与三层抽头

探针的核心配置全部写在 config.json 中:

参数取值含义
model_typesing_probe_attn注意力版探针(正式发布的版本)
hidden_size3072基座模型的隐藏层维度
base_model_layer_ids[14, 30, 46]从中层、后层、末层抽取表示
num_attention_heads8探针的注意力头数
sliding_window2048每个 token 回看的最大窗口
num_labels108 类意图 + unsafe + hallucination

两个值得学习的设计点:

  • 多层抽头拼接:探针输入不是单层输出,而是第 14 / 30 / 46 层隐藏状态的拼接,输入维度为3072 × 3 = 9216。浅层偏表面特征、中层偏结构、末层偏任务语义,拼起来互补;
  • 滑动窗口注意力:sliding_window=2048表示每个 token 只看前 2048 个 token,长上下文也不会导致计算量爆炸。

代码剖析:两种探针实现任你选

完整模型代码在 modeling_sing_probe.py,包含两种可自由组合的实现,训练自己的探针时可按需选择。

方案一:MLP 探针(最简单)

SingProbeMlpModel 只有两层线性变换:

拼接隐藏状态 (9216) → Linear(9216→1024) → GELU → Linear(1024→10) → logits

它是纯逐点分类,不带上下文建模能力,训练最快、推理开销最低。如果基座模型末层表示本身可分性已经很好,这个方案往往就够用。

方案二:注意力探针(发布版本)

SingProbeAttnModel 在 MLP 基础上增加了一层自注意力:

  • proj_q / proj_k / proj_v:把多层拼接特征投影为 Q/K/V,其中 Q 拆成 8 头 × 64 维;
  • _sliding_window_attention:分块的滑动窗口注意力,保证每个位置只回看最近 2048 个 token;
  • forward:注意力输出与 Q 特征做残差融合,再经RMSNorm和线性层输出 10 个分数。

对应的配置类 SingProbeAttnConfig 通过 config.json 的auto_map注册,用AutoModel即可直接加载,训练完保存也很方便。

探针总参数仅6.17M,比 122B 基座小四个数量级,这是"开销近乎为零"的关键。

逐 token 打分为何能实现流式检测

流式安全探针的核心在于:每生成一个 token 就能立刻拿到风险分数,不用等整段输出。

  1. 解码时,基座模型为每个新 token 输出第 14、30、46 层的隐藏状态;
  2. 三者拼接成 9216 维向量,送入探针;
  3. 探针输出 10 个分数(label_0–label_9),由推理框架随 token 一并返回;
  4. 应用层根据分数阈值实时干预:改写、截断或转人工审核。

由于注意力是因果的(只看已生成内容),分数不会"偷看"未来 token——这正是流式(streaming)检测的含义。

性能表现:技术报告关键数据 📊

官方技术报告(arXiv:2608.30703)的核心结果收录于 README.md:

任务指标SingProbe参考基线
查询意图分类(6 个基准)F10.8697YuFeng-XGuard-Reason-8B:0.8714
回复安全分类(8 个基准)F10.8680Qwen3Guard-Gen-8B-strict:0.8604
流式安全(3 个基准)R-AUC / T-AUC0.9895 / 0.9304Qwen3Guard-Stream-8B-strict:0.9640 / 0.8893
幻觉检测(6 个基准)AUC0.7806DRIFT:0.8000

两个最实用的数字:

  • 正常回复误报率平均仅 0.03%,日常对话几乎不会被误伤;
  • 解码开销 < 0.5%,线上服务延迟基本无感。

用 6M 参数的探针逼近专用 8B 护栏模型,流式指标甚至反超 Qwen3Guard-Stream,投入产出比非常高。

实战:如何训练自己的流式安全探针

你不需要训练大模型本体,整个过程就是"抽特征 + 训小头",四步走:

第 1 步:设计标签体系与数据

  • 定义标签,如 SingProbe 的 10 类:8 类意图 + unsafe + hallucination;
  • 收集 (prompt, response) 样本并标注;做流式安全还需标注"第一个不安全 token 的位置",用于计算 R-AUC / T-AUC。

第 2 步:抽取隐藏状态

  • 冻结基座模型(如 Qwen3.5-122B-A10B);
  • 在选定的几层(本文参考[14, 30, 46],可按总层数调整)注册 forward hook;
  • 批量前向,保存各抽头层拼接后的 hidden states。

第 3 步:训练探针头

  • 资源有限选 MLP 探针(两个线性层,单卡可训);
  • 需要局部上下文能力就选注意力探针;
  • 损失函数用标准交叉熵,数据量不大,几小时即可收敛。

第 4 步:集成与评测

  • 用save_pretrained保存,并在config.json里注册auto_map,即可被AutoModel.from_pretrained加载;
  • 评测误报率、检测 F1、流式指标(R-AUC / T-AUC),并实测解码开销。

💡 官方训练代码已开源在 inclusionAI 的 SingProbe 仓库(inclusionAI/SingProbe),跟着跑即可,无需从零造轮子。

部署:一行命令启用护栏 ⚡

最省事的用法是通过 SGLang 集成分支启动服务时传入探针路径(详见 README.md):

python -m sglang.launch_server \ --model-path Qwen/Qwen3.5-122B-A10B \ --probe-ckpt inclusionAI/Qwen3.5-122B-A10B-singprobe \ --port 30000

接口随后为每个生成的 token 返回一个分数字典(label_0–label_9),可直接接入你的风控逻辑。注意:基座模型与探针必须成对使用(Qwen/Qwen3.5-122B-A10B+ 本 checkpoint),不能混用。

总结

  • 流式安全探针= 多层隐藏状态抽头 + 6M 级轻量探针头,让 122B 大模型以 < 0.5% 开销获得逐 token 护栏;
  • 官方提供 MLP 与注意力 两种实现,按资源与任务需求二选一;
  • 训练路径清晰:冻结基座 → hook 抽特征 → 训小头 → 注册auto_map部署,无需大规模集群;
  • 想给自己的模型加护栏?这套"探针式"方案是一个可以直接照抄的模板。

【免费下载链接】Qwen3.5-122B-A10B-singprobe

项目地址:https://ai.gitcode.com/hf_mirrors/inclusionAI/Qwen3.5-122B-A10B-singprobe
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询