CrypTen
CrypTen是一個基于PyTorch的隱私保護機器學習框架。其目標是使機器學習從業人員可以訪問安全的計算技術。它目前將Secure Multiparty Computation 作為其安全計算后端來實現,并為ML研究人員提供了三個主要好處:
首先是機器學習。該框架通過CrypTensor 外觀與感覺完全像PyTorch 的對象來呈現協議Tensor。這使用戶可以使用類似于PyTorch中的自動區分和神經網絡模塊。CrypTen基于庫。就像PyTorch一樣,它實現了張量庫。這使從業人員更容易調試,試驗和探索ML模型。該框架的構建考慮了現實世界中的挑戰。CrypTen不會縮減規模或簡化安全協議的實現。這是一些CrypTen代碼,用于加密和解密張量并添加它們
import torchimport cryptencrypten.init()x = torch.tensor([1.0, 2.0. 3.0])x_enc = crypten.cryptensor(x) # encryptx_dec = x_enc.get_plain_text() # decrypty_enc = crypten.cryptensor([2.0, 3.0, 4.0])sum_xy = x_enc + y_enc # add encrypted tensorssum_xy_dec = sum_xy.get_plain_text() # decrypt sum它目前尚未量產,其主要用途是作為研究框架。
安裝CrypTen
CrypTen當前在Linux和Mac上運行。它還需要每晚進行一次PyTorch構建。不支持Windows。我們目前還不支持在GPU上進行計算。
安裝Anaconda 2019.07或更高版本,然后執行以下操作:
對于Linux或Mac
conda create -n crypten-env python=3.7conda activate crypten-envconda install pytorch torchvision -c pytorchgit clone github.com/facebookresearch/CrypTen.gitcd CrypTenpip install -e .如果要在examples目錄中運行示例,還應該執行以下操作
pip install -r requirements.examples.txt例子
我們在examples目錄中提供了涵蓋各種模型的示例
線性SVM示例mpc_linear_svm生成隨機數據,并在加密數據上訓練SVM分類器。LeNet示例mpc_cifar以明文形式在CIFAR上訓練LeNet的改編,并加密模型和數據以進行推理。TFE基準示例,tfe_benchmarks以明文形式在MNIST上訓練了三種不同的網絡體系結構,并對經過訓練的模型和數據進行加密以進行推理。土匪示例,bandits在加密數據(MNIST)上訓練了上下文土匪模型。imagenet示例mpc_imagenet對的預訓練模型進行推斷torchvision。對于以明文形式訓練的示例,我們還在model每個示例子目錄的子目錄中以明文形式提供了預先訓練的模型。
您可以通過執行以下操作檢查所有示例特定的命令行選項;此處顯示的是tfe_benchmarks:
$ python3 examples/tfe_benchmarks/launcher.py --helpCrypTen如何工作
tutorials目錄中有一組教程,展示了CrypTen的工作方式。這些作為Jupyter筆記本電腦出現,因此請在conda環境中安裝以下內容
conda install ipython jupyterpip install -r requirements.examples.txtIntroduction.ipynb-安全多方計算簡介;CrypTen的基礎安全計算協議;我們嘗試解決的用例以及我們假設的威脅模型。Tutorial_1_Basics_of_CrypTen_Tensors.ipynb-引入了CrypTensorCrypTen的加密張量對象,并展示了如何使用它對該對象執行各種操作。Tutorial_2_Inside_CrypTensors.ipynb–深入研究CrypTensor以顯示內部工作原理;具體來說,如何CrypTensor將MPCTensor其后端以及兩種不同類型的共享(算術和二進制)用于兩種不同類型的函數。它還顯示了CrypTen的MPI啟發式 編程模型。Tutorial_3_Introduction_to_Access_Control.ipynb -顯示如何使用CrypTen訓練線性模型,并在適用的情況下顯示數據標記,特征聚合,數據集擴充和模型隱藏的各種場景。Tutorial_4_Classification_with_Encrypted_Neural_Networks.ipynb –顯示CrypTen如何加載預先訓練的PyTorch模型,對其進行加密,然后對加密數據進行推斷。Tutorial_5_Under_the_hood_of_Encrypted_Networks.ipynb -檢查CrypTen如何加載PyTorch模型,如何對其進行加密以及數據如何通過多層網絡傳輸。Tutorial_6_CrypTen_on_AWS_instances.ipynb-顯示了如何scrips/aws_launcher.py 在AWS上啟動我們的示例。它也可以與您用CrypTen編寫的代碼一起使用。Tutorial_7_Training_an_Encrypted_Neural_Network.ipynb-引入AutogradCrypTensor了一個包裝器,該包裝器將自動區分功能添加到CrypTensor。這使您可以在CrypTen中訓練神經網絡。我們希望CrypTensor在將來的版本中將此功能移至對象中。
-
gpu
+關注
關注
28文章
4760瀏覽量
129132 -
線性
+關注
關注
0文章
199瀏覽量
25175 -
pytorch
+關注
關注
2文章
808瀏覽量
13283
發布評論請先 登錄
相關推薦
評論