9.2 跟踪自动化


9.2 跟踪自动化

本节摘要:9.1 的节奏靠人记必然断档——月度十分钟的事,第三个月就会变成"下个月再说"。本节交付跟踪自动化的最小骨架:五个组件——调度(Windows 任务计划程序 / cron 定时触发,写法示意以官方文档为准)、锚点重跑(调 6.1 的盲测脚本跑锚点子集)、比对(5.2 的指纹比对 + 锚点分对基线)、判定(复用 5.1 判定卡的优先级:Invalid → Match → 异常类型 → Suspicious)、通知与留档(判定卡进 drift_log.csv,异常才通知人)。核心脚本 drift_monitor.py 纯标准库可直接运行:读基线与当前快照、算漂移量、按阈值出判定卡、追加漂移日志——阈值的定法有讲究:告警线 = 基线自噪声的 2 倍(5.2 留档时重复跑 2~3 轮测出来的 σ),而不是拍脑袋的固定值。误报治理一条纪律:告警先过 Invalid 自检清单(对照题、网络、配额、题集版本)再通知人——狼来了三次之后,没有人再理监控。

学习目标

阅读完本节,你应当能够:

  1. 说出五组件骨架各自的职责与复用的前章工具。
  2. 跑通漂移监测脚本并读懂判定卡输出。
  3. 用基线自噪声推导告警阈值,而不是拍固定值。
  4. 执行误报治理纪律,守住监控的公信力。

一、五组件骨架

┌─ ① 调度 ──────── 任务计划程序(Win)/cron(Linux) 每月 1 日 09:00 触发(写法示意) ├─ ② 锚点重跑 ─── 复用 6.1 blind50.py 跑锚点子集(同题同参数) ├─ ③ 比对 ──────── 复用 5.2 fingerprint_diff 思路 + 锚点分对基线 ├─ ④ 判定 ──────── 复用 5.1 判定卡优先级出卡 └─ ⑤ 通知与留档 ── drift_log.csv 追加记录;非 Match 卡才发通知

组件②③④在本书前半/中部全部交付过——自动化不是新方法,是把手工流程钉在时间轴上

二、漂移监测脚本

# drift_monitor.py(纯标准库,可直接运行;调度方式见正文) """跟踪自动化骨架:读基线与当前快照 -> 算漂移量 -> 按阈值出判定卡 -> 追加漂移日志。""" import datetime BASE = { # 示意:接入期基线(锚点分百分制 + 指纹一致率 + 元数据) "anchor_score": 90.0, "self_noise": 2.0, "fingerprint_match": 0.98, "model_meta": "fam-x-7b", } CUR = { # 示意:本月快照 "anchor_score": 84.0, "fingerprint_match": 0.71, "model_meta": "fam-x-7b", "probe_ok": True, "sample_n": 20, } def card(base, cur): """复用 5.1 判定卡优先级:Invalid -> Match -> Rerouted/Downgrade/Unlisted -> Suspicious。""" if not cur.get("probe_ok", False) or cur.get("sample_n", 0) < 15: return "Invalid", "先修探针(对照题/网络/配额),再谈漂移" delta = cur["anchor_score"] - base["anchor_score"] noise = base["self_noise"] * 2 # 告警线 = 基线自噪声的 2 倍 if abs(delta) <= noise and cur["fingerprint_match"] >= 0.9 and cur["model_meta"] == base["model_meta"]: return "Match", "一切在噪声带内,留档" if cur["fingerprint_match"] < 0.85: return "Downgrade", f"指纹一致率 {cur['fingerprint_match']:.2f} 越限 + 锚点分 {delta:+.1f}pt" if cur["model_meta"] != base["model_meta"]: return "Unlisted", f"元数据变化 {base['model_meta']} -> {cur['model_meta']}" return "Suspicious", "单项越限但证据不足,加密观测一轮" if __name__ == "__main__": t, msg = card(BASE, CUR) today = datetime.date.today().isoformat() print(f"[{today}] 漂移监测:锚点 {BASE['anchor_score']:.0f} -> {CUR['anchor_score']:.0f}," f"指纹 {BASE['fingerprint_match']:.2f} -> {CUR['fingerprint_match']:.2f}") print(f" 判定卡 [{t}] {msg}") row = f"{today},{t},{CUR['anchor_score']:.1f},{CUR['fingerprint_match']:.2f}\n" with open("drift_log.csv", "a", encoding="utf-8") as f: # 追加式漂移日志 f.write(row) print(f" 已追加 drift_log.csv:{row.strip()}") print("告警纪律:出 Match 之外任何卡 -> 先跑 Invalid 自检清单,再通知干系人")

