隐语目前暂定支持的设备列表:
一 PYU
- 数据所有者是SecretFlow中的PYU设备,明文并成为PYU Objects
- 一个PYU object(明文)可以被转化为秘密分享,被叫做SPU Object。
- Python函数可以被发送至SPU设备执行,背后是SPU编译器和运行时。
PYU是数据所有者的一方,从初始化的device中初始化一个PYU,PYU通过__call___方法会把明文转成 PYUObject,存在多个返回值会生成多个PYUObject, PYUObject 是数据源方的ray object下的数据
二 SPU
SPU(安全处理单元)是一个特定领域的编译器和运行时套件,旨在提供具有可证明安全性的安全计算服务。
SPU实现了多种MPC协议
SPU 支持PSI 安全求交任务 ECDH,KKRT,BC22PCG等等
三 HEU
HEU (Homomorphic Encryption processing Unit) 是隐语的一个子项目,它实现了高性能的同态加密算法
四 任务调度
secretflow 整体任务调度如下所示,以ray 分布式框架为核心,PYU Node为基础的调度模式
五 代码示例及分析
初始化PYU角色
alice = sf.PYU(‘alice’)
pyu_x = alice(lambda : x)()
pyu会通过__call__方法将本地py数据映射到ray object store中
真正计算的是通过share去计算的,本地数据pyu需要转换成spu数据
spu_x = pyu_x.to(spu_device)
to方法实则是将pyu的明文数据转位spu_object 也就是share数据
SPU真正计算的任务是在__call__方法中
new_spu_x = spu_device(lambda x: x+x)(x)
先会将真正执行的py代码编译
通过ray 也就是此处的actor将share分发到各个计算节点,并启动计算任务executor