SecretFlow:一款功能强大的隐私保护数据分析和机器学习统一框架

关于SecretFlow

SecretFlow是一款功能强大的隐私保护数据分析和机器学习统一框架,为了实现框架功能,该工具实现了下列技术方法:

1、抽象设备层由封装了各种密码协议的普通设备和机密设备组成;

2、将高级算法建模为设备对象流和DAG的设备流层;

3、使用了水平或垂直分区数据进行数据分析和机器学习的算法层;

4、一个无缝集成数据处理、模型训练和超参数调整的工作流层;

工具体系架构和工作流

下图显示的是SecretFlow的整体架构:

下图显示的是SecretFlow的设备操作和对象流:

下图显示的是物理设备节点和逻辑设备节点:

下图显示的是该工具的逻辑计算图(设备流)和物理计算图:

工具安装

SecretFlow最简单的使用方法就是通过【官方Docker镜像】直接使用。除此之外,我们也可以直接通过源码来安装SecretFlow。

环境要求

1、Python:v3.8;

2、pip:>= v19.3;

3、OS:CentOS7或Ubuntu 18.04;

4、CPU/内存:至少8核16G;

选项1:通过PyPi安装

我们可以从PyPi获取最新版本的SecretFlow,注意,工具要求Python版本为v3.8,然后使用下列命令(conda)创建一个虚拟环境:

conda create -n sf python=3.8

conda activate sf

接下来,就可以使用pip来安装SecretFlow了:

pip install -U secretflow

选项2:通过Docker使用

我们可以从【这里】获取最新版本的SecretFlow Docker镜像:

export version={SecretFlow version}

例如:

export version=0.6.13b1

接下来运行镜像即可:

docker run -it secretflow/secretflow-anolis8:${version}

选项3:源码安装

下载工具源码并配置Python虚拟环境:

git clone https://github.com/secretflow/secretflow.git) https://github.com/secretflow/secretflow.git

cd secretflow

 

conda create -n secretflow python=3.8

conda activate secretflow

安装SecretFlow:

python setup.py bdist_wheel

pip install dist/*.whl

工具测试

>>> import secretflow as sf

>>> sf.init(['alice', 'bob', 'carol'], num_cpus=8, log_to_driver=True)

>>> dev = sf.PYU('alice')

>>> import numpy as np

>>> data = dev(np.random.rand)(3, 4)

>>> data

<secretflow.device.device.pyu.PYUObject object at 0x7fdec24a15b0>

工具部署

SecretFlow可以部署到单独主机上或多个节点上。

独立模式

直接使用secretflow.init以独立模式运行SecretFlow:

>>> import secretflow as sf

>>> sf.init(['alice', 'bob', 'carol'], num_cpus=8, log_to_driver=True)

集群模式

开启头节点

开启一个头节点,标签为“alice”:

RAY_DISABLE_REMOTE_CODE=true \

RAY_SECURITY_CONFIG_PATH=config.yml \

RAY_USE_TLS=1 \

RAY_TLS_SERVER_CERT=servercert.pem \

RAY_TLS_SERVER_KEY=serverkey.pem \

RAY_TLS_CA_CERT=cacert.pem \

ray start --head --node-ip-address="ip" --port="port" --resources='{"alice": 8}' --include-dashboard=False --disable-usage-stats

启动SecretFlow

>>> import secretflow as sf

# Replace with the `node-ip-address` and `port` of head node.

>>> sf.init(address='ip:port')

>>> alice = sf.PYU('alice')

>>> bob = sf.PYU('bob')

>>> alice(lambda x : x)(2)

<secretflow.device.device.pyu.PYUObject object at 0x7fe932a1a640>

>>> bob(lambda x : x)(2)

<secretflow.device.device.pyu.PYUObject object at 0x7fe6fef03250>

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

猜你喜欢

转载自blog.csdn.net/qq_69775412/article/details/127191864