目录
1. SecretFlow介绍
SecretFlow是一个隐私保护数据分析和机器学习的统一框架,提供:
- 设备抽象,将多方安全计算(MPC)、同态加密(HE)、可信执行环境(TEE)等隐私计算技术抽象为密文设备,将明文计算抽象为明文设备。
- 基于抽象设备的计算图,使数据分析和机器学习工作流程能够表示为计算图。
- 基于计算图的机器学习/数据分析能力,支持数据水平/垂直/混合分割等场景。
2. 安装(亲测)
详细信息移步 SecretFlow开发者文档
2.1 运行要求
- Python >= 3.8
- 操作系统:CentOS 7 / Anolis8 / Ubuntu (18.04、20.04)/ macOS 11.1+ / WSL2
- 资源:≥ 8核16GB
本人配置:Python 3.8、Ubuntu 18.04 、12处理器内核 、内存20GB
2.2 安装方式
推荐使用Anaconda进行环境管理,创建虚拟环境过程本文不赘述。
2.2.1 方式一:docker镜像
- 完全版本
docker run -it secretflow/secretflow-anolis8:latest
阿里云:
docker run -it secretflow-registry.cnhangzhou.cr.aliyuncs.com/secretflow-anolis8:latest
- Lite版本
docker run -it secretflow/secretflow-lite-anolis8:latest
阿里云:
docker run –it secretflow-registry.cnhangzhou.cr.aliyuncs.com /secretflow-lite-anolis8:latest
2.2.2 方式二:pypi
- 完全版本
pip install -U secretflow
- Lite版本
pip install -U secretflow-lite
2.2.3 方式三:源码安装
Step1:下载源码
git clone https://github.com/secretflow/secretflow.git
cd secretflow
Step2:安装
- 完全版本
python setup.py bdist_wheel
pip install dist/*.whl
- Lite版本
python setup.py bdist_wheel --lite
pip install dist/*.whl
测试SecretFlow是否安装成功,如下图安装成功显示:
3. 部署
3.1 前置知识——SecretFlow和Ray
- Ray集群由一个主节点和零或若干个从节点组成。
“Ray is an open-source unified framework for scaling AI and Python applications like machine learning. It provides the compute layer for parallel processing so that you don’t need to be a distributed systems expert."
详细信息移步 Ray开发者文档
- SecretFlow使用Ray作为分布式计算调度框架。
3.2 仿真模式——实现快速验证
特性:
- 适合仿真实验,验证代码效果
- 支持单机仿真、多机仿真
- 只需执行一次代码
3.2.1单机仿真
使用 secretflow.init 在单机模式下运行SecretFlow。该模式会直接启动只有一个节点的ray集群,并且当程序退出时会自动关闭。
示例:单个节点模拟alice、bob两个参与方
>>> import secretflow as sf
>>> sf.init(parties=['alice', 'bob'], address='local')
>>> alice = sf.PYU('alice')
>>> bob = sf.PYU('bob')
>>> alice(lambda x : x + 1)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe932a1a640>
>>> bob(lambda x : x - 1)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7fe6fef03250>
3.2.2 集群仿真
每个Ray节点模拟一个机构,具体做法是通过给每个Ray节点添加机构名称标记,从而保证机构的计算被调度到相应的Ray节点上。 整体通信网络如下。
示例:部署两个节点,分别模拟alice、bob两个参与方
Step1:在第一台机器上部署Ray主节点,模拟参与方alice(自行填写主节点ip和port)
ray start –-head --node-ip-address="{ip}" --port="{port} " --resources='{"alice": 16} ' --include-dashboard=False --disable-usage-stats
Step2: 在第二台机器上部署Ray从节点,模拟参与方bob
ray start --address="{Ray主节点的通信地址}" --resources=' {"bob": 16} ' --disable-usage-stats
Step3:执行Python代码
>>> import secretflow as sf
>>> sf.init(parties=['alice', 'bob'], address='{Ray主节点的通信地址}')
>>> 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>
3.3 生产模式——实现安全生产
特性:
- 从仿真模式到生产模式只需极少量代码修改
- 适合生产使用
- 安全性增强
- 每一个参与方都是独立的Ray集群
- 需要每个参与方都执行代码
示例:部署两个节点,分别模拟alice、bob两个参与方
Step1: 在第一台机器上部署Ray主节点,模拟参与方alice
ray start –-head --node-ip-address="{ip}" --port="{port} " --resources='{"alice": 16} ' --include-dashboard=False --disable-usage-stats
Step2: 在第二台机器上部署Ray主节点,模拟参与方bob
ray start –-head --node-ip-address="{ip}" --port="{port} " --resources='{"bob": 16} ' --include-dashboard=False --disable-usage-stats
Step3:alice执行Python代码
注:
- cliuster_config中的address分别填写alice/bob的通信地址(不要和Ray的端口冲突)
- cluster_config中的self_party为alice
- sf.init中的address填写alice的Ray主节点ip和port
import secretflow as sf
cluster_config ={
'parties': {
'alice’: {'address': 'ip:port of alice'},
'bob': {'address': 'ip:port of bob'},
},
'self_party': 'alice',
}
sf.init(address='{Ray head node address of alice}',cluster_config=cluster_config)
Step4:bob执行Python代码
注:
- cliuster_config中的address分别填写alice/bob的通信地址(不要和Ray的端口冲突)
- cluster_config中的self_party为bob
- sf.init中的address填写bob的Ray主节点ip和port
import secretflow as sf
cluster_config ={
'parties': {
'alice’: {'address': 'ip:port of alice'},
'bob': {'address': 'ip:port of bob'},
},
'self_party': 'bob',
}
sf.init(address='{Ray head node address of bob}',cluster_config=cluster_config)
注:生产模式中可以使用KUSCIA解决多端口问题,KUSCIA屏蔽不同机构间基础设施的差异,为跨机构协作提供丰富且可靠的资源管理和任务调度能力。
4.关于SecretNote
生产模式中需要各参与方独立执行代码,SecretNote提供同一页面执行多方代码功能,实现“单操作界面,多节点执行”,同时还可以进行多节点代码运行跟踪,提升用户体验。
SecretNote作为工具,其安装部署及使用请参考如下资源:
5. 小结
本篇文章详细介绍了SecretFlow的安装部署方式,并实际应用使读者可以快速上手,熟悉操作流程。同时针对SecretFlow高级工具套件SecretNote进行简要介绍,但为了文章可读性,该工具的详细安装部署流程未在本文体现,请读者按需移步相关开发文档。
(PS:感谢您读完,坚持不易,谢谢大家支持!)
标签:secretflow,SecretFlow,--,alice,SecretNote,隐私,address,bob,Ray From: https://blog.csdn.net/weixin_42551843/article/details/139703984