C r y p Te n : A M L f r a m e w o r k b a s e d o n s e c u r e c o m p u t i n g t e c h n i q u e s 1 4 : 3 5 P M — 1 5 : 1 0 P M
Shubho Sengupta Facebook
1 4 : 3 5 P M 1 5 : 1 0 P M C r y p Te n : A M L f r a m e w o - - PowerPoint PPT Presentation
1 4 : 3 5 P M 1 5 : 1 0 P M C r y p Te n : A M L f r a m e w o r k b a s e d o n s e c u r e c o m p u t i n g t e c h n i q u e s Shubho Sengupta Facebook import crypten import torch crypten.init()
Shubho Sengupta Facebook
import crypten import torch crypten.init() # sets up # communication x = torch.tensor([1.0, 2.0, 3.0]) x_enc = crypten.cryptensor(x) # encrypts tensor x_dec = x_enc.get_plain_text() # decrypts tensor assert torch.all_close(x_dec, x) # this passes! y_enc = crypten.cryptensor([2.0, 3.0, 4.0]) xy_enc = x_enc + y_enc # adds encrypted # tensors xy_dec = xy_enc.get_plain_text() assert torch.all_close(xy_dec, x + y) # this passes!
Mul
Mul
Mul
Mul BMul
Mul BMul AccumGrad AccumGrad
Mul BMul AccumGrad AccumGrad
CrypTensor
CrypTensor MPCTensor
CrypTensor MPCTensor ArithmeticShared Tensor
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
PyTorch
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
PyTorch
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
PyTorch
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
PyTorch
CrypTensor MPCTensor ArithmeticShared Tensor BinaryShared Tensor LongTensor
PyTorch
CrypTensor
CrypTensor
CrypTensor AutogradCrypTensor
CrypTensor AutogradCrypTensor
Module
CrypTensor AutogradCrypTensor
Module
CrypTensor AutogradCrypTensor
Module
CrypTensor AutogradCrypTensor
Module
import torch x = torch.tensor([1.0, 2.0, 3.0]) y = torch.tensor([2.0, 3.0, 4.0]) xy = x + y
import crypten crypten.init() # sets up # communication x_enc = crypten.cryptensor([1.0, 2.0, 3.0]) y_enc = crypten.cryptensor([2.0, 3.0, 4.0]) xy_enc = x_enc + y_enc import torch x = torch.tensor([1.0, 2.0, 3.0]) y = torch.tensor([2.0, 3.0, 4.0]) xy = x + y
pt = torch.tensor([1.0, 2.0, 3.0]) ct = AutogradCrypTensor(crypten.cryptensor(pt)) ct_loss = ct.cross_entropy() ct_loss.backward() pt = torch.tensor([1.0, 2.0, 3.0]) pt_loss = pt.cross_entropy() pt_loss.backward()
import crypten import torchvision.datasets as datasets import torchvision.models as models crypten.init()
import crypten import torchvision.datasets as datasets import torchvision.models as models crypten.init() # download and set up ImageNet dataset: transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.48, 0.45, 0.41], std=[0.23, 0.22, 0.23]), ]) dataset = datasets.ImageNet(imagenet_folder, transform=transform)
import crypten import torchvision.datasets as datasets import torchvision.models as models crypten.init() # download and set up ImageNet dataset: transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.48, 0.45, 0.41], std=[0.23, 0.22, 0.23]), ]) dataset = datasets.ImageNet(imagenet_folder, transform=transform) # download pre-trained ResNet-18 model and encrypt it: model = models.resnet18(pretrained=True) encrypted_model = crypten.nn.from_pytorch(model, dataset[0])
import crypten import torchvision.datasets as datasets import torchvision.models as models crypten.init() # download and set up ImageNet dataset: transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.48, 0.45, 0.41], std=[0.23, 0.22, 0.23]), ]) dataset = datasets.ImageNet(imagenet_folder, transform=transform) # download pre-trained ResNet-18 model and encrypt it: model = models.resnet18(pretrained=True) encrypted_model = crypten.nn.from_pytorch(model, dataset[0]) # do inference on encrypted images with encrypted model: encrypted_image = crypten.cryptensor(dataset[1]) encrypted_output = encrypted_model(encrypted_image)
import crypten import torchvision.datasets as datasets import torchvision.models as models crypten.init() # download and set up ImageNet dataset: transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.48, 0.45, 0.41], std=[0.23, 0.22, 0.23]), ]) dataset = datasets.ImageNet(imagenet_folder, transform=transform) # download pre-trained ResNet-18 model and encrypt it: model = models.resnet18(pretrained=True) encrypted_model = crypten.nn.from_pytorch(model, dataset[0]) # do inference on encrypted images with encrypted model: encrypted_image = crypten.cryptensor(dataset[1]) encrypted_output = encrypted_model(encrypted_image)
T H A N K S