TFE-安全多方计算

一. 环境准备

1.1 虚拟机环境

准备三台能够互相通信的虚拟机,我的机器环境是使用Vagrant+VirtualBox搭建了一个三节点的集群环境,IP分别是192.168.7.2、192.168.7.3、192.168.7.4,操作系统为Cenos 7.

1.2 安装Python3

按照文档,python版本是3.6.9。这里特别说明一下,我使用python 3.7.5实验的时候会出现很多错误,甚至是tensorflow、tf-encrypted都无法安装成功,后来切换到3.6.9版本才成功。


yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc libffi-devel python-devel openssl-devel -y



wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz

tar -xvJf Python-3.6.9.tar.xz

mkdir /usr/local/python3
cd Python-3.6.9
./configure --prefix=/usr/local/python3


make && make install


ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

复制代码

1.2 安装tensorflow

tensorflow版本尽量保持一致。


pip3 install --upgrade pip
 
pip3 install --upgrade setuptools


pip3 install tensorflow==1.13.2

pip3 install tf-encrypted
复制代码

1.3 免密码登录

配置三台机器之间的免密码登录。

192.168.7.2机器上执行:

ssh-keygen -t  rsa

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.3
 
 
 ssh-keygen -t  rsa

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.4

复制代码

192.168.7.3机器上执行:

ssh-keygen -t  rsa

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.2
 
 
 ssh-keygen -t  rsa

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.4

复制代码

192.168.7.4机器上执行:

ssh-keygen -t  rsa

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.2
 
 
 ssh-keygen -t  rsa

 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.7.3

复制代码

二、实验数据和代码

先编写一个配置文件config.json:

{
    "alice": "192.168.7.2:8088",
    "bob": "192.168.7.3:8088",
    "crypto-producer": "192.168.7.4:8088"
}

复制代码

注意名称和对应IP之间的关系,192.168.7.2这台机器对应的是alice, 那么就把alice方需要的代码和数据拷贝到这台机器上。

alice:


config.json , common.py , training_alice.py , aliceTrainFile.csv
复制代码

bob:


config.json , training_bob.py , bobTrainFileWithLabel.csv
复制代码

crypto-producer:


config.json , training_server.py to machine3
复制代码

代码目录结构与内容如下图所示:

image.png

三、训练

按顺序,先执行bob:


python3 training_bob.py
复制代码

再执行crypto-producer:

python3 training_server.py
复制代码

最后执行alice:


python3 training_alice.py
复制代码

image.png

最终会在alice节点上输出训练结果。

参考文档:

github.com/tf-encrypte…

alibaba-gemini-lab.github.io/docs/blog/t…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享