Introduction
PySyft is a Python library for secure, private Deep Learning. PySyft decouples private data from model training, using Multi-Party Computation (MPC) within PyTorch. View the paper on Arxiv. Join the movement on Slack.
See PySyft in Action
-
Emulate remote PyTorch execution - This notebook demonstrates the tensor passing between workers, though both the workers live in the same environment.
-
Emulate remote PyTorch execution using sockets: Server | Client - This notebook demonstrates the tensor passing and remote execution, with workers living in different environments.
Note: Run Server before Client
-
Federated Learning - This notebook demonstrates the model training over distributed data (data belonging to multiple owners).
Docker
git clone https://github.com/OpenMined/PySyft.git
cd PySyft
scripts/run_docker.sh
Image size: 644MB
The container mount the examples folder on a volume so every change on the notebooks is persistent. Furthermore the container is deleted when it is stopped, in a way to facilitate development. You just have to change PySyft code, and run the run_docker.sh script to observe changes you've made on notebooks.
Installation
PySyft supports Python >= 3.6 and PyTorch 0.3.1
Pick the proper PyTorch version according to your machine: CPU | CUDA9.1 | CUDA9.0 | CUDA8.0
conda install pytorch=0.3.1 -c soumith
pip3 install -r requirements.txt
python3 setup.py install
On Windows use the following steps to install PyTorch 0.3.1-
conda install -c peterjc123 pytorch
conda install -c peterjc123 pytorch-cpu
Run Unit Tests
python3 setup.py test
Alternatively, tests can be run with
make test
Run Local Notebook Server
All the examples can be played with by running the command
make notebook
and selecting the pysyft kernel
Join the rapidly growing community of 2500+ on Slack and help us in our mission. We are really friendly people!
Organizational Contributions
We are very grateful for contributions to PySyft from the following organizations!
coMind Website & coMind Github
Disclaimer
Do NOT use this code to protect data (private or otherwise) - at present it is very insecure.