第4讲(上):上手隐语SecretFlow安装部署
SecretFlow安装
安装的方式有多种,本文采用pypi的方式安装,也就是用pip命令安装。
首先需要一个Linux的环境(自行准备)
建议用conda管理python环境,这样便于后续管理,环境专用,建立一个专门用来使用隐语的环境:
conda create -n secret python==3.8
创建好后,进入环境:
conda activate secret
如下图所示,可以通过命令行看到进入了对应的环境中:
通过pip安装
安装secretflow要求pip版本pip >= 19.3。
一般情况下都大于,如果小于需要更新
查看pip版本
pip --version
pip 23.3.1 from /home/code/anaconda3/envs/secret/lib/python3.8/site-packages/pip (python 3.8)
返回版本和对应路径
安装secretflow
有两种版本可供选择:
secretflow:包含secretflow所有的requirements,体积较大。
secretflow-lite:仅包含基础功能(不包含深度学习等依赖库),体积较小。
这里我们暂时安装体积小的版本即可。
pip install secretflow-lite
#pip install secretflow
直接使用pip安装速度会非常慢30kb/s,不要去尝试能下一年。。。。
建议换为国内镜像源,推荐aliyun的,毕竟是蚂蚁集团
安装命令:
pip install secretflow-lite -i https://mirrors.aliyun.com/pypi/simple
换源后,下载两分钟就成功了。
安装了很多其他的依赖包。
其他安装方法,后续有时间再补充测试
SecretFlow部署模式
仿真模式:
用于快速验证
- 适合仿真实验,验证代码效果
- 既支持单机仿真,也支持多机仿真
- 只需要执行一次代码
生产模式:
用于安全生产
- 适合生产使用
- 安全增强
- 需要每一个参与方都执行代码
SecretFlow和Ray
SecretFlow测试
由于设备有限,只测试单机,即仿真模式下的单机仿真。
单个节点模拟alice、bob两个参与方。
测试
>>> import secretflow as sf
结果出现了报错
(secret) code@code:~$ python
Python 3.8.0 (default, Nov 6 2019, 21:49:08)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import secretflow as sf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/__init__.py", line 16, in <module>
from . import component, data, device, ic, kuscia, ml, preprocessing, security, utils
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/data/__init__.py", line 15, in <module>
from . import core, horizontal, io, mix, ndarray, vertical
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/data/core/__init__.py", line 15, in <module>
from .partition import Partition, partition
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/data/core/partition.py", line 18, in <module>
from secretflow.device import PYU, Device, PYUObject, reveal
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/device/__init__.py", line 15, in <module>
from .device import *
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/device/device/__init__.py", line 16, in <module>
from .heu import HEU, heu_from_base_config
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/secretflow/device/device/heu.py", line 24, in <module>
import spu
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/spu/__init__.py", line 16, in <module>
from . import pir, psi
File "/home/code/anaconda3/envs/secret/lib/python3.8/site-packages/spu/pir.py", line 19, in <module>
from .libspu.link import Context # type: ignore
ImportError: libgomp.so.1: cannot open shared object file: No such file or directory
ImportError: libgomp.so.1: cannot open shared object file: No such file or directory
提示没有对应的包,找不到对应的包,
网上找了一下
libgomp.so是GCC(GNU Compiler Collection)所使用的自由软件编译器的一部分,也是GCC并行(OpenMP)库的一部分。OpenMP 是一套 C++ 并行编程框架。
通过命令行下载对应的包
sudo apt-get install libgomp1
安装好后,进去python,再次测试,没有报错,安装成功!
(secret) code@code:~$ python
Python 3.8.0 (default, Nov 6 2019, 21:49:08)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import secretflow
>>>
单机仿真测试
address=‘local’:表示启动一个本地的Ray节点
(secret) code@code:~$ python
Python 3.8.0 (default, Nov 6 2019, 21:49:08)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import secretflow as sf
>>> sf.init(parties=['one', 'two'], address='local')
2024-04-02 23:23:15,728 INFO worker.py:1538 -- Started a local Ray instance.
>>> one = sf.PYU('one')
>>> two = sf.PYU('two')
>>> one(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7f9376d97190>
>>> two(lambda x : x)(2)
<secretflow.device.device.pyu.PYUObject object at 0x7f9376d122b0>
>>>
测试成功
当屏幕中输出 “Ray runtime started.” 意味着主节点成功启动。
意味着成功开启了一个集群