本讲主要内容是PPML入门,即基于SPU进行隐私保护的机器学习的建模实践。通过本次学习,可以了解隐私保护机器学习以及隐语SPU的架构,通过实战可以了解如何基于隐语进行隐私保护的NN模型建模。
一、隐私保护机器学习背景
机器学习中的数据隐私问题日益受到关注,数据是至关重要的,训练高质量模型需要大量数据,同时模型服务商也需要用户输入数据作为推理输入,同时数据也包含了很多敏感信息。在发挥数据价值的同时保护数据安全成为一个需要解决的问题。 隐语提供的解决方案是基于安全多方计算(MPC)也即基于密码学。MPC是指多个参与方可以在互不泄漏任何信息(除结果外)的情况下协作计算一个函数,并且可以得到正确的计算输出。
基于MPC的隐私保护机器学习(PPML)主要有两方面的内容,隐私训练和隐私推理。由于ML和MPC是完全不同的domain,是否可以直接以MPC的方式高效地运行已有的机器学习程序成为另一个需要解决的问题。
二、SPU架构简介
核心系统组件包括前端(机器学习程序),编译器(生成并优化 SPU 的 IR(PPHLO)), 运行时(以MPC协议的方式执行PPHLO)。
隐语(SecretFlow-SPU)SPU的主要设计目标:易用、可扩展、高性能。
三、NN密态训练/推理示例
首先以逻辑回归为例,考虑如下4个问题:
1、数据从哪来?
数据提供方Alice,Bob加载数据;对应P1,P2 device
2、如何加密保护数据?
数据方对数据加密发送给MPC计算方;外包模式,计算方拿到的是密文
3、如何定义模型计算?
使用JAX手动实现前向与反向传播
4、如何执行密态模型计算?
计算方以密文数据作为输入,将模型的训练/推理计算 图通过SPU编译器转换为相应的密态算子计算图;由SPU device按照MPC协议逐个执行
整个密态训练流程和明文ML类似,P1,P2对应明文输入设备 SPU对应由两方Cheetah协议实现的密态计算设备,通过SPU device抽象 来实现PPML中的数据输入以及密态训练/推理。
对于逻辑回归这类简单的问题,可以通过JAX中手动实现,但是对于更为复杂的建模手动实现就不容易了,推荐使用stax or flax(基于JAX实现的针对ML的二次开发库)。