15. PPML - 隐私保护机器学习综述 - 《Towards Efficient Privacy-Preserving Machine Learning: A Systematic Review》
2026/3/20 6:41:52 网站建设 项目流程

前言

本文主要记录了来自北京大学和蚂蚁集团发表在 archive 上的论文《Towards Efficient Privacy-Preserving Machine Learning: A Systematic Review from Protocol, Model, and System Perspectives》,相应的论文推荐仓库放在了 GitHub 上。这篇文章分别从协议、模型、系统三个层面介绍了隐私保护机器学习的发展,下面是文章的总体结构:


文章目录

  • 前言
  • 一、预备知识
    • 1. 密态推理架构
    • 2. PPML中的常用设置
      • 2.1. 网络设置
      • 2.2. 核心评估指标
  • 二、协议级优化
    • 1. 线性层优化
      • 1.1. 基于 OT 的协议
      • 1.2. 基于 HE 的协议
        • 1.2.1. SIMD 编码
        • 1.2.2. 系数编码
        • 1.2.3. 嵌套编码
        • 1.2.4. 方法对比
      • 1.3. 基于 SS 的协议
      • 1.4. 预处理
    • 2. 非线性层优化
    • 3. 图级优化
      • 3.1. 交互式协议
      • 3.2. 非交互式协议
  • 三、模型级优化
    • 1. 线性层优化
    • 2. 非线性层优化
  • 四、系统级优化
    • 1. 编译器优化
    • 2. GPU 优化
  • 五、未来工作
    • 1. 协议、模型、系统这三个层级进行协同优化
      • 1.1. 协议 - 模型协同优化
      • 1.2. 协议-系统协同优化
    • 2. 直接使用 HE 计算非线性层
    • 3. LLM 时代的 PPML

一、预备知识

1. 密态推理架构

现有的 2PC 推理架构可以分为两类:

  • 交互式推理:推理时客户端和服务器之间交互,共同计算。其中,非线性层通常使用 OT 或 GC 进行保护,而线性层使用 OT 或 HE。
  • 非交互式推理:客户端上传加密数据,服务器进行密态推理。

2. PPML中的常用设置

2.1. 网络设置

为了模拟真实的部署环境,PPML研究通常会在两种典型的网络条件下进行评估:

  • 局域网设置:高带宽 377 MBps、低延迟 0.3 ms,此时系统瓶颈通常是计算能力而非网络,常用于数据中心内部、同机房服务器间的通信场景。
  • 广域网设置:低带宽 40 MBps、高延迟 80 ms ,此时网络通信成为主要瓶颈,常用于跨地域、通过互联网的客户端-服务器通信场景,如MLaaS真实场景。

2.2. 核心评估指标

PPML研究主要关注以下两个维度的开销:

  • 延迟:分别在 LAN 和 WAN 设置下测量完成整个 PPML 推理任务所需的总时间。
  • 通信量:在执行 PPML 协议过程中,参与方之间需要交换的数据总量。

二、协议级优化

1. 线性层优化

线性层主要出现在卷积层、注意力层和前馈网络。

1.1. 基于 OT 的协议

客户端持有输入x xx的秘密份额⟨ x ⟩ c \left⟨x\right⟩_cxc,服务器持有输入x xx的另一秘密份额⟨ x ⟩ s \left⟨x\right⟩_sxs以及明文形式的模型权重w ww,双方协作安全地计算线性层输出y = w ⋅ x y=w\cdot xy=wx

  • 预处理阶段:对于模型权重的每一比特,客户端和服务器分别本地生成随机向量r rrs ss,双方执行一系列 OT 协议,使得客户端能计算出其输出份额⟨ y ⟩ c = w r − s \left⟨y\right⟩_c=wr−syc=wrs
  • 在线阶段:客户端将输入份额 ⟨x⟩_s 发送给服务器,服务器计算⟨ y ⟩ s = w ⋅ ( x − r ) + s \left⟨y\right⟩_s=w\cdot(x−r)+sys=w(xr)+s

文中指出,基于 OT 的线性层协议有以下两个优化方向:

  • 减少乘法数量
  • 降低输入和模型参数的比特宽度

1.2. 基于 HE 的协议

HE 方案对具有一维系数向量的多项式进行操作,而 DNN 则对张量进行计算,因此 Encoding 操作需要将张量映射为向量。现有的编码方法有三种,相关文献汇总如下:

1.2.1. SIMD 编码

