01 隐私保护机器学习背景

机器学习中的数据隐私问题日益受到关注

PPML(Private-Preserving Machine Learning)是一种隐私保护的机器学习方法,它允许多方合作进行机器学习模型的训练,而不必共享敏感的原始数据。这个方法通过使用密码学技术和隐私保护协议来确保数据的隐私,同时允许多方在不泄露数据的情况下共同训练机器学习模型。

SPU(Secure Processing Unit)是一种专门设计用于隐私保护计算的硬件设备。SPU提供了安全的计算环境,保护数据和计算过程不受恶意攻击或非授权访问的影响。基于SPU的机器学习建模实践意味着使用SPU来执行PPML算法,以保护数据隐私并进行安全的机器学习建模。

以下是基于SPU机器学习建模实践的一般步骤:

  1. 数据准备:参与者共享数据之前,首先需要对数据进行预处理和准备。这可能包括数据清洗、特征选择和数据转换等步骤。确保数据不包含敏感信息,并符合PPML算法的要求。

  2. SPU环境设置:每个参与者需要配置和准备SPU环境。这包括安装和配置SPU设备、生成密钥对、设置安全通信渠道等。

  3. 加密计算:SPU使用密码学技术对数据进行加密计算。这确保数据在计算过程中得到保护,并防止未授权的访问。

  4. 模型训练:SPU执行PPML算法,以保护数据隐私并进行模型训练。这可能涉及到迭代计算、参数调整和模型评估等步骤。

  5. 模型合并:在所有参与者完成模型训练后,他们可以使用加密技术将各自的模型进行合并。这确保了模型的隐私,并提供了一个共同的模型来进行后续的预测和推理。

  6. 模型评估和部署:合并的模型可以进行评估和测试,以确保其在实际应用中的性能和准确性。一旦模型通过测试,它可以被部署和应用于实际的预测任务中。

总之,基于SPU的机器学习建模实践通过使用PPML算法和SPU设备来保护数据隐私,并允许多方合作进行机器学习模型的训练。这种方法在需要保护敏感数据但又需要进行合作建模的场景中非常有用。

数据至关重要

  • 训练高质量模型需要大量的数据

  • 模型服务商需要用户输入数据作为推理输入

数据包含敏感信息

  • 生物数据:图像、声音、基因信息等

  • 金融数据:收入、支出、信贷等

  • 法律法规监管:《个人信息保护法》、GDPR

如何在发挥数据价值的同时保护数据安全?

解决方案:安全多方计算(MPC)

多个参与方可以在互不泄露任何信息(除结果外)的情况下协作计算一个函数

基于MPC的隐私保护机器学习(PPML)

隐私保护机器学习 = Privacy-Preserving Machine Learning (PPML)

我们是否可以直接以MPC的方式高效地运行已有的机器学习程序

02 SPU架构简介

SecretFlow-SPU

核心系统组件

主要设计目标

易用 、可扩展 、高性能

03 NN密态训练/推理示例

密态训练与推理

以逻辑回归为例,回答四个问题:

逻辑回归代码于:spu/examples/python/ml/jax_lr/jax_lr.py

数据从哪来?

  • 数据提供方Alice,Bob加载数据
  • 对应P1,P2 device

如何加密保护数据?

  • 数据方对数据加密发送给MPC计算方
  • 外包模式,计算方拿到的是密文

如何定义模型计算?

  • 使用JAX手动实现前向与反向传播

如何执行密态模型计算?

  • 计算方以密文数据作为输入,将模型的训练/推理计算

图通过SPU编译器转换为相应的密态算子计算图

  • 由SPU device按照MPC协议逐个执行

整个密态训练流程和明文ML类似,除了ppd.device是什么?
P1,P2对应明文输入设备
SPU对应由两方Cheetah协议实现的密态计算设备
通过SPU device抽象
来实现PPML中的数据输入以及密态训练/推理

stax/flax

如何应用到更为复杂的建模?

  • LR计算简单,手动实现可行
  • DNN?手动实现×
  • stax or flax

(1)stax 是 JAX 的一个简洁的神经网络库,它提供了一种简单的方式来定义和训练神经网络模型。stax 以功能性编程风格为基础,提供了一组基本的层构建块,可以用来组合和构建复杂的神经网络。stax 提供了一个轻量级的 API,用于定义和训练神经网络。使用函数式编程范式,这使得模型定义和训练非常简洁和易于理解。完全基于 JAX 构建,因此可以利用 JAX 的自动微分和硬件加速功能。

(2)flax 是一个功能强大且灵活的神经网络库,它建立在 JAX 之上。flax 提供了更加丰富的功能和更高的灵活性,可以用来构建、训练和部署复杂的深度学习模型。flax 提供了丰富的模块和功能,可以用来构建复杂的神经网络架构。允许用户定义自定义层和模块,并且支持动态图和静态图的混合使用。同样利用 JAX 的自动微分和硬件加速功能,同时提供更高级的抽象和功能。

Huggingface+GPT2

Adapted from the Huggingface GPT-2 Example:

https://huggingface.co/docs/transformers/main/en/model_doc/gpt2

如何复用构建好的模型?

  • Huggingface明文实现

  • 迁移到密态推理

 

 

如何支持不同模型?

• 实现所需的密态算子

• 目前SPU缺失或者性能有优化空间

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