Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Crypten | 1,263 | a month ago | 2 | September 09, 2021 | 56 | mit | Python | |||
A framework for Privacy Preserving Machine Learning | ||||||||||
Deep Packet | 100 | 3 months ago | 3 | mit | Jupyter Notebook | |||||
Pytorch implementation of deep packet: a novel approach for encrypted traffic classification using deep learning | ||||||||||
Pycrcnn | 31 | 5 months ago | 4 | gpl-3.0 | Python | |||||
Privacy-Preserving Convolutional Neural Networks using Homomorphic Encryption | ||||||||||
Secureprivateaischolarship | 10 | 4 years ago | Jupyter Notebook | |||||||
Artificial Intelligence and Machine Learning python scripts for the Secure and Private AI Facebook Scholarship Challenge | ||||||||||
Encrypted_ai_finance | 8 | 3 years ago | 4 | mit | HTML | |||||
Credit Approval Classification Deep Learning Model using Differential Drivacy, Secure Multi-Party Computation, and Federated Learning | ||||||||||
Federatedencryption Showcase | 3 | 3 years ago | Jupyter Notebook | |||||||
The project showcasing federated learning of model and testing on encrypted data and model | ||||||||||
Syft.cpp | 3 | 3 years ago | 1 | apache-2.0 | C++ | |||||
SOON TO BE DEPRECATED - A library for encrypted, privacy preserving machine learning |
CrypTen is a framework for Privacy Preserving Machine Learning built on PyTorch. Its goal is to make secure computing techniques accessible to Machine Learning practitioners. It currently implements Secure Multiparty Computation as its secure computing backend and offers three main benefits to ML researchers:
It is machine learning first. The framework presents the protocols via a CrypTensor
object that looks and feels exactly like a PyTorch Tensor
. This allows the user to use
automatic differentiation and neural network modules akin to those in PyTorch.
CrypTen is library-based. It implements a tensor library just as PyTorch does. This makes it easier for practitioners to debug, experiment on, and explore ML models.
The framework is built with real-world challenges in mind. CrypTen does not scale back or oversimplify the implementation of the secure protocols.
Here is a bit of CrypTen code that encrypts and decrypts tensors and adds them
import torch
import crypten
crypten.init()
x = torch.tensor([1.0, 2.0, 3.0])
x_enc = crypten.cryptensor(x) # encrypt
x_dec = x_enc.get_plain_text() # decrypt
y_enc = crypten.cryptensor([2.0, 3.0, 4.0])
sum_xy = x_enc + y_enc # add encrypted tensors
sum_xy_dec = sum_xy.get_plain_text() # decrypt sum
It is currently not production ready and its main use is as a research framework.
CrypTen currently runs on Linux and Mac with Python 3.7. We also support computation on GPUs. Windows is not supported.
For Linux or Mac
pip install crypten
If you want to run the examples in the examples
directory, you should also do the following
pip install -r requirements.examples.txt
To run the examples in the examples
directory, you additionally need to clone the repo and
pip install -r requirements.examples.txt
We provide examples covering a range of models in the examples
directory
mpc_linear_svm
, generates random data and trains a
SVM classifier on encrypted data.mpc_cifar
, trains an adaptation of LeNet on CIFAR in
cleartext and encrypts the model and data for inference.tfe_benchmarks
, trains three different network
architectures on MNIST in cleartext, and encrypts the trained model and data
for inference.bandits
, trains a contextual bandits model on
encrypted data (MNIST).mpc_imagenet
, performs inference on pretrained
models from torchvision
.For examples that train in cleartext, we also provide pre-trained models in
cleartext in the model
subdirectory of each example subdirectory.
You can check all example specific command line options by doing the following;
shown here for tfe_benchmarks
:
python examples/tfe_benchmarks/launcher.py --help
We have a set of tutorials in the tutorials
directory to show how
CrypTen works. These are presented as Jupyter notebooks so please install
the following in your conda environment
conda install ipython jupyter
pip install -r requirements.examples.txt
Introduction.ipynb
- an introduction to Secure Multiparty Compute; CrypTen's
underlying secure computing protocol; use cases we are trying to solve and the
threat model we assume.Tutorial_1_Basics_of_CrypTen_Tensors.ipynb
- introduces CrypTensor
, CrypTen's
encrypted tensor object, and shows how to use it to do various operations on
this object.Tutorial_2_Inside_CrypTensors.ipynb
delves deeper into CrypTensor
to show
the inner workings; specifically how CrypTensor
uses MPCTensor
for its
backend and the two different kind of sharings, arithmetic and binary, are
used for two different kind of functions. It also shows CrypTen's
MPI-inspired
programming model.Tutorial_3_Introduction_to_Access_Control.ipynb
- shows how to train a linear
model using CrypTen and shows various scenarios of data labeling, feature
aggregation, dataset augmentation and model hiding where this is applicable.Tutorial_4_Classification_with_Encrypted_Neural_Networks.ipynb
shows how
CrypTen can load a pre-trained PyTorch model, encrypt it and then do inference
on encrypted data.Tutorial_5_Under_the_hood_of_Encrypted_Networks.ipynb
- examines how CrypTen
loads PyTorch models, how they are encrypted and how data moves through a multilayer
network.Tutorial_6_CrypTen_on_AWS_instances.ipynb
- shows how to use scrips/aws_launcher.py
to launch our examples on AWS. It can also work with your code written in CrypTen.Tutorial_7_Training_an_Encrypted_Neural_Network.ipynb
- introduces the
automatic differentiation functionality of CrypTensor
. This functionality
makes it easy to train neural networks in CrypTen.CrypTen is documented here.
The protocols and design protocols implemented in CrypTen are described in this paper. If you want to cite CrypTen in your papers (much appreciated!), you can cite it as follows:
@inproceedings{crypten2020,
author={B. Knott and S. Venkataraman and A.Y. Hannun and S. Sengupta and M. Ibrahim and L.J.P. van der Maaten},
title={CrypTen: Secure Multi-Party Computation Meets Machine Learning},
booktitle={arXiv 2109.00984},
year={2021},
}
Please contact us to join the CrypTen community on Slack
See the CONTRIBUTING file for how to help out.
CrypTen is MIT licensed, as found in the LICENSE file.