Facebook CrypTen多机器多方计算(MPC)环境搭建

Facebook CrypTen多方计算环境搭建

这里主要参考了crypten/scripts/aws_launcher.py代码以及pytorch文档,使用两台虚拟机搭建了多机器参与的多方计算环境.(当然单台机器可以不用任何配置,直接跑CrypTen中的代码.CrypTen会利用单机器的多个内核去模拟多方环境进行计算).

CrypTen 简单介绍

CrypTen是Facebook在2019年10月开源的,用于多方安全计算(MPC)的框架.官网说明见https://ai.facebook.com/blog/crypten-a-new-research-tool-for-secure-machine-learning-with-pytorch/.
在这里插入图片描述

虚拟机安装

  • 虚拟机工具: VirtualBox
  • 虚拟机系统: ubuntu (server版. 版本:18.04.4)

CrypTen环境

参考官网文档进行配置即可(https://github.com/facebookresearch/CrypTen).
两台机器上要有同样的环境和代码.

pip install crypten
git clone https://github.com/facebookresearch/CrypTen.git
cd CrypTen
pip install -r requirements.examples.txt

老版本CrypTen文档需要安装anaconda,然后自行安装pytorch.部分虚拟机安装anaconda失败,主要是安装卡在0%不动了.可以下载其他版本进行安装(https://repo.anaconda.com/archive/)

Pytorch 环境变量

由于CrypTen分布式计算(DistributedCommunicator类)底层通信依赖pytorch的distributed,所以需要设置pytorch分布式计算相关环境变量. 具体使用方式参考官网(https://pytorch.org/tutorials/intermediate/dist_tuto.html).

如下是我使用CrypTen时的配置方法.

export WORLD_SIZE=2
export RENDEZVOUS=env://
export MASTER_ADDR=192.168.1.114
export MASTER_PORT=29500
export RANK=0
export GLOO_SOCKET_IFNAME=enp0s3

说明:

  • MASTER_PORT: A free port on the machine that will host the process with rank 0.
  • MASTER_ADDR: IP address of the machine that will host the process with rank 0.
  • WORLD_SIZE: The total number of processes, so that the master knows how many workers to wait for.
  • RANK: Rank of each process, so they will know whether it is the master of a worker. master节点配置rank为0.副节点rank为1.
  • GLOO_SOCKET_IFNAME: 因为默认pytorch使用的bankend是gloo.我的网卡名是enp0s3。 如果没有设置网卡名称,会报错pytpair.cc:761] connect [127.0.1.1]:40363: Connection refused
    解决方法参考(https://github.com/pytorch/pytorch/issues/15592)
    export GLOO_SOCKET_IFNAME=WHATEVER IN IFCONFIG (like eth0 or something)
  • RENDEZVOUS: 看源码似乎没必要设置,有默认值,这个我这边是加上的.

多方计算

2台机器的环境设置好以后,分别在主节点副节点运行代码.

python examples/mpc_linear_svm/launcher.py
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值