收录于合集#社区问答6个
安装部署问题
问题1:
pip安装secretflow、tensorflow、pytorch速度慢
解答:
可以挂个国内的源会快一点,因为底层依赖了tf和pytorch做backend,不安装会导致没法用
问题2:
pip安装secretflow报spu找不到
解答:
1. 需要确认环境是不是符合要求:
https://spu.readthedocs.io/en/beta/getting_started/install.html#environment
2. 用的国内的pypi源, 尝试用官方源
pip install -i https://pypi.org/simple/ spu
问题3:
安装过程中import secretflow报错
tensorflow/stream_executor/platform/default/do_loader.cc:64] Could not Toad dynamic library "Tibcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared obiect file: No such file or directory
解答:
直接 ignore
问题4:
执行以下操作时,显示无法连接到位于 192.168.137.4:6379 的 GCS
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="192.168.137.4" --port="6379"
--resources='{"alice": 8}' --include-dashboard=False --disable-usage-stats
解答:
应该是自签证书不对导致的。如果只是测试的话,可以把mTLS双向认证关闭,即将RAY_USE_TLS设置为0。参考这个教程生成自签证书,尤其注意将alternate_names设置为主机IP地址,X509证书会对Subject Alternative Name进行校验
问题5:
服务器内存2g,安装报错。
解答:
2g内存有点过低,建议扩大后重试。隐语的最低推荐配置为8C16G。
sf使用问题
问题1:
secretflow验证可信性
解答
SecretFlow的整体设计思想是把数据提供方,计算方抽象成逻辑设备PYU、SPU、HEU、TEE,用户在逻辑设备上进行编程,构建出一张逻辑计算图。在这张计算图中,当发生跨设备数据流动的时候,就会按照(源设备,目标设备)预定的转换协议对数据进行转换。
问题2:
secretflow支持arm架构的m1芯片mac电脑吗
解答:
目前该能力在内部测试中,我们会力所能及支持m1 mac。
问题3:
找不到满足要求的spu版本。
ERROR: Could not find a version that satisfies the requirement spu==0.1.0b1
解答:
请使用官方 docker 镜像:
https://github.com/secretflow/spu#docker
spu-heu使用问题
问题1:
“安全聚合模块”和“定义函数编译生成静态计算图”两种达到聚合的效果有什么不同
解答:
三角函数和双曲函数里现在暂时只实现了 tanh,其他会在后续迭代中陆续添加。jax numpy 大体上的支持情况可以看一下这个测试文件:
https://github.com/secretflow/spu/blob/beta/spu/binding/tests/jnp_testbase.py
问题2:
HEU只支持半同态的加密算法吗
解答:
目前是只支持半同态算法,全同态算法在规划中,但暂时还没有具体的发布计划
问题3:
heu和spu之间的转换协议考虑:spu到heu,直接对share加密,对arithemetic share是可以的吗?
解答:
是的,直接在Share上加密和转化,中间不会reconstruction,对Arithmetic Share是可以的。
问题4:
spu到heu的转换之后不对称,怎么决定谁是秘钥拥有方,是否可配置
解答:
算法实现者需要手动指定密钥拥有方,这个是可配置的。
问题5:
heu里支持的半同态算法
解答:
Paillier
问题6:
在带有 SPU 的神经网络中如何使用 3PC
sf.init(['alice', 'bob', 'adan'], num_cpus=12, log_to_driver=True)
alice, bob, adan = sf.PYU('alice'), sf.PYU('bob'), sf.PYU('adan')
spu = sf.SPU(sf.utils.testing.cluster_def(['alice', 'bob', 'adan']))
x1, _= alice(load_train_dataset)(party_id=0)
x0, _= adan(load_train_dataset)(party_id=1)
x2, y= bob(load_train_dataset)(party_id=2)
解答:
您正在运行的 semi2k 2pc 是一个 3pc 协议,因为它依赖于受信任的第一方(或者您可以将其视为受信任的第三方)来生成离线相关随机数。Secretflow 中真正可用的 2pc 协议是 cheetah 协议。cheetah 协议现在可以很好地与 LR 等简单的应用程序配合使用。对于 NN,您可能需要等未来的 Secretflow 版本,我们仍在研究一些底层构建块。
问题7:
提供一个HEU初始化案例
解答:
HEU 分为两部分,第一他是 secretflow 中的一个 device,第二他本身也是一个同态加密的 library 如果是后者,把 HEU 单独当做 lib 使用,是有文档的,参见 https://heu.readthedocs.io/ 如果是前者,把 HEU 当做 device 使用,这部分还是实验性的,当前有一个基于 HEU + SPU 的 LR 实现,其教程有所欠缺,我们后面会补充相关文档。如果你着急的话,可参考 HESS-LR 的单测获取其用法。
其他问题
问题1
隐语框架TEE代码在哪
解答:
目前TEE部分的代码暂未开放,不过后续的开源计划里有这块内容,敬请期待
问题2:
基于TEE的多方MPC计算解决方案在隐语中吗
解答:
TEE 集群里跑 MPC 确实是一种新颖的方式,相比较纯 TEE 方案有额外优点。举个例子比如这种模式下,TEE进出的数据都是统计学上无差别的随机数,因此能够有效抵御一部分侧信道攻击。隐语当然会支持这种新颖的模式,不过目前 TEE 结合 MPC 的方案还未开放,预计年底左右会开放 TEE + MPC 的 TECC 设备,敬请关注期待。
问题3:
aggr=SecureAggregator(device=alice, participants=[alice, bob]) 无限期执行
解答:
是虚拟机的cpu个数设置成1个导致的,我将虚机的cpu设置成8个,然后可以了
问题4:
在不同数据集上运行演示错误,配置 6c8g
The actor is dead because its worker process has died. Worker exit type:
SYSTEM_ERROR_EXIT (SPURuntime pid=10311) I0714 09:14:38.084491 10471
external/com_github_brpc_brpc/src/brpc/socket.cpp:2202]Checking Socket{id=0 addr=127.0.0.1:36067} (0x563ea08fe600)
解答:
8c16g 是最低配置要求
问题5:
用较小的数据集进行测试,当使用 jax 构建的模型在 SPU 上运行时,SPU 默认使用 ABY3 协议吗
解答:
默认协议取决于参与方的数量:
https://spu.readthedocs.io/en/beta/reference/runtime_config.html#protocolkind
如果 SPU 设备是 2PC,将使用 SEMI2K。
如果 SPU 设备是 3PC,将使用 ABY3。
隐语介绍:
隐语Secret-Flow是蚂蚁集团自主研发的一套通用隐私计算框架,以安全、开放为设计理念,支持包括MPC、TEE、FL、HE、DP在内的多种主流隐私计算技术。目前“隐语”已正式开源,诚挚邀请业界同行参与隐语共建,丰富隐私计算落地场景,齐力推动隐私计算技术发展,最终实现整个隐私计算行业的进步。