OpenMined / SyMPC

A SMPC companion library for Syft
MIT License
100 stars 38 forks source link

train a neural network on encrypted values using MPC #313

Open adityapribadi3 opened 3 years ago

adityapribadi3 commented 3 years ago

Question

is it possible to train a neural network on encrypted values using Secure Multi-Party Computation and Autograd?

Further Information

I found a blog from pysyft that can perform encrypted train in MNIST Model using MPC, I'm a bit confuse how to use SyMPC in pysyft 0.5 to perform the similar task. The blog can be found here https://blog.openmined.org/encrypted-deep-learning-classification-with-pysyft/

if there any example or any tutorial how to run similarly using SyMPC?

Screenshots

If applicable, add screenshots to help explain your question.

System Information

Additional Context

Add any other context about the problem here.

letv3 commented 3 years ago

Hi all, SMPC topic seems very exiting topic to me, I would be glad to get some update on this old tutorial SyMPC on MNIST as well. Cheers :). But actually I can work on updating this tutorial using up-to-date examples in main SyMPC repo https://github.com/OpenMined/SyMPC/tree/main/examples

yeungbo commented 2 years ago

As the example code shows, I think it is Plaintext Training and encrypted prediction, NOT train a neural network on encrypted values, right?

adityapribadi3 commented 2 years ago

yes that's right

yeungbo commented 2 years ago

So, does this issue have any solution idea?

rasswanth-s commented 2 years ago

The secure training notebook example is being worked, @kamathhrishi ping. We have notebook examples for secure inference https://github.com/OpenMined/SyMPC/tree/main/examples as of now

yeungbo commented 2 years ago

The secure training notebook example is being worked, @kamathhrishi ping. We have notebook examples for secure inference https://github.com/OpenMined/SyMPC/tree/main/examples as of now

Thank you Rasswanth, the secure inference does work, but why not secure train? I think the issue here is for the later :)