目录
SecretFlow是一个隐私保护数据分析和机器学习的统一框架,提供:
详细信息移步 SecretFlow开发者文档
本人配置:Python 3.8、Ubuntu 18.04 、12处理器内核 、内存20GB
推荐使用Anaconda进行环境管理,创建虚拟环境过程本文不赘述。
docker run -it secretflow/secretflow-anolis8:latest
阿里云:
docker run -it secretflow-registry.cnhangzhou.cr.aliyuncs.com/secretflow-anolis8:latest
docker run -it secretflow/secretflow-lite-anolis8:latest
阿里云:
docker run –it secretflow-registry.cnhangzhou.cr.aliyuncs.com /secretflow-lite-anolis8:latest
pip install -U secretflow
pip install -U secretflow-lite
Step1:下载源码
- git clone https://github.com/secretflow/secretflow.git
- cd secretflow
Step2:安装
- python setup.py bdist_wheel
-
- pip install dist/*.whl
- python setup.py bdist_wheel --lite
-
- pip install dist/*.whl
测试SecretFlow是否安装成功,如下图安装成功显示:

“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.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)
object at 0x7fe932a1a640> - >>> bob(lambda x : x - 1)(2)
object at 0x7fe6fef03250>
每个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)
object at 0x7fe932a1a640> - >>> bob(lambda x : x)(2)
object at 0x7fe6fef03250>
特性:

示例:部署两个节点,分别模拟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代码
注:
- 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代码
注:
- 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屏蔽不同机构间基础设施的差异,为跨机构协作提供丰富且可靠的资源管理和任务调度能力。
生产模式中需要各参与方独立执行代码,SecretNote提供同一页面执行多方代码功能,实现“单操作界面,多节点执行”,同时还可以进行多节点代码运行跟踪,提升用户体验。
SecretNote作为工具,其安装部署及使用请参考如下资源:
本篇文章详细介绍了SecretFlow的安装部署方式,并实际应用使读者可以快速上手,熟悉操作流程。同时针对SecretFlow高级工具套件SecretNote进行简要介绍,但为了文章可读性,该工具的详细安装部署流程未在本文体现,请读者按需移步相关开发文档。
(PS:感谢您读完,坚持不易,谢谢大家支持!)