隐私保护 Transformer 推理综述:五站地图
arXiv 2412.08145 的精读笔记:威胁模型、MPC 与 HE 的分工、12.7% 的瓶颈之争、线性与非线性解法路线、评测的两条独立轴,以及原文勘误 E1–E14。
0. 速览
一句话:这是 NTU 团队 2024 年 12 月的 24 页综述,收录 2022–2024 年 30 项 PTI(private transformer inference,隐私保护 Transformer 推理)工作,按**安全假设(setup)**而不是按技术或时间组织(Table 1,paper.txt:361–410,p8)。它真正的贡献不是罗列,而是把"某条路线为什么只在某个 setup 下成立"讲清楚了。
30 秒速览:五条核心洞察
- 隐私是双向的,而且只保护协议执行过程,不保护推理结果。 Definition 1 同时要求正确性(输出等于明文模型输出)与安全性(双方的 view 都能被模拟器伪造),但明确不覆盖基于
y的攻击(model inversion、membership inference)——那是另一个问题(paper.txt:90–117)。 - MPC 把秘密拆散,HE 把秘密锁住。 前者付通信,后者付计算;没有绝对优劣,只有和带宽、算力、延迟是否匹配(§2.3)。
- 贵不贵不看 FLOPs,看这个运算和你手里的工具形状是否匹配。 加法与逐槽乘法几乎免费,
exp、erf、tanh、max、除法、开方都不免费;而计费单位是密码学操作次数,不是浮点运算次数(§4.1、§5–§6)。 - 哪一层最贵,由"乘法能不能预支"决定。 纯 2PC 的瓶颈是 MatMul(§4.2 原话;Iron 端到端通信 280.99 GB,Table 12);一旦多出一个能提前备料的角色,MatMul 就只剩 12.7%,其余 87.3% 全落在非线性层(§4.2、§5.2)。
- 通信↔计算、精度↔近似开销是两条独立的轴。 它们不是一根跷跷板:可以通信极少而且精度高(NEXUS),也可以单算子就烧掉 3.6 GB(Iron 的 Softmax)。把四个量压成一个"效率"去比,结论必然错(§7)。
关键数字
| 数字 | 含义 | 出处 |
|---|---|---|
| 30 = 21 + 6 + 3 | 收录工作数,按 2PC / 2PC-Dealer / 3PC 分组(点数为本笔记推算) | Table 1,paper.txt:361–410,p8 |
| 12.7% | BERT-Base 在 MPC 下 MatMul 占运行时间的比例(原文语境是 2PC-Dealer) | §5.2,paper.txt:594–595,p12 |
| 87.3% | 非线性层占比,由 100 − 12.7 推算,原文没有这个数 | 本笔记推算 |
| 280.99 GB | Iron 跑 BERT-Base 的通信量(I./O. (128,1),3 Gbps / 0.8 ms) | Table 12,p21 |
| 1756× | Iron 与 NEXUS 的通信量之比(280.99 / 0.16) | 本笔记推算 |
| 8.8 点 | MPCFormer 在 STS-B 上的精度损失(89.1 → 80.3) | Table 12,p21 |
| 0.16 点 | NEXUS 在 RTE 上的精度损失(70.04 → 69.88) | Table 12,p21 |
| 22 倍 | 同一个 Softmax 算子,Iron 与 BumbleBee 的通信量之比(3596.32 / 162.24 MB) | Table 8,p16 |
| 31.7 倍 | 同一个 Iron Softmax,LAN 60 s 对 WAN 1900 s | Table 8,p16 |
怎么用这份笔记:复习先看 §0–§3;写 related work 用 §2、§4、§5;准备引用之前先看 §6(勘误)和 §10(存疑),这两节决定你能不能放心把那句话写进论文。
1. 五站地图
原文的物理顺序是"定义 → 密码学 → 威胁模型 → 瓶颈 → 线性 → 非线性 → 评测"。复习时更好用的是因果链:问题怎么定义 → 手里有什么工具 → 工具决定瓶颈在哪 → 于是有了两条解法路线 → 最后怎么公平地量它。
| 站 | 这一站讲清楚什么 | 核心结论 | 原文位置 |
|---|---|---|---|
| ① 问题与定义 | PTI 场景、Definition 1(正确性 + 安全性)、两类正式威胁模型 | 隐私是双向的;安全只覆盖协议执行过程,不覆盖推理结果 | §2.1–§3,paper.txt:90–117、280–292,p2–p3、p6 |
| ② 密码学工具箱 | FE / MPC / HE 的分工,三类 setup | MPC 拆散→通信,HE 锁住→计算;setup 决定乘法能否预支 | §2.3、§4.2、附录 A,203–279、320–344、1345–1375,p4–p6、p7、p24 |
| ③ 瓶颈之争 | 两大瓶颈,以及瓶颈如何随 setup 迁移 | 2PC 卡 MatMul,2PC-Dealer / 3PC 卡非线性 | §4.1–§4.2,300–344,p6–p7 |
| ④ 解法路线 | 线性层 packing;非线性三条路线(换函数 / 多项式 / LUT) | 线性靠"排列"省操作且几乎免费;非线性靠"近似"省操作,赔精度 | §5–§6,461–1083,p9–p19 |
| ⑤ 评测与代价 | Table 11 模型配置、Table 12 端到端对比、两条独立轴 | 通信相对可比,运行时间几乎不可比,精度最可信 | §7、Table 11/12,1085–1134、1102–1115、1150–1198,p19–p21 |
这条因果链也顺手解释了综述的一个结构性弱点:五站里前四站都写满了,第五站承诺的 "evaluation guidelines" 却从未独立成节(§1 第 73 行提到,正文没有对应小节),结论章干脆是空的(E1)。所以这份综述适合当地图,不适合当结论来引用。
2. 基础概念
2.1 问题与 Definition 1
场景是最基本的 MLaaS(machine learning as a service):客户端持有输入 x,服务器持有模型 M,双方都不愿意把手里那份交出去。注意"隐私"是双向的——客户端的输入与服务器的模型参数和结构同时受保护。很多论文只强调前者,读的时候要盯住后者。
Definition 1 给的是两方协议的标准安全定义(paper.txt:90–117):
设 Π 是 C(客户端,持 x)与 S(服务器,持 M)之间的两方协议。
条件一(正确性):Π 结束时 C 得到 y,且 y = M(x)。
条件二(安全性):存在 PPT 模拟器,双向成立:
· 腐化 C:Sim_C(x, y) ≈ View_C^Π(x, M)
· 腐化 S:Sim_S(M) ≈ View_S^Π(x, M) (y 本来就要给 C)
"≈" 指计算不可区分;View 是参与方在协议中看到的一切(输入、随机数、收到的消息)。三条读法,缺一条就会误用:
- 两个条件互相独立。 正确性说的是"算出来的东西对",安全性说的是"过程没多泄漏"。一个协议可以完全正确却毫无隐私(明文算完再加密返回),也可以很私密但算错(近似过头)。
- 模拟器范式证明的是"没有超出规定输出的信息"。 安全性不是"攻击者看不懂",而是"攻击者能自己模拟出来,所以什么也没学到"。
- 边界是明确的:不防基于
y的攻击。 综述原文就写了 model inversion、property inference 这类攻击不在范围内。所以"PTI 保证隐私"这句话,只能在"协议执行过程"这个限定下使用。
2.2 三种威胁模型,别混
| 模型 | 英文 | 攻击者能做什么 | 硬约束 | 本综述中的使用 |
|---|---|---|---|---|
| 半诚实 | semi-honest / honest-but-curious | 严格按协议执行,但被动收集并分析 transcript | 不撒谎、不改输入、不提前中断 | 绝大多数工作的默认假设(§3) |
| 恶意 | malicious | 任意偏离协议:撒谎、改输入、提前退出 | 需要额外一致性检查(MAC、cut-and-choose 等),代价高 | §3 没有正式定义;只在 §4.2 讲 PrivFormer / PPTIF 的句子里出现(paper.txt:342) |
| 诚实多数 | honest-majority | 假设多数计算方诚实且不串谋,攻击者最多腐化少数方 | 至少 3 方;"多数"指计算方数量 | 只有 PrivFormer [1]、PPTIF [32](§4.2、§5.3) |
关键区别不是"谁更安全"的线性排序,而是协议要不要为偏差行为付成本。半诚实假设下,只需保证 transcript 可模拟;恶意假设下,还要保证偏差会被抓住——同样的功能,恶意版本通常贵一个量级(本笔记判断,综述未给统一数字)。
三个高频混淆点:
- 半诚实不等于没威胁。 它的意思是"攻击者唯一的武器是 transcript 分析",而不是"攻击者不存在"。
- 诚实多数不是一种协议,而是一种假设。 它必须有至少 3 方、且"多数不串谋";2PC-Dealer 里那个只发牌、不参与计算、不接收输入的 dealer 不能算作"一方",所以 2PC-Dealer 不是 3PC。
- 恶意模型在原文里没有小节。 "三种威胁模型"是这份笔记的复习框架;引用时不要写"该综述定义了三类威胁模型"。
2.3 MPC 与 HE 的一句话本质
| MPC(secure multi-party computation) | HE(homomorphic encryption) | |
|---|---|---|
| 秘密形态 | 拆成份额,散在多方手里 | 锁在一份密文里,只有一方持有 |
| 一句话本质 | 谁也看不清,但大家一起算 | 谁也看不清,但一个人就能算 |
| 谁在算 | 多方交互 | 单方本地 |
| 主要账单 | 通信(轮数 × 每轮数据量) | 计算(密文乘法、旋转、噪声预算) |
| 交互性 | 必须交互 | 天然非交互(加密一次,服务器可单方算完) |
| 适合 | 带宽好、延迟不敏感的机房 | 移动端、边缘、上行带宽差 |
| 本综述锚点 | Iron 的 Softmax 3596.32 MB(Table 8) | NEXUS 的 Softmax 0 MB(Table 8);端到端 1125 s(Table 12) |
选择直觉只有一句:如果瓶颈在网络,就往 HE 走;如果瓶颈在算力,就往 MPC 走。 NEXUS 把 BERT-Base 的通信压到 0.16 GB(Table 12),代价是 1125 s;Iron 只用 475 s,但通信是 280.99 GB。两者没有谁"更好",只有谁更贴合你那条链路的物理条件。
2.4 三类 setup:区别在"谁能提前备料"
| setup | 参与方 | 多出来的信任假设 | 乘法怎么变便宜 | Table 13 的评级 |
|---|---|---|---|---|
| 2PC | C + S,两方 | 无(互不信任) | 不能预支:现场用 HE 加密一侧份额,或现场做 Beaver triple | 2 方;通信 +;实用性 +;可扩展性 + |
| 2PC-Dealer | C + S 计算,dealer 只在预处理阶段发牌 | 信 dealer 不串谋,且它不参与计算 | 预支:dealer 提前分发与输入无关的相关随机性(input-independent correlated randomness) | 3 方(Trusted Dealer);计算 +;可扩展性 ++ |
| 3PC | 三方 | honest-majority:至少两方诚实且不串谋 | 预支 + 复制秘密共享:2-out-of-3 RSS,乘法变成本地算 + re-sharing | 3 方;通信 −;计算 +;实用性 −;可扩展性 ++ |
Table 13 的加号只是相对强弱序(+++ 最强、+ 最弱),不是分数,也不是实验测量值。
现在说最关键的一句:2PC-Dealer 与 3PC 归为"预支",不是"分摊"。 分摊是把同样的工作量切给更多机器并行做,总通信量不会因此下降(往往还会上升);预支是把"与输入无关"的那部分工作挪到输入到来之前做完,于是在线阶段的乘法退化成几次本地加法加一次极小的 re-sharing。
这解释了一个反直觉现象:3PC / 2PC-Dealer 不仅更快,通信也更少(Table 13 里 3PC 的 Comm 是 −,比 2PC 的 + 更低)。如果只是"多了一台机器帮忙算",通信不可能下降。反过来说,任何声称"用 3PC 把 MatMul 分摊掉了"的说法,都还没理解自己在说什么。
2PC :谁都不信,乘法现场做 → MatMul 贵,账单集中在矩阵乘
2PC-Dealer :信一个只发牌、不算数的 dealer → 乘法预支 → 非线性浮出水面
3PC :信"多数诚实",用 RSS 把乘法 → 同 2PC-Dealer,但多付一份通信
变成本地加法Beaver triple 是"预支"的最小例子。 2PC 现场做一次乘法,标准做法是:预处理阶段拿到随机三元组 a、b、c = a·b 的份额;在线阶段公开 d = x − a 与 e = y − b,于是
x·y = (a + d)(b + e) = c + a·e + d·b + d·ed、e 是公开的掩码值,a、b、c 仍在份额里,所以每一方都能本地算出自己那份,只需要一次开环(互相 disclose d、e)。这恰恰说明"预支"预支的是什么:triple 与输入无关,可以提前备好;在线只剩本地加法和一次开环。2PC 不让第三方备料,就得自己在线生成 triple,乘法因此贵;dealer 或 3PC 的 RSS 把这份工作挪走,乘法才变便宜。
代价是把信任从密码学挪到社会假设:作者自己引 [20] 批评 "the assumption of a trusted dealer or non-colluding server parties is sometimes considered unrealistic in practice"(p7,paper.txt:344)。所以三类 setup 没有安全强弱的总序,只有"你愿意信谁"。
3. 瓶颈之争:12.7% 与 87.3%
3.1 那笔账怎么读
原文只有一句(§5.2,paper.txt:594–595,p12):
matrix multiplications account for only 12.7% of the overall BERT-Base model runtime under MPC, and the communication overhead is also much lower than that of the non-linear layer.
三件事必须一起读:
- 12.7% 是"运行时间占比",不是"计算量占比"。 87.3% 是 100 − 12.7 的推算,原文没有这个数;引用时要写 "derived" 或者干脆只引 12.7%。
- 归属要小心。 这句 "under MPC" 出现在讲 MPCFormer [28] / Wang et al. [59] 的段落里,而这两项都是 2PC-Dealer。把它读成"纯 2PC 下 MatMul 只占 12.7%"是这份笔记见过最高频的误读——纯 2PC 的账本长相反:Iron 跑同一个 BERT-Base 要 280.99 GB 通信(Table 12,p21)。
- 综述自己的结论是"迁移"而不是"消失"。 按 §4.2 的说法,2PC 下所有工作都在优化 MatMul,因为
A·B的每一对元素相乘都要额外保护;一旦有了 helper party,"the introduction of a 'helper party' has effectively eliminated matrix multiplication as a significant bottleneck"(paper.txt:343),非线性层才成为主战场。
3.2 为什么瓶颈会迁移
2PC: A·B → 每对元素相乘都要保护 → HE 加密 / 交互 → 通信与计算双爆
⇒ 账单集中在 MatMul;非线性只有 3 类算子,反而是次要项
2PC-Dealer / 3PC:乘法可以预支 → MatMul 退化为"本地加法 + 少量 re-sharing"
⇒ MatMul 掉到 12.7%;剩下 87.3% 是 exp / max / 除法 / erf / tanh / 开方
⇒ 这些函数没有可用的代数结构,只能"换掉、逼近、或查表"所以"瓶颈"不是模型的客观属性,而是 模型 × 工具 × setup 三者的函数。同一个 BERT-Base,在 2PC 下瓶颈是 MatMul,在 2PC-Dealer 下瓶颈是 Softmax、GeLU、LayerNorm。这正是综述按 setup 组织、而不是按年份组织的理由。
3.3 为什么"贵不贵不看 FLOPs"
- FLOPs 数的是数学运算量;密码学计费的是操作次数。HE 里一次逐槽乘法覆盖
n个标量乘积,只算一次密文乘法;一次旋转搬运n个槽,却要做一次自同构加一次密钥切换。所以"做了多少乘积"和"付了多少钱"之间没有单调关系。 - 因此不能推出"参数最多的层最贵"。BERT-Base 的 MLP 宽
3072,是纯 MatMul;Softmax 只有128 × 128,Iron 却要 3596.32 MB(Table 8)。 - 判断一个算子贵不贵的正确问法:它能不能写成"加法 + 逐槽乘法"?如果不能,要几层乘法深度、要不要查表、表有多大?
4. 解法路线
4.1 线性层:对角线打包
问题:C = A·B,C_{i,j} = Σ_k A_{i,k} B_{k,j}。HE 的 SIMD 槽位让"逐槽乘法"极便宜,难的是把 k 维的内积摊到槽位上——k 在槽里是"横着"的,直接乘只会得到逐元素积,不会求和。
解法是把矩阵沿对角线切(Gazelle [24] 的做法,BOLT [43] 采纳):
n 个槽位(n 是多项式环维度,也是 SIMD 槽数)
rot(v, d)_i = v_{(i + d) mod n} ← 循环左移 d 格
diag_d(A)_i = A_{i, (i + d) mod n} ← A 的第 d 条对角线
恒等式:A·x = Σ_{d=0}^{n-1} diag_d(A) ⊙ rot(x, d)3×3 的手算版本(n = 3):
A = [[a00, a01, a02], x = [x0, x1, x2]
[a10, a11, a12],
[a20, a21, a22]]
diag_0 = [a00, a11, a22] ⊙ x = [a00·x0, a11·x1, a22·x2]
diag_1 = [a01, a12, a20] ⊙ rot(x, 1) = [a01·x1, a12·x2, a20·x0]
diag_2 = [a02, a10, a21] ⊙ rot(x, 2) = [a02·x2, a10·x0, a21·x1]
────────────────────────
求和后第 0 槽 = a00·x0 + a01·x1 + a02·x2 = (A·x)_0
求和后第 1 槽 = a11·x1 + a12·x2 + a10·x0 = (A·x)_1
求和后第 2 槽 = a22·x2 + a20·x0 + a21·x1 = (A·x)_2成本对比(n = 128):
| 做法 | 密文乘法 | 旋转 | FLOPs |
|---|---|---|---|
| 朴素逐元素 | 16384 | 0 | 16384 个标量乘积 |
| 对角线打包 | 128 | 128 | 16384 个标量乘积 |
FLOPs 一模一样,密码学账单差了 128 倍。 这是"按操作次数计费"最干净的例证。严格说,这张表里的"朴素"指逐元素加密相乘的教科书版本;真实实现常用列打包把明文权重的乘法数也压到 n 级,代价是密文份数与重排,所以"128 倍"是数量级直觉,不是任意实现的实测比值。
那为什么说旋转最贵?三条理由,第三条最容易被忽略:
- 旋转不是"移位指令",而是自同构(Galois automorphism)+ 密钥切换(key switching):要预先生成 Galois keys(一份很大的 evaluation key),每次切换还要分解、相乘、相加。
- 单次旋转的代价通常与一次密文乘法同量级,甚至更高;
n次旋转就是n份这样的代价。 - 它不能被 SIMD 平摊。SIMD 免费的是"一条指令覆盖
n个槽",而旋转恰恰是移动这n个槽的那一步;n次重排就是n次独立开销。
所以对角线打包的残留账单是 n 次旋转。后续所有 packing 优化,本质上都在减少旋转次数或减小每次旋转搬运的数据量,而不是减少乘法次数:
| 工作 | packing 手法 | 省的是 | 证据 |
|---|---|---|---|
| BOLT [43] | 密文按列打包 + 明文用对角线打包 | 计算:把密文×密文的乘法数降到 n 级 | outer product + partial rotation 加速 Q·Kᵀ;MPC-HE 混合让噪声自动重置,不做 bootstrap(§5.3) |
| BumbleBee [34] | IntrLeave:把多个多项式交织进一个密文 | 通信:同样槽数用更少密文 | Softmax 162.24 MB,是同表 Iron 的 1/22(Table 8) |
| NEXUS [64] | RNS-CKKS + SIMD 密文压缩 + slots folding | 通信:压到接近 0 | Softmax / GeLU / LayerNorm 三表通信量均为 0 MB(Tables 8–10) |
一句提醒:"旋转 = 自同构 + 密钥切换、代价与一次密文乘法同量级"是 HE 领域的标准事实,但综述只点名了 Gazelle 的对角线打包,没有给恒等式和代价分析——上面这段是本笔记补充的。
4.2 非线性层:三条路线
非线性只有三类算子:Softmax、GeLU、LayerNorm。但它们是"密码学不友好"的全部来源。三条路线是换掉它 / 逼近它 / 查表,区别在于"把误差放在哪、把成本放在哪"。
| 路线 | 做法 | 成本落在哪 | 精度 | 代表工作 |
|---|---|---|---|---|
| 换函数 | 用密码学友好的 F 整体替换 | 训练侧(必须蒸馏)+ 精度 | 会崩,靠 KD 兜底 | (x+c)²:MPCFormer [28]、SecFormer [36];ReLU:MPCViT [63];(a·x+c)²:SAL-ViT [65];(x+c)⁴:RNA-ViT [6] |
| 多项式逼近 | Taylor / Maclaurin / Chebyshev / 分段低阶 | 乘法深度与计算 | 可控,靠阶数换 | BOLT [43] 的 2.7/4 阶分段;PUMA [12]、NEXUS [64] 的 3/6 阶分段;BumbleBee [34];CipherGPT [20];Rovida [49] 的 6 阶 Maclaurin;SecFormer [36] 的 Fourier 级数 |
| LUT 查表 | 预处理建表,运行时不经意查表(oblivious lookup) | 通信:整张表要卷进去 | 几乎无损,只剩量化误差 | Iron [18]、SIGMA [17]、Curl [50]、CipherGPT [20] 的倒数 |
换函数:最省密码学操作,误差最大。还有一个隐蔽的误差来源:近似式可能根本不是为这个函数设计的——MPCFormer 的 0.125x² + 0.25x + 0.5 原本是 Chou et al. [9] 给 ReLU 做的近似,直接搬到 GeLU 上,误差就不只是"阶数低",而是"近似对象错了"。原因很直白——替换函数在数值上不是原函数,模型必须在替换后的函数上重新训练或蒸馏,否则分布直接漂移。证据是 MPCFormer 在 STS-B 上从 89.1 掉到 80.3(8.8 点),而它已经是带 KD 的版本(Table 12)。同一篇的 QNLI 只掉 1.1 点,说明误差取决于任务对函数形状的敏感度,不是均匀的——这也是为什么"换函数"路线必须逐任务报点,只报平均分会骗人。
多项式逼近:主要手段是"范围裁剪 + 分段 + 重复平方"。exp 有两个值得记住的技巧:BOLT 先把 x_i − x̂ 拆成 (−ln2)·z + p(z 是非负整数,p 落在 (−ln2, 0]),用二次式 0.3585(p+1.353)² + 0.344 逼近 exp(p),再用 2^z 移位;NEXUS / BumbleBee / CipherGPT / PUMA 用重复平方 (1 + x/2^r)^{2^r},并把区间截到 a 以下直接取 0(NEXUS a = −inf, r = 6;BumbleBee a = −13, r = 6;CipherGPT a = −16;PUMA a = −14, r = 5)。
阶数不是越高越好。Rovida [49] 的倒数用 119 阶 Chebyshev,数学上漂亮,但把"省下的通信"换成了"多出来的乘法深度",在 HE 里就是更多噪声预算——这笔账在 FLOPs 表里完全看不见。
GeLU 的分段(式 20)值得单独记:左尾取常数 −c,中间 (a, b] 用 3 阶、(b, 3] 用 6 阶,右尾取 x − c;PUMA / NEXUS 取 a = −4, b = −1.95, c = 0,BumbleBee 取 a = −5, b = −2, c = 10⁻⁵。两头都是线性或常数,这是 GeLU 能被低阶多项式吃掉的关键;BOLT 更进一步用 abs(x) 的 4 阶加 0.5x,把奇对称性用满。
LUT:通信账是硬的——整张表(2^b 个条目)都要进协议,规模随位宽指数涨。Iron 的 Softmax 是 3596.32 MB,BumbleBee 同算子 162.24 MB,差 22 倍(Table 8)。精度账则没有想象中那么一边倒:LUT 只引入量化误差,做得好可以到 10⁻⁵ 量级(Iron 的 Softmax 是 3.2×10⁻⁵,Table 8),但它并不必然优于多项式——同一张表里 BOLT 是 1.4×10⁻⁶。NEXUS 用 SIMD 压缩把通信压到 0 MB,代价是 242 s——它把"通信"换成了"计算"。
三个函数各自的最难点
| 函数 | 数学形式 | 最难点 | 代表工作 |
|---|---|---|---|
| Softmax | exp(x_i − x̂) / Σ_j exp(x_j − x̂) | 不是指数,是 max(比较)与 1/Σ(倒数在 0 附近发散);难度序:直接指数最易、max 中、倒数最难 | Iron LUT + SIRNN 协议;SIGMA 低位宽 LUT 做 max/负指数/倒数;NEXUS Goldschmidt 除法;BOLT 分解 + 二次式 |
| GeLU | (x/2)(1 + erf(x/√2)) 或 tanh 近似 | erf / tanh 无代数结构;必须分段,且尾部要接回线性 | THE-X / PowerFormer 换 ReLU;MPCFormer 用 0.125x² + 0.25x + 0.5;BOLT 的分段 4 阶;SIGMA 近线性 + δ 修正 |
| LayerNorm | γ(x_i − μ)/σ + β,σ = √(Σ(x_i − μ)²/d) | 1/√·(rsqrt)与全局 reduction;而且要小心别把统计量算错 | NEXUS / PowerFormer 牛顿迭代;CipherGPT LUT;SIGMA 13-bit 浮点编码索引;PrivFormer 用 FALCON 的 square-root inverse |
LayerNorm 上还有一个反面教材,价值比正面案例大:Iron 把 γ/σ 和 β 并进下一层权重,只剩 [x_i − μ](式 25),看起来代数上完全正确;但 BOLT 指出它忽略了残差连接,性能会 "close to random guessing"(paper.txt:1064)。这就是 M16:代数正确的化简不一定是好优化,因为被消掉的项可能是模型数值稳定的支点。
4.3 选型原则
三条路线不是"哪个先进",而是"你手里哪个资源富裕":网络富裕就用 LUT(Iron / SIGMA),算力富裕就用多项式(BOLT / NEXUS),两者都紧就换函数 + 蒸馏(MPCFormer)。综述没有给出自动选择的方法,这本身是个空白(§10)。
5. 评测:两条独立的轴
5.1 两条轴,不是一个分数
轴一(系统):通信 ↔ 计算 ← 由 MPC / HE 的比例决定
轴二(数值):精度 ↔ 近似开销 ← 由换函数 / 多项式阶数 / LUT 位宽决定
两条轴彼此独立:可以"通信少 + 精度高"(NEXUS),
也可以"通信多 + 精度低"(Iron 的部分算子)。最干净的对照是 BERT-Base 上的两个极端:
| 工作 | 路线 | 通信 | 运行时间 | 精度损失 | 出处 |
|---|---|---|---|---|---|
| MPCFormer [28] | 2PC-Dealer + 换函数 + KD | 12.089 GB | 55.320 s | STS-B 掉 8.8 点 | Table 12,p21 |
| Iron [18] | 2PC + LUT | 280.99 GB | 475 s | STS-B 掉 0.21 点,MRPC / QNLI 掉 0.1 点级,SST-2 / RTE 反而提升 | Table 12,p21 |
| NEXUS [64] | 纯 HE + 压缩 | 0.16 GB | 1125 s | RTE 掉 0.16 点 | Table 12,p21 |
如果只有一根轴,就无法解释为什么 NEXUS 通信最少、精度最好,却最慢。"纯 HE 精度一定差"是错觉:NEXUS 掉 0.16 点,MPCFormer 掉 8.8 点,方向恰好相反。THE-X 把 ReLU 留给用户解密后算,是作者的工程取舍(原文自己叫它 "aggressive approximation"),不是 HE 的宿命。
5.2 读表的规矩
| 维度 | 能不能横向比 | 理由 |
|---|---|---|
| 通信量 | 大体可比 | 主要由协议与 packing 决定,受网络影响小;但仍要看 I./O. size |
| 运行时间 | 几乎不可比 | 受网络带宽/延迟、硬件、batch、实现质量、计时口径共同影响 |
| 精度 | 最可信 | 只取决于模型与近似,和机器无关;但要看数据集与是否 KD |
| 通信设置 | 必须一起报 | 同一实现换个网络就能差一个量级 |
网络档位在原文里至少有五种,Table 8 的脚注把 LAN / WAN 分开报:
| 档位(原文脚注) | 带宽 / 延迟 | 出现在 |
|---|---|---|
| LAN1 | 1 Gbps / 0.5 ms | BumbleBee |
| WAN2 | 400 Mbps / 4 ms | BumbleBee |
| LAN3 | 3 Gbps / 0.8 ms | Iron、BOLT、NEXUS、CipherGPT |
| LAN4 | 9.4 Gbps / 0.05 ms | SIGMA |
| WAN5 | 100 Mbps / 80 ms | Iron、BOLT、NEXUS |
由此得到三条硬规矩:
- 同一张表里的秒数也不能横排。 Iron 的 Softmax 在 LAN 是 60 s、在 WAN 是 1900 s(Table 8),31.7 倍差距来自网络,不来自算法。
- 引用运行时间必须带四件套:I./O. size、网络条件、硬件、batch。缺一件就不可复现。
- 模型大不等于通信大。 BumbleBee 的 BERT-Large 是 20.85 GB,LLaMA-7B 只有 6.82 GB(Table 12),因为前者 I./O. 是
(128,1)、后者是(8,1)。看到"7B 模型通信更少"先别惊讶,去看 I./O. size。
6. 勘误清单 E1–E14
这是这份笔记最重要的增值部分:下面 14 条是逐行核对 paper.txt 得到的,不是对内容观点的商榷,而是排版、引用、数据完整性层面的硬错误。写论文引用这篇综述时,凡涉及这些位置,都要绕开或自己补正。
| 编号 | 位置(paper.txt 行号 / 表) | 问题 | 建议修正 | 严重度 |
|---|---|---|---|---|
| E1 | 1136 | §8 CONCLUSION 只有标题,正文完全空白 | 补写结论,或删除该章 | 🔴 高 |
| E2 | 86 | §1 承诺 "In Section ??, we discuss challenges and future directions",全文没有这一章 | 补写该章,或删掉这句承诺 | 🔴 高 |
| E3 | 86、296、463、525 | 四处未编译的交叉引用:Section ??、(??)-(??) | 补 \ref 并重新编译 | 🟡 中 |
| E4 | 321、340 | §4.2 正文让读者看 "Table 4",但被描述的内容(谁优化了 MatMul / GeLU / Softmax / LayerNorm)在 Table 1;Table 4 讲的是 MPC backbone | 改指 Table 1,或改写句子 | 🟡 中 |
| E5 | 838(Table 8)、889(Table 9) | NEXUS 被误标为 [43],而 [43] 是 BOLT | 改标 [64](Table 10 的 1057 行标对了) | 🟡 中 |
| E6 | 500(Table 4) | Curl 被误标为 [17],而 [17] 是 SIGMA | 改标 [50](Table 1 的 404 行标对了) | 🟡 中 |
| E7 | 280 | §3 标题拼写为 "PIVACY THREATS IN SECURE INFERENCE" | 改为 "PRIVACY" | 🟢 低 |
| E8 | 35–39 与 195–201 | §1 与 §2.2 末整段逐字重复(数据控制权、服务器滥用、集中存储风险) | 删掉后一处 | 🟢 低 |
| E9 | 74–79 | §1 贡献列表说 "summarized as follows",却只列了 (1)(2) | 补 (3)(4),与 71–73 行提到的四项对齐 | 🟢 低 |
| E10 | 81–87 | 章节导览顺序为 §2 → §4 → §5 → §6 → §7 → §? → §8,跳过 §3 | 补上 §3 | 🟢 低 |
| E11 | 342 | "two out of three parties are honest adversaries" 自相矛盾 | 改为 "are honest" | 🟢 低 |
| E12 | 354 | 残句以 "...e.g., mobile devices. THE-X [7]" 结尾 | 补全或删除 | 🟢 低 |
| E13 | Table 12(p21) | BumbleBee 的 BERT-Base 行通信量与运行时间均为 "−",而同组的 BERT-Large / LLaMA-7B / GPT2-Base / ViT-Base 都有值 | 补数据,或注明该配置未测 | ⚪ 数据完整性 |
| E14 | Table 12(p21) | THE-X 行完全未报通信量与运行时间,只有精度 | 同上 | ⚪ 数据完整性 |
两点使用说明:
- E1–E2 是结构性问题,不是笔误:一篇综述没有结论、没有 challenges 章,说明它更像"文献地图"而不是"领域判断"。引用它的结论性句子时,最好回到被引的一手论文。
- E5–E6 这类编号错位,在 PDF 里几乎不可见,但在你做引用链时会直接把读者带到错的论文上。这类错误值得在笔记里长期保留。
本笔记补充发现(不在原 E 清单内,引用前也值得一看):
- Table 3(p9)把 BOLT 标成
[26],而 [26] 是 CrypTen;BOLT 的编号是[43](Table 1、Table 8 均如此)。 - Table 4(p10)的 2PC 组里出现了一次 SecFormer
[36],2PC-Dealer 组里又出现一次(paper.txt:482与498),两行的协议与框架列完全相同;同时 Table 4 缺了 Table 1 里的 CipherFormer[58]与 Zimerman et al.[69]。Table 1 是 30 行,Table 4 是 29 行(含重复)。 - 12.7% 的 setup 归属问题(见 §3.1 与 §10),严格说不是勘误,而是"原文措辞允许误读"。
7. 常见误解(从 M1–M16 中挑 10 条)
| # | 误解 | 纠正 |
|---|---|---|
| M1 | PTI 只保护客户端输入 | 隐私是双向的:模型参数与结构同样要保护;两方都可能是攻击者(Definition 1) |
| M4 | 半诚实方会撒谎、改输入或中断 | 不会。半诚实严格遵守协议,唯一武器是分析 transcript;能撒谎的是恶意模型 |
| M5 | 诚实多数是一种协议 | 它是一种安全假设,要求至少 3 方且多数不串谋;协议本身另说(RSS、re-sharing) |
| M6 | 2PC-Dealer 就是 3PC | 不是。dealer 不接收输入、不参与计算,只在预处理阶段发与输入无关的相关随机性 |
| M7 | 3PC / 2PC-Dealer 把 MatMul 分摊掉了 | 是预支,不是分摊。分摊不会降低总通信,预支会——这就是为什么 3PC 的 Comm 反而更低 |
| M9 | FLOPs 能判断哪层最贵 | 计费单位是密码学操作次数;算 n 个标量乘积和做 n 次旋转,账单完全不同 |
| M10 | 纯 HE 的精度一定更差 | 与事实相反:NEXUS 掉 0.16 点,MPCFormer 掉 8.8 点。精度取决于近似方式,不取决于 MPC / HE |
| M11 | 精度与通信是一根跷跷板 | 是两条独立轴:可以通信少且精度高(NEXUS),也可以通信多且精度低(Iron 的部分算子) |
| M13 | 可以直接横向比较不同论文的运行时间 | 不能。必须带 I./O. size、网络条件、硬件、batch;同一张表内的 LAN / WAN 都能差 31.7 倍 |
| M16 | 代数上正确的化简一定是好优化 | Iron 的 LayerNorm 化简代数正确,但忽略残差连接,BOLT 说它 "close to random guessing" |
8. 自测题(8 道)
Q1(概念) Definition 1 的两个条件分别是什么?为什么缺一不可?
答案:正确性要求输出等于明文模型输出 y = M(x);安全性要求存在 PPT 模拟器,双向地让 View 与模拟结果计算不可区分。缺一不可:只满足正确性可以明文计算,只满足安全性可以返回随机数——前者无隐私,后者无用。
Q2(概念) 三个 setup 的本质差别是什么?为什么 2PC-Dealer 不能算成 3PC?
答案:差别在"乘法能否预支"以及为此付出的信任假设。2PC 现场做乘法;2PC-Dealer 让 dealer 在输入到来前分发与输入无关的相关随机性;3PC 靠 honest-majority 加 2-out-of-3 RSS 在线重共享。dealer 不接收输入、不参与计算,所以它不是"一方";把 2PC-Dealer 叫 3PC 会把"信任一个发牌者"和"信任多数计算方"两种假设混为一谈。
Q3(数字) 12.7% 是什么的占比?它属于哪个 setup?87.3% 是怎么来的?
答案:是 BERT-Base 端到端运行时间中 MatMul 的占比(§5.2,paper.txt:594–595)。原文措辞是 "under MPC",但语境是 2PC-Dealer 的 MPCFormer / Wang et al. 段落,不能当作纯 2PC 的数字。87.3% 是 100 − 12.7 的推算,原文没有。
Q4(数字) Iron 的通信量是 NEXUS 的多少倍?NEXUS 通信近乎为零,为什么端到端反而比 Iron 慢 2.4 倍?
答案:280.99 / 0.16 ≈ 1756 倍(Table 12)。先要剥离网络:两者分别挂在 3 Gbps / 0.8 ms 与 100 Mbps / 80 ms 上,秒数本来就不能直接比。NEXUS 的 1125 s 主要不是传输——0.16 GB 在 100 Mbps 下量级只有十几秒(本笔记推算)——而是纯 HE 的密文乘法与自同构;它把成本从通信挪到了计算。通信与计算是两条轴,不能互相抵扣。
Q5(概念) 对角线打包把一个 n × n 矩阵乘向量从 n² 次密文乘法降到 n 次乘法加 n 次旋转。既然 FLOPs 没变,为什么还更快?
答案:因为密文乘法是密码学操作,一次覆盖 n 个槽,n² 次逐元素乘要付 n² 份代价;对角线法只付 n 份乘法加 n 份旋转。旋转虽贵(自同构 + 密钥切换,代价接近一次密文乘法),但仍是 n 量级,总计 2n 而不是 n²。
Q6(判断) "MPCFormer 在 STS-B 上掉 8.8 点,NEXUS 只掉 0.16 点,所以 HE 比 MPC 精度高。" 这句话哪里错了?
答案:把路线(MPC / HE 比例)和近似方式(换函数 / 多项式 / LUT)混成了一个变量。MPCFormer 掉点多是因为它用 (x+c)² 换掉 Softmax、只能靠 KD 兜底,不是因为它用 MPC;NEXUS 精度好是因为它在纯 HE 下用高精度多项式与迭代(Softmax 误差 3.1×10⁻⁶,Table 8),不必为通信牺牲阶数,不是因为"HE"本身。正确说法:精度取决于近似方式与是否蒸馏,与 MPC / HE 的选择正交。
Q7(判断) 论文 A 报 BERT-Base 推理 50 s,论文 B 报 100 s,能否说 A 快一倍?
答案:不能。必须核对 I./O. size、网络条件、硬件、batch 与计时口径。Table 8 里同一个 Iron Softmax 在 LAN 是 60 s、WAN 是 1900 s,网络一项就能造成 31.7 倍差异;Table 12 里 BumbleBee 的 BERT-Large 通信 20.85 GB 反而高于 LLaMA-7B 的 6.82 GB,也只是因为 I./O. size 不同。
Q8(判断) "3PC 用三台机器并行,所以 MatMul 的通信被分摊掉了。" 这句话错在哪?
答案:错在"分摊"。3PC 的收益来自预支与 RSS:乘法变成各方的本地计算加一次 re-sharing,在线通信量下降;如果只是把同样的工作量并行切分,总通信不会降。证据是 Table 13 里 3PC 的 Comm 标为 −(低于 2PC 的 +),而"分摊"不可能产生这个方向的变化。
9. 原文定位索引
行号指 paper.txt(pdftotext -layout 抽取,1380 行);页码指 PDF 页。
| 主题 | 章节 / 表 | paper.txt 行号 | 页码 |
|---|---|---|---|
| 引言、贡献列表、章节导览 | §1 | 25–88 | p1–2 |
| PTI 场景与 Definition 1 | §2.1 | 90–117 | p2–3 |
| Transformer 背景与隐私风险 | §2.2 | 119–201 | p3–4 |
| FE / MPC / HE 工具箱 | §2.3 | 203–279 | p4–6 |
| 威胁模型(半诚实、诚实多数) | §3 | 280–292 | p6 |
| 密码学层面的挑战 | §4.1 | 300–317 | p6–7 |
| 三类 setup 与瓶颈迁移 | §4.2 | 320–344 | p7 |
| 30 项工作总览 | Table 1 | 361–410 | p8 |
| 各工作优劣(含 THE-X 隐私缺陷注) | Table 2 | 420–442 | p9 |
| 可用实现链接 | Table 3 | 444–451 | p9 |
| 按 MPC backbone 的总览(含重复行) | Table 4 | 469–503 | p10 |
| 可用 backbone 链接 | Table 5 | 506–518 | p10 |
| 线性层:MatMul 协议 | §5.1 | 528–565 | p11 |
| 线性层:MPC / HE / 混合三路线 | §5.2–§5.3 | 566–666 | p11–13 |
| 12.7% 的原始句子 | §5.2 | 594–595 | p12 |
| HE 方案对比(含 bootstrapping 列) | Table 7 | 667–677 | p14 |
| Softmax:换函数 / exp 近似 / 倒数 | §6.1 | 687–843 | p14–16 |
| Softmax 单算子对比(含 LAN / WAN) | Table 8 | 826–841 | p16 |
| GeLU:换函数 / 分段多项式 / LUT | §6.2 | 844–1013 | p16–17 |
| GeLU 单算子对比 | Table 9 | 877–889 | p17 |
| LayerNorm:rsqrt 与化简风险 | §6.3 | 1014–1083 | p18–19 |
| LayerNorm 单算子对比 | Table 10 | 1047–1057 | p19 |
| 评测对比与两条轴 | §7 | 1085–1134 | p19–20 |
模型配置(层数 / d / 头数 / MLP / 参数量) | Table 11 | 1102–1115 | p20 |
| 结论(正文为空) | §8 | 1136 | p20 |
| 端到端资源与精度对比 | Table 12 | 1150–1198 | p21 |
| 三类 setup 的正式说明 | 附录 A | 1345–1375 | p24 |
| setup 对比矩阵 | Table 13 | 1363–1375 | p24 |
10. 存疑与引用边界
这一节不是挑错,而是"这句话能不能直接写进你的论文"。五处需要加限定:
- 12.7% 的 setup 归属。 原文 "under MPC" 语义宽泛,但段落对象是 2PC-Dealer。引用时写 "under the 2PC-Dealer setting (MPCFormer / Wang et al.)",不要写 "in 2PC"。
- 87.3% 不是原文数字。 它是 100 − 12.7 的推算。可以自己算,但必须标 derived,或者只引 12.7%。
- "三种威胁模型"是笔记框架,不是原文结构。 §3 只正式定义了半诚实与诚实多数;恶意模型只在 §4.2 一句里被提及。写 related work 时说"该综述讨论了半诚实与诚实多数假设,并提及恶意情形"更准确。
- FE 的定位。 §2.3.1 说 FE 只把第一层放密文、其余在明文算,会 "leak some client data information to the server";但综述没有明确判定 FE 不满足 Definition 1。Table 2 的 "Lack of strict privacy protection" 是针对 THE-X 的中间结果,不是针对 FE。两句不能合成一句引用。
- Table 1 与 Table 4 名单不一致。 前者 30 行、后者 29 行且 SecFormer 出现两次;做系统性统计(比如"2PC 有 21 篇")时,要说明口径是 Table 1。
三条引用建议:
- 引"30 项工作 / 三类 setup"时,用 Table 1 并注明点数是自己数的。
- 引端到端数字时,必须同时给出 I./O. size 与网络条件(Table 12 的
Comm. Set.列就是干这个的)。 - 想引"挑战与未来方向",别引 §8(空的)——回到 §4.1、§7 和被引的一手论文自己总结。
相关阅读
评论
评论区尚未配置:部署 Twikoo 后端后,将 envId 填入 lib/site.ts。