-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]:从spu层面做mpc, 数据是如何传输的? #902
Comments
make_shares 和 set_var 是 spu io 的 api。在生产环境请使用 secretflow 参考 secretflow 的用法,secretflow 会屏蔽这些细节。 |
如果仅通过spu 来做,这里的通信应该如何来做?有没有例子可参考? |
请参考 examples 下的例子,SPU distributed 也做了一个类 ray 的封装,用户不用直接调这些 io api |
我执行了一下这个例子
第二步骤的时候会报错 ··· ··· |
运行第二行命令需要保持第一行命令一直运行 |
|
你好,老师,我看用例里面,都是单方发起,数据也都是单方传入,有没有多方传入参数的用例? |
和 secretflow 一样,用例只是一个 dirver 程序,p1 和 p2 就是在不同方执行的 |
以 examples/python/millionaire.py 这个为例。最后z = compare(x, y) 函数由哪一方执行,x,y 由于属于不同参与方,数据如何汇聚到一方呢? |
@ppd.device 这个 decorator 已经标明了这个函数在哪个 device 执行。数据如何进入 SPU runtime 运行就是基于 make_shares、set_var 等 SPU IO 实现的,这里已经屏蔽了相应细节,用户无感。如果想了解细节请参考 SPU device 的代码。 |
这段代码如果是部署在两方,P1 方只需要传入P1的数据,P2方传入P2的数据。
|
P1 和 P2 只需要启动节点,这段代码只是描述计算任务和触发计算任务的 driver |
这个 driver 由哪一方启动? |
这个例子里任何一方都可以启动 |
**多控制器执行的核心思路是每个参与方都运行同一份代码,但是仅执行代码中属于自己的部分。 假如我们把代码逻辑看成一个DAG(有向无环图),DAG的每个节点表示一段属于某个参与方的代码逻辑,边表示不同节点之间的数据流转,则多控制器执行原理可以如图所示。** 我大概明白了,相当于双方都执行这个代码,然后按照约定执行各自的部分。
上面这个配置,在哪个地方增加 'self_party': '' 以后,双方就可以各自执行各自的部分了? |
spu 本身没有这种能力,对安全性要求较高的生产环境请通过 secretflow 的生产模式来使用 spu,其提供多控制器模式支持 https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.3.0b0/getting_started/deployment#production |
嗯,我现在是想用 SPU distributed 测试模拟一下多方的跑法,所以,这个配置里面有没有可以配置类似sf 中self_party 的位置,这样我可以开两个终端,分别以 Alice和bob 的模式让他们跑起来? |
如果只是模拟,只需要把第一步启动 nodectl 的过程改成在每一方启动 node,然后运行一个 driver 即可 |
老师,driver 可以分开执行吗? |
前面已经提到了,driver 只是“描述计算任务和触发计算任务”,真正执行计算的是 node,没懂为什么要 driver 分开执行 |
|
rand_from_alice 只是示例,你可以改成从 p1 本地文件读取的函数 |
|
1: 是。 |
Feature Request Type
Usability
Have you searched existing issues?
Yes
Is your feature request related to a problem?
no
Describe features you want to add to SPU
一 步骤
3, spu_pb2.ProtocolKind.ABY3, spu_pb2.FieldType.FM64)。
self.io.make_shares(x, spu_pb2.Visibility.VIS_SECRET) for x in flat_args]。
二 问题
双方数据为 data_alice 和 data_bob, 双方需要通过网络进行交互。此时应该如何传入数据呢?
Describe features you want to add to SPU
The text was updated successfully, but these errors were encountered: