CrypTen
CrypTen是一個(gè)基于PyTorch的隱私保護(hù)機(jī)器學(xué)習(xí)框架。其目標(biāo)是使機(jī)器學(xué)習(xí)從業(yè)人員可以訪問(wèn)安全的計(jì)算技術(shù)。它目前將Secure Multiparty Computation 作為其安全計(jì)算后端來(lái)實(shí)現(xiàn),并為ML研究人員提供了三個(gè)主要好處:
首先是機(jī)器學(xué)習(xí)。該框架通過(guò)CrypTensor 外觀與感覺(jué)完全像PyTorch 的對(duì)象來(lái)呈現(xiàn)協(xié)議Tensor。這使用戶(hù)可以使用類(lèi)似于PyTorch中的自動(dòng)區(qū)分和神經(jīng)網(wǎng)絡(luò)模塊。CrypTen基于庫(kù)。就像PyTorch一樣,它實(shí)現(xiàn)了張量庫(kù)。這使從業(yè)人員更容易調(diào)試,試驗(yàn)和探索ML模型。該框架的構(gòu)建考慮了現(xiàn)實(shí)世界中的挑戰(zhàn)。CrypTen不會(huì)縮減規(guī)模或簡(jiǎn)化安全協(xié)議的實(shí)現(xiàn)。這是一些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它目前尚未量產(chǎn),其主要用途是作為研究框架。
安裝CrypTen
CrypTen當(dāng)前在Linux和Mac上運(yùn)行。它還需要每晚進(jìn)行一次PyTorch構(gòu)建。不支持Windows。我們目前還不支持在GPU上進(jìn)行計(jì)算。
安裝Anaconda 2019.07或更高版本,然后執(zhí)行以下操作:
對(duì)于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目錄中運(yùn)行示例,還應(yīng)該執(zhí)行以下操作
pip install -r requirements.examples.txt例子
我們?cè)趀xamples目錄中提供了涵蓋各種模型的示例
線性SVM示例mpc_linear_svm生成隨機(jī)數(shù)據(jù),并在加密數(shù)據(jù)上訓(xùn)練SVM分類(lèi)器。LeNet示例mpc_cifar以明文形式在CIFAR上訓(xùn)練LeNet的改編,并加密模型和數(shù)據(jù)以進(jìn)行推理。TFE基準(zhǔn)示例,tfe_benchmarks以明文形式在MNIST上訓(xùn)練了三種不同的網(wǎng)絡(luò)體系結(jié)構(gòu),并對(duì)經(jīng)過(guò)訓(xùn)練的模型和數(shù)據(jù)進(jìn)行加密以進(jìn)行推理。土匪示例,bandits在加密數(shù)據(jù)(MNIST)上訓(xùn)練了上下文土匪模型。imagenet示例mpc_imagenet對(duì)的預(yù)訓(xùn)練模型進(jìn)行推斷torchvision。對(duì)于以明文形式訓(xùn)練的示例,我們還在model每個(gè)示例子目錄的子目錄中以明文形式提供了預(yù)先訓(xùn)練的模型。
您可以通過(guò)執(zhí)行以下操作檢查所有示例特定的命令行選項(xiàng);此處顯示的是tfe_benchmarks:
$ python3 examples/tfe_benchmarks/launcher.py --helpCrypTen如何工作
tutorials目錄中有一組教程,展示了CrypTen的工作方式。這些作為Jupyter筆記本電腦出現(xiàn),因此請(qǐng)?jiān)赾onda環(huán)境中安裝以下內(nèi)容
conda install ipython jupyterpip install -r requirements.examples.txtIntroduction.ipynb-安全多方計(jì)算簡(jiǎn)介;CrypTen的基礎(chǔ)安全計(jì)算協(xié)議;我們嘗試解決的用例以及我們假設(shè)的威脅模型。Tutorial_1_Basics_of_CrypTen_Tensors.ipynb-引入了CrypTensorCrypTen的加密張量對(duì)象,并展示了如何使用它對(duì)該對(duì)象執(zhí)行各種操作。Tutorial_2_Inside_CrypTensors.ipynb–深入研究CrypTensor以顯示內(nèi)部工作原理;具體來(lái)說(shuō),如何CrypTensor將MPCTensor其后端以及兩種不同類(lèi)型的共享(算術(shù)和二進(jìn)制)用于兩種不同類(lèi)型的函數(shù)。它還顯示了CrypTen的MPI啟發(fā)式 編程模型。Tutorial_3_Introduction_to_Access_Control.ipynb -顯示如何使用CrypTen訓(xùn)練線性模型,并在適用的情況下顯示數(shù)據(jù)標(biāo)記,特征聚合,數(shù)據(jù)集擴(kuò)充和模型隱藏的各種場(chǎng)景。Tutorial_4_Classification_with_Encrypted_Neural_Networks.ipynb –顯示CrypTen如何加載預(yù)先訓(xùn)練的PyTorch模型,對(duì)其進(jìn)行加密,然后對(duì)加密數(shù)據(jù)進(jìn)行推斷。Tutorial_5_Under_the_hood_of_Encrypted_Networks.ipynb -檢查CrypTen如何加載PyTorch模型,如何對(duì)其進(jìn)行加密以及數(shù)據(jù)如何通過(guò)多層網(wǎng)絡(luò)傳輸。Tutorial_6_CrypTen_on_AWS_instances.ipynb-顯示了如何scrips/aws_launcher.py 在AWS上啟動(dòng)我們的示例。它也可以與您用CrypTen編寫(xiě)的代碼一起使用。Tutorial_7_Training_an_Encrypted_Neural_Network.ipynb-引入AutogradCrypTensor了一個(gè)包裝器,該包裝器將自動(dòng)區(qū)分功能添加到CrypTensor。這使您可以在CrypTen中訓(xùn)練神經(jīng)網(wǎng)絡(luò)。我們希望CrypTensor在將來(lái)的版本中將此功能移至對(duì)象中。
-
gpu
+關(guān)注
關(guān)注
28文章
4912瀏覽量
130673 -
線性
+關(guān)注
關(guān)注
0文章
200瀏覽量
25529 -
pytorch
+關(guān)注
關(guān)注
2文章
809瀏覽量
13772
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論