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开源许可证协议。
项目地址
SecretFlow:【GitHub传送门】
参考资料
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录