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;
我们可以从PyPi获取最新版本的SecretFlow,注意,工具要求Python版本为v3.8,然后使用下列命令(conda)创建一个虚拟环境:
conda create -n sf python=3.8
conda activate sf
接下来,就可以使用pip来安装SecretFlow了:
pip install -U secretflow
我们可以从【这里】获取最新版本的SecretFlow Docker镜像:
export version={SecretFlow version}
例如:
export version=0.6.13b1
接下来运行镜像即可:
docker run -it secretflow/secretflow-anolis8:${version}
(向右滑动,查看更多)
下载工具源码并配置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开源许可证协议。
SecretFlow:https://github.com/secretflow/secretflow
https://pypi.org/project/secretflow/
https://hub.docker.com/r/secretflow/secretflow-anolis8/tags
精彩推荐