以当前热点GPT模型的GPT2为例演示SPU的扩展性,支持快速实现密文大模型预测
讲师:吴豪奇
学习链接:https://www.bilibili.com/video/BV1cT421Y71k
一、隐私保护机器学习背景
1. 数据的重要性和安全性
-
数据至关重要
- 训练高质量模型需要大量的数据(依赖于数据的质量和数量)
- 模型服务商需要用户输入数据作为推理输入
-
数据中包含大量敏感信息
-
生物数据:图像、声音、基因信息等
-
金融数据:收入、支出、信贷等
-
法律法规监管:《个人信息保护法》、GDPR
机器学习中的数据隐私问题日益受到关注
-

那么,接下来就要考虑如何在发挥数据价值的同时保护数据安全
2. 解决方案:安全多方计算(MPC)
也可以基于TEE、基于FL
(1) MPC
多个参与方可以在互不泄露任何信息(除结果外)的情况下协作计算一个函数,并得到正确的结果。
但是存在风险,计算结果会泄漏给参与方。但是,一般我们认为这种反推结果的方式存在一定难度。例如两个参与方执行求和运算,Alice输入a=10a = 10a=10,Bob输入b=7b = 7b=7,求和得到a+b=17a+b=17a+b=17,那么Bob通过对结果进行反推,便可得到另一参与方的值(17−7=1017-7=1017−7=10)。
例如三方求和。Alice拥有10,Bob拥有7,Charlie拥有25。各个参与方将数据分片,然后发送给参与方。然后各自计算本地的分片数据和(party_sum)。最后累加所有参与方的分片数据和,就可得到结果42。

(2) 基于MPC的隐私保护机器学习PPML
Privacy-Preserving Machine Learning (PPML)
-
隐私训练
输入方有多个,期望通过隐私保护机器学习扩充数据维度,训练一个表现更好的模型。

-
隐私推理
一个作为数据提供方的Alice,另一个为模型提供方Bob。期望通过隐私推理得到Alice提供的数据在Bob的模型下的推理结果,同时保护Alice的数据不被泄漏,Bob的模型不会泄露给Alice。

- 期望可以直接用 MPC 的方式高效地运行已有的机器学习程序,对ML工程师十分友好。
二、SPU架构简介

核心系统组件:
- 前端:机器学习程序
- 编译器:生成并优化SPU的IR(PPHLO)
- 运行时:以MPC协议的方式执行PPHLO
1. 前端:机器学习程序
- 基于JAX、TensorFlow和PyTorch开发机器学习程序。
- 通过Accelerated Linear Algebra(XLA)进行表示
2. 编译器:生成并优化 SPU 的 IR(PPHLO)
通过SPU的编译器将明文的计算过程转换为隐私保护的算子
3. 运行时:以MPC协议的方式执行PPHLO
- SPU支持的MPC协议很多,例如这里的ABY3、Cheetah和SPDZ2K
4. SPU的设计目标
易用、可扩展、高性能

三、NN密态训练/推理示例
1. 逻辑回归
https://github.com/secretflow/spu/blob/0.9.1b0/examples/python/ml/jax_lr/jax_lr.py
(1) 数据从哪来?
- 数据提供方Alice提供了特征X1\mathbf{X}_1X1,数据提供方Bob提供了特征X2\mathbf{X}_2X2
- Alice对应device P1,然后加载了前50个特征和标签yyy
- Bob对应device P2,加载了后50个特征

(2) 如何加密保护数据?
- 数据方对数据加密发送到MPC计算方
- 外包模式,计算方拿到的是密文
import spu.utils.distributed as ppd
x1 = ppd.device("P1")(lambda x: x[:, :50])(x)
x2 = ppd.device("P2")(lambda x: x[:, 50:])(x)
y = ppd.device("P1")(lambda x: x)(y)

最低0.47元/天 解锁文章
1889

被折叠的 条评论
为什么被折叠?