SIMD 编码将向量作为多项式的系数,利用复数根将向量打包到多个槽位中,每个槽位代表了多项式的一个点值。SIMD 编码下的输入与输出格式保持相同,便于在层之间直接串联,其主要性能瓶颈在于旋转操作的高开销。下面介绍 SIMD 编码下的矩阵乘法和卷积操作:

  • 矩阵乘法

  • 卷积操作

文中指出,旋转是 SIMD 编码的瓶颈,有以下两个优化方向:

  • 减少打包的元素数量,从而减少同一密文不同槽之间的交互。
  • 许多旋转操作会产生中间结果,这些中间结果可以被后续计算复用。例如,利用 BSGS 方法中,预计算小步旋转的结果,通过组合这些小步旋转,得到任意位置的旋转结果。
1.2.2. 系数编码

在 HE+MPC 混合框架中,基于 OT 的协议在环Z 2 l Z_{2^l}Z2l上的效率显著优于在Z q Z_qZq上的效率,而 SIMD 编码需要在Z q Z_qZq上进行计算。为此,引入系数编码,将向量元素作为多项式的系数,利用多项式乘法在系数域上天然具备的卷积结构,高效的模拟卷积运算。该编码完全避免旋转操作,计算效率最高,但其输入、输出格式不一致,层间可组合性最差,主要用于 HE+MPC 场景。下面是一个简单的编码示例:

  • 矩阵乘法:输入向量从上到下编码为多项式;参数权重从上到下,从左到右编码。
  • 卷积操作:输入向量从上到下,从左到右编码;参数权重从下到上,从右到左编码。

由于系数编码下密文分布结果具有稀疏性,即生成密文中只有部分有用,因此系数编码的改进侧重于有效减少传输密文数量。有两种主要方法可以实现这一目标:

  • 重新设计分块方式,将大矩阵计算分解为小块,让输出更紧凑。
  • 使用 HomAuto 将多个稀疏密文的有效系数提取并打包到一个密文中,同时最小化 HomAuto 操作次数。
1.2.3. 嵌套编码

嵌套编码通过离散傅里叶变换转换 SIMD 编码和系数编码:
< DFT ( w ) > SIMD × < DFT ( x ) > SIMD = DFT ( < w > Coef × < x > Coef ) \left<\text{DFT}(w) \right>_\text{SIMD} \times \left<\text{DFT}(x) \right>_\text{SIMD} = \text{DFT}(\left<w\right>_\text{Coef} \times \left<x\right>_\text{Coef})DFT(w)SIMD×DFT(x)SIMD=DFT(wCoef×xCoef)

1.2.4. 方法对比

下面是各个方法的优势对比:

  • 卷积:嵌套编码 NeuJeans 在旋转和乘法上取得了最佳平衡,总体最优。
  • 矩阵乘:BOLT(SIMD) 和嵌套编码表现最佳。
  • 混合框架:系数编码计算量最小,但受限于输入输出的一致性,通常作为混合框架中的加速模块。

不同编码方法的特点如下:

  • SIMD:大多数 SIMD 编码可以保持输入和输出编码的一致性,允许连续计算,适用于 FHE 场景。
  • 系数编码:系数编码消除了旋转,具有较低的计算复杂度,在卷积方面的计算 / 通信复杂度明显低于 SIMD,但编码不一致,仅用于 HE+MPC 的混合协议场景。
  • 嵌套编码:适用于连续计算场景,单个卷积可采用系数编码以高效执行多项式卷积,而多卷积核的并行计算则利用 SIMD 编码的批处理能力。然而,连续计算通常依赖密文域的 DFT 变换,需要与自举结合,成本较高。

1.3. 基于 SS 的协议

三方计算场景中,采用( 2 , 3 ) (2,3)(2,3)-RSS 将一个秘密值x xx被拆分为三个随机份额x 0 , x 1 , x 2 x_0,x_1,x_2x0,x1,x2,满足x = x 0 + x 1 + x 2 x=x_0+x_1+x_2x=x0+x1+x2。每个参与方P i P_iPi持有两个份额( x i , x i + 1 ) (x_i,x_i+1)(xi,xi+1),恢复时公开两方的份额,计算三个不同值的和。假设每个参与方有三个常数c 1 , c 2 , c 3 c_1,c_2,c_3c1,c2,c3和两个秘密份额[ ⁣ [ x ] ⁣ ] , [ ⁣ [ y ] ⁣ ] [\![x]\!],[\![y]\!][[x]],[[y]],则可以进行以下计算:

  • 加法:线性组合c 1 x + c 2 y + c 3 c_1x+c_2y+c_3c1x+c2y+c3的三个份额为( c 1 x 0 + c 2 y 0 + c 3 , c 1 x 1 + c 2 y 1 , c 1 x 2 + c 2 y 2 ) (c_1x_0+c_2y_0+c_3,c_1x_1+c_2y_1,c_1x_2+c_2y_2)(c1x0+c2y0+c3,c1x1+c2y1,c1x2+c2y2)
  • 乘法:为计算乘积x y xyxy,每个参与方P i P_iPi计算z i = x i y i + x i + 1 y i + x i y i + 1 z_i=x_iy_i+x_{i+1}y_i+x_iy_{i+1}zi=xiyi+xi+1yi+xiyi+1,并将z i ′ = α i + z i z'_i=\alpha_i+z_izi=αi+zi发送给P i − 1 P_{i-1}Pi1,则P i P_iPi所拥有的份额为( z i ′ , z i + 1 ′ ) (z'_i,z'_{i+1})(zi,zi+1)。其中,α i \alpha_iαiP i P_iPi利用伪随机生成器生成,满足α 1 + α 2 + α 0 = 0 \alpha_1+\alpha_2+\alpha_0 =0α1+α2+α0=0

1.4. 预处理

近期多数 PPML 工作都将推理过程分为离线和在线两个阶段,并将大部分在线成本转移到离线阶段。离线阶段的核心步骤是生成 Beaver 三元组,其主流构造方法包括基于 OT 的生成和基于 HE 的生成。前者计算开销较低,而后者通信成本更低。

2. 非线性层优化

非线性层主要表现在 CNN 中的 ReLU 函数和 Transformer 中的 GeLU 和 SiLU 函数。

方法细节
基于 GC 的协议用GC评估函数时只需要常数轮,但通信开销很高
基于 OT 的协议百万富翁运算(Millionaires’/Wrap):用于比较操作。
与运算(AND):通过比特三元组实现,主要使用 16 选 1 OT。
布尔转算术(B2A): 将布尔份额转为算术份额,主要使用 2 选 1 OT。
多路复用器(Multiplexer ,MUX): 实现条件选择逻辑,主要使用 2 选 1 OT。
查找表(Lookup Table, LUT):允许一方安全地查找另一方持有的预计算输入-输出对。
基于 HE 的协议多项式逼近:连续函数使用多项式插值逼近,并且为了数值稳定性常用切比雪夫基;符号函数、取模等不连续函数需采用间接方法,例如傅里叶级数近似、tanh逼近、极小极大多项式近似。
FHE over the Torus(TFHE):TFHE 支持可编程自举,可直接通过查找表计算任意单变量函数,适用于非线性层的高效计算。然而,TFHE方案不支持SIMD操作,与BFV/CKKS相比,延迟更高。现有方法通过与 BFV/CKKS结合实现多输入并行计算,或将TFHE应用于量化神经网络,降低输入比特宽度。

评估非线性函数时,各方法对比如下:

  • 基于 GC 的协议:只需要一轮持续的循环,但通信成本很高,限制了最近的工作中的采用。
  • 基于 OT 的协议:适用于不同的非线性函数,但由于频繁的交互计算,通信成本很高,可以使用 VOLE 降低通信成本。
  • 基于 FSS 的协议:为比较等特定功能提供亚线性通信,但缺乏通用性。
  • 基于 HE 的协议:实现了低通信成本,但计算开销较高。TFHE利用可编程自举在没有近似的情况下评估任意非线性函数。

3. 图级优化

3.1. 交互式协议

交互式协议通常需要同时使用 HE 和 SS,二者之间需要进行协议转换。

  • HE 转 SS 的转换流程:持有密文E n c ( x ) Enc(x)Enc(x)的服务器随机采样一个向量r rr,并计算E n c ( x − r ) Enc(x-r)Enc(xr),将其发送给客户端。客户端解密得到明文x − r x-rxr,作为x xx的一个加性秘密份额,而服务器保留份额。
  • SS 转 HE 的逆向转换流程:客户端同态加密其份额E n c ( x − r ) Enc(x-r)Enc(xr)并将其发送给服务器。服务器将自己的份额r rr同态地加到E n c ( x − r ) Enc(x-r)Enc(xr)上,恢复出E n c ( x ) = E n c ( x − r + r ) Enc(x) = Enc(x-r + r)Enc(x)=Enc(xr+r)

然而,将上述方法直接应用于 CKKS 密文可能引发安全隐患,其根源在于对 SIMD 编码处理不当。为此,可以通过在编码前进行转换步骤以消除潜在风险。

3.2. 非交互式协议

非交互式协议包括以下操作:

方法细节
自举实际神经网络中的乘法深度远超过了 LHE 的参数配置,因此不得不使用自举。CKKS的自举步骤包括系数转槽位(Coefficient-to-Slots, CtS)、槽位转系数(Slots-to-Coefficient, StC)、模数提升(Modular Raising)、近似模约减(Approximate Modular Reduction)五个操作。从图级优化的角度来看,可以将自举中的域转换步骤与神经网络计算图融合,隐藏或分摊开销。
通过折叠减少层级消耗AvgPool折叠:将平均池化层与卷积层融合为带缩放因子的卷积。
激活函数折叠:将多项式激活函数转换为“首一多项式”,并将缩放因子向后传播。
BatchNorm折叠:将批归一化的仿射参数吸收到前一个线性层中。
惰性重缩放在CKKS中,每次乘法后都需要重缩放以控制缩放因子,但重缩放本身计算代价高。因此,延迟重缩放,不在每次乘法后重新缩放,而是推迟到整个线性层的末尾,从而在多次乘法中分摊成本。

三、模型级优化

1. 线性层优化

对于CNN来说线性层主要涉及卷积;对于 Transformer,线性层主要涉及注意力和前馈中的矩阵乘法。目前有两个优化方向:

  • 减少每层的乘法操作次数:这类工作通过设计特殊的、计算效率更高的线性层结构来替代标准结构。
  • 减少总的线性层层数:这类工作通过合并或删减网络中的线性层来减少总体计算量。

相关文献汇总如下:

2. 非线性层优化

在模型粒度上直接进行近似或修剪通常会导致显著的性能退化。为缓解这一问题,近年来的研究逐渐转向更细粒度的近似策略,例如利用 NAS 算法实现逐层或逐头的精细化近似;或通过以更简单的运算、低阶多项式替换非线性层,并结合再训练以恢复模型性能;或采用高阶多项式(≥3 阶)逼近非线性层,通常无需再训练即可获得较好的近似效果,但其计算开销会显著增加。

方法细节
ReLU 近似替换与近似:将模型中所有的ReLU统一替换为其他对PPML更友好的函数,通常需要重新训练模型以适应改变。常用方法有多项式近似、函数替换与简化、用一个像素点的计算结果代表一定区域的结果、重新分配通道。
细粒度剪枝与搜索:借助神经架构搜索(NAS)技术有选择性地移除网络中“不重要”的ReLU,同时保留关键的ReLU以维持精度。
GeLU 近似重训练:用 ReLU、LeakyReLU 替换,直接移除,二次多项式近似,或者用 NAS 移除不重要的层。使用这些方法时需要重训练。
不训练:使用分段函数近似,当定义域小于一定值时为常数,大于一定值时为一阶多项式,中间部分使用 4 到 6 阶多项式,因此计算开销较高。
Softmax 近似替换:在模型训练过程中用二次函数、ReLU、( x + c ) p (x+c)^p(x+c)p等高效算子替换指数、最大和除法操作。
剪枝:直接减少Softmax的数量,例如修剪/合并head、KV缓存压缩。
高阶近似:在没有训练的情况下,用泰勒级数等高阶多项式替换指数、最大和除法操作。
查表:预计算函数并存储,评估时直接查表,常用于指数或倒数的计算。
量化量化需要将激活值或权重压缩到低比特宽度,以实现高效的训练或推理。将其与 PPML 结合起来时通常需要模型、算法、PPML 协议三者之间的协同优化,以提高端到端的效率。

相关文献汇总如下:


四、系统级优化

1. 编译器优化


手动编写高效的HE程序极其困难,因此需要专门的编译器技术,将高级的ML计算图自动、高效地映射到底层的HE原语上。其
困难主要体现在以下几个方面:

问题描述
数据流约束HE程序必须是静态的数据流图,不支持原生控制流,如条件分支、动态循环。
有限的指令集FHE仅支持少量同态操作,如加法、乘法、旋转,表达复杂函数需要数学近似。
性能调优复杂需要精细管理噪声增长、数据精度和加密参数,这对专家而言也非易事。
任务不适配当涉及 PPML 任务时,出现了额外的困难:
① 神经网络涉及许多非线性层,难以在 HE 中有效表达。
② 优化 SIMD 编码的数据布局对于神经网络的大型张量操作至关重要,但手动进行这项工作极具挑战性。
③ 在 CKKS 中正确地安排 scale 和 bootstrapping 是使用该方案的核心难点,即使是熟悉 FHE 的专家也需要谨慎处理。

针对上述问题,现有的解决方法有:

方法描述
打包优化利用 RLWE-based HE方案的 SIMD 能力,将多个数据元素打包到一个密文中,并通过旋转 操作实现灵活的数据编排:
专家驱动,固定布局:提供一组固定的数据布局,每种布局对应一组预定义的高效内核。
灵活布局,自动矢量化:引入更灵活的布局表示,并尝试自动优化布局和旋转操作,以最小化延迟和噪声增长。
高级抽象与统一算法:提出更抽象的布局表示,支持任意维度顺序、交错和间隙。通过分析性算法选择最优布局,最大化打包密度,最小化布局转换。
缩放管理与自举调度在计算图中智能地插入 Rescale 和 Bootstrapping 操作,在保证计算正确性的前提下,最小化整体延迟:
仅缩放管理:早期编译器只做缩放管理、不支持自举。
支持自举调度:自举放置是 NP 难问题,且必须与缩放管理协同。

2. GPU 优化

HE计算与明文计算之间存在巨大性能鸿沟,文章将从操作和系统两个层面讨论 GPU 优化。操作层面主要聚焦于,在 GPU 上实现数论变换、密钥切换、自举等操作;系统级层面主要聚焦于,在不同系统架构下定制硬件设计。评估 GPU 加速 HE 框架性能的常见基准任务如下:

  • HELR:同态逻辑回归,分训练和推理两个任务。
  • RNN:循环神经网络,在加密嵌入上运行 RNN 推理。
  • HECNN:HE友好型CNN,用平方函数代替非线性激活的轻量CNN。
  • ResNet:在 CIFAR-10 或 ImageNet 上运行标准 ResNet 模型的加密推理。

相关文献汇总如下:


五、未来工作

1. 协议、模型、系统这三个层级进行协同优化

1.1. 协议 - 模型协同优化

  • 量化不能直接用于 PPML:量化虽然降低了计算量,但在PPML中会引入昂贵的在线比特扩展、截断、重量化等协议开销。需要设计PPML友好的量化算法,并与协议融合等技术结合,最小化总成本。
  • 非线性层优化无法减少总通信:大量研究专注于剪枝 ReLU/GeLU 以降低在线延迟,但忽略了 MLaaS 中的预处理成本。
  • 有效利用稀疏性对 PPML 效率至关重要:LLM 中的注意力机制天然稀疏,但直接剪枝会导致精度损失或引入额外协议开销,需要设计协议成本感知的剪枝算法。
  • 避免再训练:对于LLM,额外的再训练是不切实际且不可扩展的。

1.2. 协议-系统协同优化

  • 编译器-协议协同设计是高效HE的关键:手动 FHE 编程极其复杂,需要编译器。然而,现有编译器的打包优化大多基于 SIMD 编码,可能错过了更高效的系数编码,将协议级的编码集成到编译器框架中是实现重大性能提升的关键机遇。
  • 面向ML的GPU组件不能直接加速 PPML:现代 GPU 的 TCU 能加速明文 ML,但其有限的数值精度难以直接支持 HE 所需的高精度模运算。这要求密码协议与硬件能力进行协同设计。未来可能需要重新设计协议,以更好地利用 TCU 特性;或与模型量化协同,降低HE操作所需的数值精度,从而充分利用 GPU 的新组件。

2. 直接使用 HE 计算非线性层

基于 OT 的非线性层通常带来较大的通信开销,而基于 HE 的方法在通信效率上更具优势。现有方案普遍依赖多项式逼近来实现非线性层的同态计算。未来的研究方向之一,是探索无需多项式逼近、能够直接在 HE 上高效实现非线性运算的机制,以进一步提升性能与实用性。

3. LLM 时代的 PPML

私有 LLM 推理的关键挑战可以大致概括如下:

  • 大规模线性层:与 CNN 中常用的矩阵向量乘法不同,LLM 涉及嵌入表、注意力层 和 FFN 层中的大量高维矩阵乘法。例如,在 GPT-2 基模型中,FFN 层的向上投影需要按维度的矩阵乘法。
  • 复杂的非线性层:与 CNN 中的简单 ReLU 不同,LLM 由更复杂的非线性函数组成,如 Softmax、GeLU 和 SiLU,这些函数需要昂贵的指数、tanh 和除法协议。
  • 复杂的 PPML 感知优化:LLM 优化比 CNN 和 ViT 复杂得多,应优先考虑无训练方法。同时,简单的 KV-cache 压缩无法提供预期的效率改进,因此应仔细设计 PPML-friendly 算法。此外,设计密态参数微调,如 LoRA,可能是一个有前景的研究方向。

💥这两天脑袋昏昏的,阅读这篇文章时想不清东西,因此上述记录中可能存在理解错误,欢迎指正

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询