一次运行的真实输出(实测,2026-09-22 运行,示意输入;日期为你运行当日):

[2026-09-22] 漂移监测:锚点 90 -> 84,指纹 0.98 -> 0.71 判定卡 [Downgrade] 指纹一致率 0.71 越限 + 锚点分 -6.0pt 已追加 drift_log.csv:2026-09-22,Downgrade,84.0,0.71 告警纪律:出 Match 之外任何卡 -> 先跑 Invalid 自检清单,再通知干系人

示例的读法:锚点分掉了 6 个点(超过 2σ=4 的告警线)、指纹一致率从 0.98 掉到 0.71——行为与质量同向越限,判定卡直接给 Downgrade。注意脚本里 CUR 是示意内嵌数据;真实使用时它来自组件②③的输出(盲测脚本记分 + 比对脚本的 mean_sim),用 json.load 读入即可。

调度的接法(写法示意,以官方文档为准):Windows 用任务计划程序建"每月"任务指向 python drift_monitor.py;Linux/macOS 用 crontab 加一行 0 9 1 * * python /path/to/drift_monitor.py。通知从简:非 Match 卡时让脚本 print 的内容直接进调度器的邮件/日志通道即可,不必引入消息框架。

三、阈值怎么定:从自噪声推,不拍脑袋

告警线的正确来源是基线自己的波动:5.2 留档时把锚点集重复跑 23 轮,取分数波动的标准差 σ(自噪声),告警线定为 2σ——这意味着正常波动只有约 5% 概率误触(正态近似,示意口径)。常见错误三连:定固定值("掉 5 分报警"——不同题集的 σ 天差地别)、定得太紧(每周误报,两周后所有人屏蔽通知)、定得太松(真漂移了也绿着)。指纹一致率的阈值同理:基线重复比对 23 次的最低值再留余量。

四、误报治理:Invalid 自检清单

任何非 Match 判定在通知干系人之前,先过四项自检(5.1 纪律的自动化版):

自检项 查什么 常见凶手
对照题 题集里预埋的"必答题"答对了吗 探针被改、题目泄漏进训练数据(4.1 反噬)
网络/配额 调用是否全部成功返回 限流导致的截断回答拉低均分
题集版本 跑的是冻结版锚点吗 有人"顺手"改了题面
采样参数 temperature/seed 与基线一致吗 某次重构丢了参数

💡 监控的公信力是消耗品:三次误报之后,第四次的真警报也会被当成误报。宁可告警慢半步(先自检再通知),不可告警滥一次。

五、从个人脚本到团队实践

三个台阶:个人(本节脚本 + 月度调度)→ 小团队drift_log.csv 进共享目录,判定卡月会过目 5 分钟,7.3 报告 ⑦ 区块按它更新)→ 体系化(回归集、线上监控、告警治理、多环境——转《Evals 实战》第 3 章,那是建设者的装备)。判据仍然是 0.2 分工表那句话:别人出的分数怎么用看本书,自己出的分数怎么造看那边——当你的跟踪需求超过"每月十分钟",就到换书的时候了。

本节要点回顾

  1. 五组件骨架:调度、锚点重跑、比对、判定、通知留档——②③④全是前章工具的复用。
  2. 脚本核心:基线 vs 当前快照 → 漂移量 → 判定卡 → drift_log.csv,纯标准库。
  3. 阈值纪律:告警线 = 基线自噪声 × 2,从重复轮实测推,不拍固定值。
  4. 误报治理:非 Match 先过 Invalid 自检四项再通知——公信力是消耗品。
  5. 三个台阶:个人脚本 → 团队月会 → 体系化回归集(《Evals 实战》第 3 章)。

至此全书方法论闭环:从 0.1 的三问(考什么、谁判、跟谁比)出发,经过读法(第 13 章)、折价(第 45 章)、自测(第 6 章)、决策(第 7 章)、场景(第 8 章),回到一个每月自动运转的监测循环。附录 A/B/C 是随查手册——术语、平台速查与练习题。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U