Recently, we implemented a first prototype Multiparty Computation tensor here: https://github.com/OpenMined/PySyft/blob/master/notebooks/MPC%20Tensor%20Proof%20of%20Concept%20Demo.ipynb
This was based off of the following post from our OpenMined contributor @mortendahl:
http://mortendahl.github.io/2017/04/17/private-deep-learning-with-mpc/
@mortendahl also wrote an excellent followup post with a more advanced MPC scheme. As a next step in our PySyft library, we'd like to have a NEW MPCTensor prototype based on this more advanced scheme. The full tutorial for this scheme can be found here.
http://mortendahl.github.io/2017/06/04/secret-sharing-part1/
Acceptance Criteria:
seems pretty interesting, I'd like to give it a try. A word of advice?
I would like to collaborate on this issue.
hey guys, sorry for being a bit slow these days. don't do anything yet, there's a much better scheme coming out soon, hopefully a draft within the next day or two! :)
hi all,
just pushed a draft of the SPDZ scheme i was talking about here -- it's still a WIP but the basics of the protocol should be intelligible
the big advantage of SPDZ over the shamir schemes is that a lot of the processing can be pushed to an offline phase, or alternatively an independent "crypto provider". the disadvantage is that it cannot handle any of the computing parties disappearing.
馃憤 This is awesome!!! Great work sir!!! Let's definitely go for this scheme instead!!
@withai and @sakchhams - any questions on the approach above? Are you still interested in working on it?
Yes, I want to work on this.
Yes, I would like to work on it.
Excellent! @sakchhams could you create a branch for this project so we can get started?
Have you guys been able to get the code in @mortendahl 's post to run?
thanks a lot @iamtrask! :)
@withai @sakchhams i'll try to fill in the missing code asap, and in the meantime i'm happy to help you guys getting something up and running if you want to give it a try
@iamtrask @mortendahl pardon me for being so unresponsive and slow, something came I up, I'll try and create a notebook based on the post, I'll keep you posted.
I had implemented the MPCTensor according to SPDZ spec, but I am having issues related to multiplication in MPCRepo @mortendahl @iamtrask @sakchhams can you help me with that.
https://github.com/withai/PySyft/tree/MPCTensor-SPDZ
I have also created a notebook - https://github.com/withai/PySyft/blob/MPCTensor-SPDZ/notebooks/MPC%20Tensor%20SPDZ.ipynb (multiplication values have blown up)
it's not clear to me that truncating the intermediate values instead of the final result will work out -- did you make sure this is okay?
That was done on a trial and error basis. I don't think it solves. I should remove it.
Looking quite good! Current state is here https://github.com/OpenMined/PySyft/pull/326
Most helpful comment
hey guys, sorry for being a bit slow these days. don't do anything yet, there's a much better scheme coming out soon, hopefully a draft within the next day or two! :)