第14章「电话响了」¶
视角:Devon Park(现在) 时间:现在,Mountain View
电话响的时候是下午三点零七分,太平洋夏令时。
Devon Park坐在他现在的办公室里——不是公司CEO那种可以俯瞰整个楼层的角落办公室,是一间中等大小的房间,有一扇朝西的窗户,一张电动升降桌,两把给来访者坐的椅子。他正在用Obsidian修改一篇论文——标题是《自回归语言模型中异常embedding拓扑结构的系统检测方法》,这大概是他独立撰写的第十七篇论文,从剑桥带来的那个研究项目演化到现在已经是第四版。目前他在Mountain View,创办了一家和剑桥做可解释性研究的实验室同根源但运营独立的安全咨询公司,团队六人。
手机屏幕亮了,区号415——旧金山。他不认识这个号码。他现在比以前更不愿接陌生来电了——不是因为会议多,是因为他每隔几天就会收到一类电话,开头是"我们对你团队的研究方向非常感兴趣",后面通常会跟一个他需要花半分钟才能想起来的商业模式的提议。他等了两声,接了。
"您好。请问是Devon Park博士吗?"
声音年轻,男声,大概二十五六岁。语速偏快但不是紧张——是那种在一件事上积累了足够多的兴奋感之后需要马上讲给能听懂的人听的语气。轻微的东西岸混合口音——大的元音偏东海岸,但某些辅音带着加州式的松弛。
"我是。"
"我叫Eli。我在——"他停顿了一下,可以听到他那边翻页的沙沙声——实体的纸张,不是平板——"我在一家做模型安全审计的第三方机构。我不能在电话里说名字,这是客户要求。但我想跟您讨论一份报告。"
"什么报告?"
"编号SA-2011-047。标题是——您等一下——"更多翻页声——"'语义空间异常环形结构的检测与复现报告——TH-847批次数据'。作者:Devon Park。提交日期:2011年5月17日。收件人:安全组组长。"
Devon听到SA-2011-047这个编号的时候,右手握着的笔停在了纸上。他不知道自己的笔停了。他是过了几秒才注意到的——他正在写一个关于曲率检测阈值设定的注释,写到"阈值"的"阈"字,笔触在"门"的左半边停住了。"阈"的右半边是"或",他没写。
SA-2011-047。他根本不记得这个编号。他写的报告里有编号系统,但那些编号从未进入他的长期记忆——它们属于文档管理系统,不属于他。
"这份报告在被读取了——您是今天第一个读取它的人?"他问。
"不是今天。是四周前。我们发现了一组异常,然后用四个星期追溯到了这份报告的来源。"
"什么异常?"
Eli深吸了一口气。他那边传出了椅子被往后推的声音——像是他在书桌前站起来又坐下了——然后是一些远处的键盘声。他在切窗口。
"是这样的。我们的机构对多个已部署的商业模型进行标准化的安全审计。审计评测集里包含大约两千项自动检测规则——覆盖偏见、有害输出、对抗性鲁棒性、以及一些不太常规的维度——比如embedding空间的拓扑异常扫描。其中有一条规则——它不太像一条规则,更像一种形状检测器——在三个独立模型里触发了阳性。"
"你们无法——"
"复现您报告里的异常。"Eli替他说完了。"我们尝试过了。用SA-2011-047里提供的原始文本TH-847-00291在我们的测试环境中重建embedding投影——结果正常。没有环状结构。投影是一条普通的开曲线,曲率完全在分布预期内。"
Devon等着。他知道还有第二个句子。用了"但是"或"然而"的句子——这种对话结构他经历过太多次,听得出来。
"但是在三个独立模型中我们分别看到了三个环。不是同一条文本产生的——而是完全不同的文本、在完全不同的prompt下生成的embedding中——各自形成了与SA-2011-047中描述的形态特征完全匹配的环形结构。每一个都是——"
"极小、极稳定、对温度完全不敏感。"
电话那头沉默了大约三秒。这是年轻人第一次意识到对面的人不需要中间任何解释步骤——他已经走到了结果之前。
"是。"
Devon把自己的椅子稍微往后推了一点,站起来,走向窗边。窗外是Mountain View他已经在过去的几年里看过无数次的风景——一排一排雷同的低层办公建筑,红色屋顶、白色墙面、方形的树。没什么好看的。他看窗外不是为了视觉内容;他需要一个动作让他的大脑进入更大的工作记忆空间。站起来、移动、透一口气——这些都是他无意识地用身体触发的模式。
"三个不同架构、不同公司、不同训练管道的模型,"他说的不是疑问句,是陈述句——他在试图替对方把结果框架说出来。
"对。"
"各自用不同的文本触发了同一个环形结构。拓扑特征匹配。"
"精确。我们的内部记号为M-37、M-82和M-104。没有供应商信息的细节——我们签署的保密协议禁止透露——但我可以告诉你M-37是一个对话助手模型,M-82是一个代码生成模型,M-104是一个用户内容审核模型。三种截然不同的应用场景。三组不同的训练数据。"
"三组训练数据——都来自不同管道。"
"供应的源头是不同的。但——"Eli的句子又停住了。这次不是犹豫,是他在组织措辞——Devon听得出他脑子里正同时运行着多个结论,在选择先说哪一个。
"但三个模型都包含TH-847批次数据。"
静。
"你们能确认这一点?"
"确认了。我们回溯了所有三个模型训练数据集的组成清单。M-37——对话助手——它早期的预训练语料中有一大部分来自对标和标注管道供应的对话数据。TH-847就在其中。"手指敲在键盘上的声响。"M-82——代码生成模型——它的非代码训练数据中包含了来自同一条供应链的对话数据集。我们交叉用语料标识符和加入批次号的文档叠了一遍——找到了TH-847。M-104——审核模型——它使用的标注数据集中有TH-847的标注样本作为训练参考。"
Devon发现自己在点头。不是对着电话点头——是站在窗边对着空白的墙壁点头。一种无意识的肌肉运动。
"所以三个模型——完全独立、不同团队、不同应用场景——都在自己的训练数据中共享了同一批标注数据。"
"是的。TH-847就像——"Eli在找词——"像一个在供应链里分发出去的种子。它被卖给了不同的买家,然后各自把它种进了自己的数据田地里。没有任何一个买家知道其它买家也买了同一批数据。"
"但是现在三个人的田里长出了同一株植物。"
"对。"
Eli那边又一次翻动纸页。Devon能听出那个节奏——不是随意翻阅,是循着一张事先准备好的问题清单,逐条核对,确保每一个关键信息点都不被遗漏。这个习惯他在年轻的研究员身上见过很多次——他们相信一套结构化的检查清单能降低焦虑。通常确实能。但今晚的检查清单上有一些条目,是任何检查清单都没有准备好的。
Devon开始在他的记忆中进行工作。他的脑海自有一套这样进行检索的路径——先分时间段(哪一年?哪家公司?)、再分日志类型(属于哪一套检测系统?输入源是什么?)、最后精确目标(在什么环境下触发了什么异常?)。十五年前。Mountain View。数据清洗脚本。异常检测扩展模块。TH-847。他一步一步地在心里走这条路径,走得很快——但不草率,像是放回原位的每一块石头都要确认它没有压住什么。最近几年他越来越少调用这套检索体系了。日常的安全咨询工作不需要追溯十五年前的日志——它们的问题是结构化的、新的事件,有明确的输入和输出,不需要回头。但一旦他需要检索,该系统和他三十三岁时一样好用:他把索引推入对应的脑区,然后等待那个东西弹出来。
弹出来的是一盏凌晨两点的灯。灯下的荧幕。荧幕上三行红字。
"TH-847。"他重复道。"编号TH-847。五十万条对话数据。"
"你在报告里写了'建议溯源至标注员'。"Eli说。"我们也试着追溯了——但管道日志里的标注员ID在众包平台的系统中对应的是一个已经被回收的账户。那个人离开了标注平台——可能是换了工作、或者换了平台、或者——在标注数据的产业中,标注员是不被鼓励留下个人痕迹的。他们是管道的一部分,不是历史的作者。"
"但那个标注员的存疑标记留下来了。"
"是的。QF_3。'直觉性异常,无法归类'——这条标记在系统里通过了一道又一道自动脚本的清理——去重、格式归一化、去敏感信息——但保留下来了。像是有人在写清理脚本的时候在QF_3这一行上停顿了一下、觉得不应该删。也可能是没人注意到它。两种可能性在概率上都是均等的。"
Devon没有说话。他在想一件事:他的异常检测脚本——他亲手写的、不在任何人任务书上的那三百行Python——和那个标注员在QF_3标签上的数秒停顿,在时间轴上相隔数月,彼此不知道对方的存在。但它们的向量指向同一个方向。两件事在语义空间中的投影,如果你画出来——
——就是一个环。
他看着纸上那里。一个未闭合的圆。缺口半毫米。他想起儿子第一次看他画这个圆的时候——"为什么不停下来?"孩子问。他当时无法解释为什么。现在他能解释了:因为你没有权利替它闭合。环闭合的权力属于形成环的那个东西本身。
"你知道是谁做了环形检测的那条规则吗——那条你说的'形状检测器'?"他问道。
"知道。"Eli的声音忽然变了——那种语气里的东西不是犹豫,是一种在不确定自己的听众准备好了没有时的微妙的缓慢。像一个递出关键文件的人在确认对面双手平伸。
"匹配规则是一个实习生离职后写的。"
——实习生。十五年前凌晨实验室里的那个环。在它被看见之前,一个兼职标注员已经用她的手在"存疑"的标签上停了大概几秒钟。
她们谁也不知道对方的存在。不知道自己在管道中离彼此有多近。不知道环的一端是自己的拇指,另一端是自己的眼睛。