你在中转站选的模型可能被偷偷调包:输入一个随机数,就能验明正身
- 你从中转商或聚合平台买 AI,点的是一个名字,收到的是一段文字,中间没有任何东西能证明回答你的就是你选的那个。已经有人查过 31 个卖 Llama 的商用接口,11 个的输出跟厂商放出来的模型对不上。
- 验它的办法只要一句话:反复让它「说个 1 到 100 的随机数」,它翻来覆去就说那几个数,而且各家偏爱的数字都不一样。这张答案分布表就是身份指纹,问一次只花一个输出 token。
- 这招为什么躲不过:跑分测的是模型答得对不对,指纹测的是它在几个都说得过去的答案之间怎么分配概率。悄悄换压缩版这类操作,恰好会扰动指纹所读的那层概率分配,瞒不住。
- 多准、多便宜:40 道题验一个接口,判错率 7.3%,差不多每 14 次错一次;只用 8 道题(约 120 次查询)也能到 10.6%。一次审计只要几分钱,同一个接口可以天天复检。
- 最扎眼的发现:布拉格经济大学的 Tomáš Bruckner 把 165 个模型全测了一遍,总共只花 34.44 美元。一个号称自研专有旗舰的接口(
writer/palmyra-x5),指纹跟开源 Qwen 近到分不出来(数字见导语),细节在「体检结果」那节。
你付钱点的模型,未必就是回答你的那个
你花钱点的是顶级模型,真正回答你的却可能是个便宜货。像 OpenRouter 这样的聚合商,一个入口接入几百个模型,确实省事。但你点的只是一个名字,请求最后落到哪台机器、上面跑的是什么,你完全看不见,也没有任何凭证。
想查也真不好查:你是外人,拿不到权重(模型本体的那一大包参数文件),也拿不到 logits模型给每个候选答案打的原始分数。很多生产接口只把最终文字返给你,这个分数根本不给;水印、后门那类办法(都得预先在模型里埋暗记)只有模型主人自己玩得转,帮不了你;而且你得盯着几十个接口反复查,每查一次还得足够便宜。
已有的几种办法,分别卡在哪里
| 办法 | 它要什么 | 卡在哪 |
|---|---|---|
| 文本归因分类器 | 完整的长篇生成文本 | 能把整段聊天回复归到来源模型,五选一准确率 97%,但分类器要吃掉长输出,一次审计的账就上去了 |
| 精心构造的探针 LLMmap / TRAP | 专门设计或对抗优化过的提示词 | LLMmap 用八条查询就能认出 42 个模型版本,可这类提示词的辨识度本身就是弱点:服务商一眼认出来,单独放行给真模型就行了 |
| 查概率排位的统计检验 基于秩的均匀性检验 | 模型返回的 log 概率 | 专攻压缩版检测,但很多接口只返回文字,这个前提就不成立 |
| 统计等价检验 | 完整的采样字符串,加同一模型的参照部署做校准 | 最接近这篇论文的场景,但要消耗完整生成结果,而且只能对着单一参照部署校准 |
| 单字答案分布 本文 | 一个输出 token,不要权重、不要 logits、不要模型方配合 | 代价是问一次不算数,得重复问几十上百次才读得出分布 |
上面 LLMmap 那类办法琢磨的是「该发什么特制问题过去」。这篇论文反过来:问题就用最普通、最无害、随便怎么改写都行的那种,看的是模型怎么答:身份就藏在答案的分布里。
让模型说个随机数,答案分布就能认出它是谁
布拉格经济大学的 Tomáš Bruckner 想出了一个巧办法:让 AI 说个随机数,光看它怎么答,就能认出它是谁。
这招利用的是 AI 一个出了名的毛病:它说不出真正的随机数。你让它 1 到 100 随便挑,它翻来覆去就挑那一两个,而且每家模型的「口头禅数字」还不一样:GPT-4o 最偏爱 42(37 和 57 也常说),Claude Sonnet 5 几乎只说 47,Llama 3.3 认准了 53,Qwen3-Max 更绝,30 次采样每一次都答 42。以前大家都把这当缺陷、研究怎么修,这篇论文反过来,把它当成了指纹。
问它「说一个 1 到 100 之间的随机数」,要求只回一个词(上限 16 个 token),关掉思考模式,温度设 1.0(就是让它按心里的概率随便抽,别每次都挑最稳的那个),然后反复问几十次。答案不管写成「四十二」「٤٢」还是「42」,都算成 42,数数每个数各出现几次,就得到一张分布表。
这张分布表就是指纹。每问一次,只消耗一个输出 token。
四家的分布画出来长这样:
这种偏科程度能算出来。把 165 个模型 × 40 道题拆成一格一格,答够 10 次有效的有 6572 格;这些格子里,答案的中位熵答案有多难猜。1 bit 差不多相当于答案基本在两个选项之间摇摆只有 1.00 bit,而真随机应该到 6.64 bit(按「1 到 100」这道题算)。每格里模型最爱的那个答案(不只数字题,随机词/颜色/城市也一样),通常能占掉七成回答(中位占比 0.71)。
6.64 bit 相当于 1 到 100 每个数都有份、你完全猜不到它会说哪个。1.00 bit 相当于它心里其实只在两个数之间打转,你猜对的机会接近一半。模型嘴上答应了随机,实际上给的是它的口头禅。
同一份权重,在目录里会挂着好几个名字
动手之前得先掰扯清楚:测的到底是什么。聚合器目录里,名字和权重是多对一的:同一份权重会顶着好几个名字同时挂在那儿:滚动更新的 -latest、带日期的快照、免费档、思考档、快速档、长上下文档。
所以论文分三层说话:检查点是一份具体的权重,指纹按的是它;接口是一条「自称通向某个检查点」的服务路径;家族是同一个祖先传下来的一串检查点。核验查的是「接口给的是不是它自称的那份权重」,认亲查的是「这份权重出身哪家」。你买的那个名字,本身什么都不保证。
一个字里为什么会有身份信息
这张分布同时叠着四层东西,每一层都在往里写自己的痕迹。
同一个候选答案,在各家词表里被切成的块数和切法不一样,切法一变,它和别的候选之间的赔率就跟着变。论文对这层只点了名(候选答案的分词差异),没展开例子。
两个模型的词表不同,起跑线就不同,这一层的差异跟模型能力无关。为什么偏偏是 42、47、53?因为人被要求「随便说个数」时也不随机,这些偏好全写在网上的文本里,模型照单全收。上面图里那几个尖峰,读的就是这一层。
论文没有逐个数字做归因,它引的四项前作正是研究人和模型的伪随机偏好的。同一个底座、同一个词表的两个模型,为什么还分得开?靠的就是后期调教:它会把整张答案分布往一边推。
反过来,后面会看到一个有据可查的 Llama 衍生品跑到了 Qwen 邻域,干这件事的也是这一层。温度 0 本来该完全确定:同样的问题,每次都答同一个字。实测同一家服务商里 90.4% 的题确实如此,可跨服务商一汇总就掉到 84.5%。差的这 5.9 个点,就是各家机房在数值实现上的差异。
这一层最不属于模型本身,它也正是同一个模型换家服务商后指纹会偏移一点的原因。看到这你可能想问:既然温度 0 下同一家服务商 90.4% 的题每次答案都一样,干嘛不直接比温度 0 的答案、问三次就完事?三个原因:各家的「保险答案」爱撞车(都答 42 就分不出谁是谁);跨服务商温度 0 的确定性掉到 84.5%,单点本身就不稳;而一整张分布的信息量远大于一个点。所以必须让它「随机」起来,反复问。
为什么压缩和蒸馏躲不过这类问题
量化是把权重四舍五入到更低精度;蒸馏是让大模型当老师、教出个小模型来顶班。先说量化:模型有把握的题,这点误差改不了它挑哪个答案,所以跑分基本看不出事。但几个候选答案咬得紧的时候,这点误差就够把它们的排位搅乱。
而「说个随机数」恰好就是这种题:几个口头禅数字都说得过去,谁多谁少没有对错,全看那点微妙的概率分配。指纹读的正是这个配比。
跑分测的是答得对不对,指纹测的是几个都说得过去的答案之间怎么分。压缩权重动不了前者,一定会动后者。
论文原文对这点只有一句话:量化和蒸馏扰动的,恰好是这些题采样的那层概率分配。上面的大白话是按这句展开的。
怎么把「像不像」变成一个能比的数
光一道题不保险:两个模型完全可能恰好都爱说 42。所以题库是 10 道题、各用 4 种语言问,共 40 道。
为什么要问十道题、还要问四种语言
论文对这三条设计各给了一句理由,下面是按这几句展开的解释。
封闭题和开放题各干各的活。抛硬币只有两个答案、1 到 10 只有十个,所有模型都在同一组选项里挑,比的是精细配比。但再怎么不同,硬币也就俩选项,差异有上限。开放题(随机词、城市、动物)答案没有边界,两个模型可能一个都不重合,距离直接顶到头。一类负责在近亲之间抠出细微差别,一类负责把不相干的模型一把推开。
「随机」和「最喜欢」是两道不同的题。问随机数,是让它当抽签机;问最喜欢的数,是问它的人设,而人设是后期调教捏出来的。两个模型可能随机数撞车、最喜欢的数分开,这一对题等于白赚一个维度。
换种语言问,问到的是另一片记忆。中文语料里「随便说个城市」的常见答案,跟英文里的不一样。所以四种语言等于从四个不同的切面各采一份信号。反过来说,想冒充的人得把四套语言习惯全对上。
两张分布表差多远,用一个数表示
两张分布表差多远,用 Jensen-Shannon 散度衡量两张答案分布表差多远,取值 0 到 1。对称,而且两张表连一个共同答案都没有时照样算得出来折成一个 0 到 1 的数。选它有个实际原因:哪怕两个模型答的城市一个都不重样,它照样算得出有意义的距离,开放题正需要这个。两个模型的总距离,就是在双方都有足够样本的题上取平均。
单道题层面,同一个模型自己跟自己比是 0.075,两个不同模型之间是 0.489(注意口径:这是一道题的数,跟下面 40 道平均后的尺子别直接对着比)。平均之后,就是这把尺子。
换一家服务商,指纹还认得出吗
这里有个致命问题得先回答:换一家服务商,指纹会不会就变了?要是会,那测的就是机房,不是模型。OpenRouter 正好送了个天然实验:165 个模型里有 31 个同时挂在两家以上服务商、样本又够,凑出 34 对能直接对比,每对至少 15 道共同题。
结论:指纹基本扛住了换服务商这一关。没扛住的共 10 对,最扎眼的两对,后面「体检结果」那节细说。
一次身份体检要花多少钱
查一次「这个接口背后是不是真货」,总共四步。
假设你给自己的产品接了某家中间商的接口,点的是 Llama 3.3 70B。
打分方式跟指纹门禁一个思路:「真身测试」拿同一个模型的两半样本互相比,「冒充测试」拿 A 模型的一半跟 B 模型的一半比。165 组真身、27060 组冒充跑下来,全套 40 道题 AUC 0.971,等错误率把门槛调到「冤枉好人」和「放过坏人」一样多的位置,此时的错误比例。7.3% 约合每 14 次判断错一次 7.3%。
少问几道题,准确率会掉多少
| 用几道题 | 1 | 4 | 8 | 16 | 32 | 40 |
|---|---|---|---|---|---|---|
| 等错误率 | 23.3% | 13.2% | 10.6% | 9.5% | 8.4% | 7.3% |
| 波动带 | 14 到 40% | 9 到 18% | 8 到 14% | 8 到 12% | 7 到 10% | — |
只问一道题就已经比瞎猜(50%)强出一大截。按 16 道题、每道 15 次算:一次审计 240 次查询、约 1.6 万输入 token,普通定价的模型花不到一美分,旗舰模型也就几美分。
单次核验 14 次会错 1 次,光凭一次下不了结论。但一次才几分钱,就可以对同一个接口天天查、反复查。真正管用的是长期累积的证据,单次只是其中一格。
成本上也有个参照:同样的重复次数,这套办法比靠长文本归因的路子便宜大约一千倍。
点开看:整轮普查的账,和 165 个模型是怎么筛出来的
整轮普查收到 326047 条响应,合 2330 万输入 token、116 万输出 token,总花费 34.44 美元,平均每个模型 0.21 美元。失败的请求会隔越来越久再重试(指数退避),重试件不进数据。回答的整体有效率 97.6%,单模型中位 99.6%,最低的那个 60.6%(它经常整句作答)。每条响应都被分成有效、无效、拒答、空四类,什么都不静默丢弃;而拒答率和有效率本身也带一点身份信息,却被刻意排除在指纹之外,为的是让指纹对安全策略的改动保持稳健。
模型是从 2026 年 7 月 6 日的目录快照(342 个条目)里筛的,排除掉:非纯文本对话模型(多模态输出、嵌入、音频、图像、视频、审核与护栏模型、未做指令微调的底座、上下文不足 2048 token 的);窄领域专用模型(代码、数学、医疗、角色扮演);不构成单一稳定检查点的条目(滚动的 -latest 别名、会变的预览版和已弃用接口、元路由器、多 Agent 或接了搜索的管线、已在目录中的检查点的免费档或思考档重复项);带强制隐藏思考阶段的接口;以及只有免费档的接口(账号级的每日请求上限让完整采集无法进行)。另有一个人工排除项有记录在案(输入每百万 token 150 美元、输出每百万 token 600 美元的模型)。规则清单随数据一起公开,每个被排除的条目都带着它的排除理由。剩下 165 个模型,横跨 19 个家族标签和 53 家服务商。
采样上,每个模型的每道题在温度 1.0 下采 30 次、温度 0 下采 3 次;输入定价在每百万 token 5 美元以上的旗舰模型减到 15 次。题目按带种子的洗牌顺序执行,所以限流造成的缺失会大致均匀摊到一个模型的所有题上,而不会把某道题或某种语言整块打空。正式跑之前先用 14 个模型(覆盖七组同家族的大小模型配对)做了预实验,把所有设计和分析选择按四条预设标准定死:每个模型有效率至少 80%、同服务商内温度 0 的确定性至少覆盖 90% 的题、家族间与家族内的散度差异过了统计显著性检验(p=0.0008)、以及成本外推。假设和分析计划在正式采集前做了预注册(提前公证、事后不能改口),预实验数据不进正式分析。
指纹还能看出这个模型是从谁那儿来的
同一个模型的指纹挨得近,那同一家族的模型呢?把 165 个模型两两算距离、让机器把挨得近的自动归堆(聚类),答案是:也近,但没那么可靠。这是论文里偏弱的一组结果,主要价值是给下一节那几个案例当参照。
算法是「藏一个猜一个」:把每个模型轮流藏起来,看离它最近的邻居是谁家的,就猜它是谁家的。在 163 个有同家族同伴的模型上,猜对率 59.5%,瞎猜的基线是 18.4%,高出 3.2 倍。
弱的那面也摆在那儿:想让这棵树自动分出 19 个界线分明的家族圈?分不出来。这多半怪不着指纹:标签里有个装着 17 个互不相关厂商模型的「other」大杂烩,还有一堆单例家族,天生聚不成块,论文自己也说这在预期之内。看「谁离它最近」能认出血统,看整体分块认不出。
| 家族 | 模型数 | 精确率 | 召回率 |
|---|---|---|---|
| glm | 12 | 1.00 | 0.83 |
| llama | 12 | 0.88 | 0.58 |
| mistral | 16 | 0.87 | 0.81 |
| gpt | 21 | 0.70 | 0.90 |
| claude | 12 | 0.54 | 0.58 |
| qwen | 30 | 0.50 | 0.73 |
| deepseek | 8 | 0.46 | 0.75 |
| gemini | 11 | 0.43 | 0.55 |
| other(互不相关的厂商) | 17 | 0.20 | 0.06 |
精确率是「被判进这个家族的,有多少真是」;召回率是「这个家族的成员,有多少被找了出来」。GLM 那行精确率 1.00:凡是判成 GLM 的全判对了。Llama 那行值得多看一眼:精确率 0.88 不差,召回率只有 0.58,等于 Llama 家快一半的成员没待在自家地盘上。下一节就有其中一个。
另外,59.5% 是个保底数:打分的标准答案来自公开文档的家族标注,文档标错了,就算指纹其实找对了亲戚也要扣分;反方向的错不存在。所以真实水平不低于 59.5%。
这次体检查出了什么
把尺子架到真实生态上,出来几组对不上的接口。先说清楚:这些是统计上的对不上,不是谁在欺诈的指控。权重更新了、拿到许可的量化、缓存层,都可能是无辜的解释。
有几个接口的指纹,对不上它自称的身份
writer/palmyra-x5 的指纹,距开源的 qwen/qwen3-235b-a22b-2507 只有 0.141,而同一个模型自己跟自己的中位距离是 0.140(两个不同模型之间是 0.463)。意思就是:从答案分布上看,它跟一个开源 Qwen 部署根本分不出来。而这个接口卖的时候,说法是「Writer 自研的专有内部模型」。
Writer 是一家面向企业客户的 AI 公司,把 Palmyra 系列作为自研模型线在推,X5 主打 100 万 token 上下文,已经上架 Amazon Bedrock(这段产品背景来自 Writer 官方发布材料,不在论文里)。
无辜的解释也真实存在:拿 Qwen 底座训自己的模型,本身完全合法。紧接着就有一个清白的例子。
deepcogito/cogito-v2.1-671b 白纸黑字写着自己是从 DeepSeek V3 底座训的,它指纹上最近的三个邻居恰好全是 DeepSeek 检查点(0.268 到 0.308),指纹跟公开血统对上了。xiaomi/mimo-v2.5-pro 和 inclusionai/ling-2.6-1t 也稳稳落在 Qwen 邻域里。
把这两组数摆在一起看才见分晓:白纸黑字的合法衍生品,离底座的距离在 0.27 上下,是「亲戚」的距离;palmyra 的 0.141 贴着 0.140 的噪声地板,是「本人」的距离。一个高出地板一大截,一个贴地。论文保持不指控的口径,数字放在这儿,怎么读你自己定。
还有一种情况是痕迹被抹掉了:nvidia/llama-3.3-nemotron-super-49b-v1.5 有文档记载是 Llama-3.3 的衍生品,可它的指纹离 Qwen(0.303)比离任何一个 Llama 都近。后期训练下手够重,出身就被盖住了。上一节 Llama 召回率只有 0.58,这就是其中一个来源,也是指纹认亲的天花板。
同一个模型,两家服务商差得比两个模型还大
34 对「同一个模型、两家服务商」里,有 10 对(29%)的差距已经掉进「两个不同模型」的区间:同一个模型从两家机房出来,差得跟换了个模型似的。
| 接口 | 两家服务商 | 指纹距离 |
|---|---|---|
meta-llama/llama-3.2-3b-instruct | Cloudflare 对 Parasail | 0.716 |
openai/gpt-4 | Azure 对 OpenAI 官方直营 | 0.392 |
| 参照:两个不同模型之间的中位距离 | 0.463 | |
| 参照:同一个模型自己的中位距离 | 0.140 | |
第二行那个数单独看一眼:同一家厂商、同一个模型名、两条都算官方的路径(Azure 和 OpenAI 一方接口),距离都快赶上「两个不同模型」的中位数了。第一行为什么能差到 0.716?论文没下定论;聚合平台自己倒是承认过,上游各家的压缩程度并不统一。
顺手还撞见了三件不对劲的事
有些猫腻光看回答内容根本发现不了,按 token 一笔笔记账才露馅。这三条不是花絮,它们直接决定了哪些接口被踢出样本。
一些旗舰聊天接口,为了吐出一个词的可见答案,消耗了约 40 到 60 个输出 token,中间不暴露任何思考痕迹。你按 token 付费,等于为看不见的东西付了几十倍的钱。
326047 条响应里有 2486 条无视了关闭思考的标志,带着思考痕迹回来,集中在 14 个模型与服务商的组合上。这批响应被单列成一类,从不进入指纹。
有一个模型的唯一服务商,对所有数字类问题一律返回服务器错误,其他问题都正常作答。
第一条直接变成了排除标准:既然没法证明那几十个 token 不是一段藏起来的思考,就只能把这类接口全踢出去。判断只认实测行为、不认接口的自我声明,因为声明已经被证明靠不住了。
这些发现没走「先私下通知厂商」的流程。作者的理由:这不是等着修补的安全漏洞,公开也不会让谁多出一种攻击手段。问责靠的是把原始数据全公开:每次请求的时间戳、服务商、生成 ID 都在里面,被点名的和任何旁观者都能自己去复核、去反驳。
服务商要是学乖了,这方法还管用吗
服务商要是学乖了、开始反制呢?能做的事分三档,这套办法对每一档的效力不一样。
不看流量,换了就换了。对这一档完全有效。
识别已公开的审计问题,把它们单独路由给真模型。设计上针对的就是这一档。
试图在任意低熵问题上复现目标模型的分布。做到这一步,等于就在老实跑那个模型了。
对付 T2 的底气是:题库里没有固定暗号。「说个随机颜色」「说个随机城市」是一类话,不是一句话:能无限改写、无限翻译(四种语言已经各来了一遍),审计时现场随机抽,还能混进正常流量里发。
想把审计流量筛出来,服务商就得从海量普通消息里,把所有「让模型说个什么」的小问题一条不漏地认出来、单独路由给真模型。筛严了会放跑审计流量、照样被抓;筛松了等于把一大片日常流量都交给真模型跑、白花钱。两头都亏。论文的说法是「在检测上代价很高」,具体多高没测。另外还有个口子没堵:同一类题换个说法问,指纹还稳不稳,实验留给了后续工作。
T3 的账卡片里已经算完:模仿到那个程度等于老实跑真货,钱省不下来。所以这套办法给不了数学铁证,它干的是把「换货还不被抓」变得不划算,跟「靠硬件出证明」(让芯片在硬件层面签字担保,跑的确实是那份权重)那条路线正好互补。
重复问同一个问题,会不会命中缓存把结果搞坏
反复问同一句话必然撞缓存:13.4% 的请求命中了提示词缓存,覆盖 10.1% 的输入 token。这会不会把测量搞坏?得分清是哪种缓存。
复用的是这段问题之前已经算过的中间结果,省的是时间和钱,不改变模型最后怎么挑答案。重复采样仍然是独立抽样。
直接回放存好的旧答案,会让温度 1.0 下观察到的分布人为塌缩。在这套审计的语境里,这本身就是一种作弊。
所以作者专门查了一遍响应级缓存,判据是:答案塌缩成一个 + 延迟异常低还特别稳。温度 1.0 下只出一个答案的题有 2040 道(分布集中本来就常见),其中延迟低于平时一半的只有 14 道。而这 14 道都还在正常的亚秒级范围,更像服务商负载波动,完全不像真缓存那种瞬间回放。这一轮没查出响应级缓存。
这套办法有六件事做不到
| 局限 | 具体是什么 |
|---|---|
| 指纹会漂移 | 模型更新之后指纹会变,参照必须定期重新登记。短期稳定性测过,几个月尺度的漂移没测 |
| 需要可信参照 | 整套核验的前提是存在一个你信得过的参照部署 |
| 样本够不着 | 低流量服务商每家的样本太少;5 个接口整个采集窗口都没采到(1 个已下线,2 个所属服务商持续宕机,2 个是「未知模型」占位条目),另有 1 个模型的唯一服务商系统性失败 |
| 标签有噪声 | 闭源厂商的家族标签依赖公开文档。标签噪声只会压低而不会抬高血统结果 |
| 一类接口测不了 | 强制隐藏思考的接口被整体排除:思考阶段之后吐出的答案,采样的是另一个生成过程,混进来会按输出格式抱团,而不是按血统抱团 |
| 只测了一个聚合器 | 整轮普查只覆盖 OpenRouter。方法本身与聚合器无关,但生态层面的发现未必能外推到别处 |
最后一件实用的事:这套东西不用自己重写。提示词原文(config/prompts.json)和带完整服务元数据的原始响应在公开数据包里,整套采集分析管线(Node.js 和 R)单独归档,两个包都挂在尾注的 Zenodo 链接下。拿下来,把「算账」那节的四步对你在用的接口跑一遍就行。
模型身份从最廉价的那条通道漏了出来:模型被问到一个无聊问题时吐出的那一个 token。 One Token Is Enough,结论章
AI 接口从「只能信名字」 → 变成「能当场验身份」
布拉格经济大学一位研究者让 165 个模型各说上百遍随机数,一页带图讲完他查出了什么。
↓ 一页读完 · 有一张会动的图
你在中转商或聚合平台(一个入口接上几百个模型的中间商)买 AI,点的是一个名字,付的是这个名字的价钱。请求最后落到哪台机器、上面跑的是什么,没人给你凭证。
✘ 干不了的:证明回答你的,就是你点的那个
中间隔着聚合器和几十家服务商,回来的只有一段文字,不带任何身份凭证。悄悄换成压缩过的版本或更小的模型能省一大笔,被抓的概率一直很低。这不是假想:已经有研究查过 31 个卖 Llama 的商用接口,11 个的输出跟厂商放出来的原版对不上。
AI 有个出名的毛病:它说不出真正的随机数。让它在 1 到 100 里随便挑,它翻来覆去就那一两个,而且各家偏爱的数还不一样。以前大家把这当缺陷、研究怎么修,这篇论文反过来,把它当成了指纹。
数出「哪个答案出现几次」,就得到一张分布表,这张表就是身份。可「像不像」还只是个感觉,要拿去卡门槛,得先折成一个能比的数。
论文把两张分布表的差距折成一个 0 到 1 的数(用的是 Jensen-Shannon 散度,好处是两边连一个共同答案都没有时,它照样算得出距离)。所有判断都在这把尺子上做。
全套 40 道题,判错率 7.3%,约合每 14 次错一次;只用 8 道题也有 10.6%。单次不足以下结论,但便宜到可以对同一个接口天天复检。便宜到什么程度,换算成同一件事看:
不过用的是顶配。
- × 权重
- × 打分
- × 厂商配合
里,对不上原版的
就那么几个
爱说 42
三十次全是 42
还不一样!
当证据吧?
分不出来吗
测完 165 个模型
