花几美元偷走生产级大模型的最后一层,首个生产模型窃取实证

Stealing Part of a Production Language Model

Nicholas Carlini, Daniel Paleka, Krishnamurthy Dj Dvijotham, Thomas Steinke, Jonathan Hayase, A. Feder Cooper, Katherine Lee, Matthew Jagielski, Milad Nasr, Arthur Conmy, Itay Yona, Eric Wallace, David Rolnick, Florian Tramèr

cs.CR

2024-03-11

首个对生产级 transformer 的精确窃取攻击:用 logit bias 把目标 token 顶进 top-K 拼出完整 logit 向量,再 SVD 恢复最后一层;OpenAI ada/babbage 整层只要 4–12 美元。

这篇在解决什么

闭源大模型(GPT-4、Gemini 这类)的权重和架构是保密的,但模型本身挂在 API 后面任人查询。模型窃取(model stealing)这个方向长期以来的高保真攻击只能啃小型的 ReLU 网络,放到生产级 transformer 上,因为接 token 输入、用非 ReLU 激活、带注意力和残差和层归一、规模大几个数量级、还只吐低精度输出,老办法全都失灵。这篇问的是,光靠查询 API,到底能从一个生产模型身上精确偷走多少东西。答案是最后一层。

方法

transformer 的最后一步是 f(p)=softmax(W·g(p))。g 把输入 token 序列压成一个 h 维隐藏向量,W 是把隐藏向量升回词表维度 l 的嵌入投影矩阵,也叫 unembedding,h 远小于 l。作者的两步攻击都建立在这个结构上。

偷隐藏维数 h。对一个 prompt,模型吐出的 logit 向量虽然是 l 维的,但它们全都落在 h 维子空间里,因为是 W 把 h 维升上来的。于是多查几个不同 prompt,把 logit 向量摞成矩阵 Q=W·H,做 SVD,显著奇异值的个数就是 h,靠找相邻奇异值之间最大的倍数跳变来定位。

偷整层 W。SVD 给出的 U·Σ 恰好等于 W·G,G 是某个 h×h 矩阵,所以能恢复出 W 的一个仿射变换版本,再解一个最小二乘把 G 对齐回去。但有个硬限制:transformer 带残差连接时,精确恢复 W 在数学上不可能,只能恢复到一个变换。理论上更紧的正交恢复,约少 h²/2 个参数,信息上可行,但没有高效算法。

真实 API 不直接给 logit,只给 top-K 个 token 的对数概率,外加一个能调的 logit bias。作者用 logit bias 把目标 token 强行顶进 top-K,翻着 bias 扫一遍就能拼出完整 logit 向量,再跑上面的 SVD。top-5 时一次能捞 4 个 logit;连只给 top-1、bias 只能取 ±1 的极端设定,靠加 bias 和不加 bias 两次查询做差也能挤出信息。

结果

模型隐藏维数偷维数成本偷整层 W 成本W 误差(RMS)
OpenAI ada1024 ✓约 $1约 $45×10⁻⁴
OpenAI babbage2048 ✓约 $2约 $127×10⁻⁴
gpt-3.5-turbo-instruct确认正确约 $200低于 $2,000

开源模型上(GPT-2、Pythia、LLaMA 六个),隐藏维数误差 0 或 1,六个里五个;权重 RMS 在 3×10⁻⁵ 到 8×10⁻⁵,比随机初始化对照 2×10⁻² 好 100–500 倍。借此首次确认 OpenAI 的 ada 和 babbage 隐藏维数分别是 1024 和 2048。

为什么重要

这是第一次从生产级 transformer 上精确偷走任何参数信息。真正让人警觉的是成本,偷整层只要几美元到几千美元,门槛低到脚本小子够得着。光知道最后一层不能直接克隆整个模型,但它暴露了隐藏维数,也可能给别的攻击当跳板,比如盯着微调 API 看最后一层变没变。对从业者更直接的教训是,logprobs 和 logit bias 这种看起来无害的 API 功能,就是一个泄漏权重的攻击面。

局限与存疑

攻击只能拿最后一层,而且带残差时只能拿变换后的版本,不是 bit 级精确;更紧的正交恢复没有高效算法。整套攻击依赖 logit bias 这个功能,而这正被厂商逐步下掉。作者自己承认,光知道这一层暂时没有直接的下游危害,真正的危险程度是个开放问题。论文同时给了防御,拆分最后一层、把 W 事后扩宽伪装成更宽、给 logit 加噪、对 logit bias 做配额,但每个都要么伤功能要么防不住多账号(Sybil)。披露流程是规范的:事先通知所有受影响方,拿到 OpenAI 许可才动手,事后删数据,OpenAI 和 Google 都已改 API 加防御。

术语

原文与代码

社区讨论

相关论文

全部论文解读