隐语开源社区【精选问答】第四期

简介: 隐语开源社区【精选问答】第四期


收录于合集#社区问答6个

上个月,隐语开源社区上共收到30+issue,35+社群提问,小伙伴们对spu使用问题以及隐语目前所支持的算法功能较为关心,本次精选20条社区问答,供大家参考阅读。查看更多内容,请访问👏github隐语主页,欢迎提问交流!https://github.com/secretflow


易用性

问题1:是否PYU属于参与各方?可以直接用明文数据计算?而中心则用SPU进行安全计算?解答:

  • PYU是明文设备,目前是依托于python作为载体,主要提供参与方本地的明文计算。
  • SPU是MPC密态设备。这里密态设备是虚拟的概念。SPU本质上是由多个计算方组成,并提供了密态设备这个视角,好处是帮助用户屏蔽MPC底层多个计算方协同计算的细节。
  • SPU并不是你理解的在中心进行安全计算,计算还是发生在各个计算方的,你说的中心更多的可以理解为是驱动者(driver),driver负责把计算任务分发给SPU,而SPU提供了虚拟设备的视角,让你看起来是在driver这个视角操纵了它。


问题2:SchemaType.FPaillier和SchemaType.ZPaillier分别代表什么含义?提供这两个选择是否存在什么需要trade-off的东西?解答:在C++ Api 层面,FPaillier 与 ZPaillier有一些不同,FPaillier 对标 Python-Paillier, 相当于把 Python-Paillier 的逻辑用C++翻译了一遍,其特点是算法层面支持浮点数加密,原理是把 scale 比特数作为明文打包在密文中,密态运算阶段算法会自行对齐、更新 scale 值,其它未做过多优化。而zPaillier 是我们实现的一个高度优化的Paillier 版本,只支持整数加密,性能比 FPaillier 高很多。fpaillier 不推荐使用,任何情况下都应该选择 ZPaillier。


问题3:如果想执行浮点数加解密,有什么推荐的方式么?解答:加密浮点数需要外挂的 encoder,参考“快速入门”和“矩阵运算”关于 Encoder 的介绍。https://heu.readthedocs.io/zh_CN/latest/getting_started/quick_start.htmlhttps://heu.readthedocs.io/zh_CN/latest/getting_started/numpy.html


问题4:官网教程demo中“混合联邦——逻辑回归”部分卡死报错。报错提示为:WARNING worker.py:1416-WARNING: 24 PYTHON worker processes have been started on node:解答:看起来是因为设备的问题,8C16G 是sf最低的配置要求。


问题5:1)初始化spu时,选择cheetah协议,这个协议是基于OT、SS还是什么?2)从哪儿能找到这些协议(cheetah、aby3等)的相关资料?3)用spu计算时,密文的计算是同态的吗?解答:1)cheetah协议是阿里巴巴双子座实验室原创的协议,详见 paperhttps://eprint.iacr.org/2022/207
2)spu的计算是基于mpc协议(即aby3等协议)。请参阅相关论文和资料了解mpc是如何计算的,以及不同协议的secret sharing schema和明密文转化流程。请查阅我们的文档:https://spu.readthedocs.io/en/beta/reference/mpc_status.html
3)spu 是个虚拟设备,相当于一个 spu 是有多个独立的半诚实参与方组成(一般为2到3个),各参与方之间执行秘密分享算法执行计算。spu 主要基于秘密分享算法,而不是同态。另外,如果你想进行同态计算,请使用secretflow的另一个子项目-heu:
https://secretflow.readthedocs.io/zh_CN/latest/developer/design/heu.html


问题6:secretflow文档Component下的Feature Engineering demo无法运行。from secretflow.utils.simulation.datasets import load_linearTraceback (most recent call last):File "<stdin>", line 1, in <module>ModuleNotFoundError: No module named 'secretflow.utils.simulation.datasets'解答:dataset 的缓存路径应该是~/.secretflow/datasets/linear.csv,你看下这个文件是否是一个空文件,如果是的话把缓存目录~/.secretflow/datasets 删掉重新跑一下 demo,第一次运行会触发下载。目前,新版本已经支持检查本地缓存文件哈希,若不正确则会重新下载。


问题7:使用psi_df时,返回类型是PYUObject,如果要指定bob回写数据库,在driver要怎么写这个函数?以及,如果是PYUObject的话,py函数的参数类型可以直接是DataFrame吗?

解答:

  • 可以再写个py函数把内存的 df 存储到 db 里,让driver安排在bob侧调用一下。
  • 是的,PYUObject会被自动拆箱成de-reference


问题8:部署两台服务器各自docker部署,在启动任务报brpc 异常,配置监听的端口9998另外一台服务器可以正常连接,但几秒后会断掉,之后就brpc报错。

解答可以先试试在本机多docker的情况, 有的网络会存在夸机器的docker,rpc不通。可以尝试把docker的网络设置为host模式。


问题9:docker部署import secretflow 出错,未找到模块'libcudart.so.11.0'报错:import secretflow as sf 2022-09-29 07:24:43.572390:W tensorflow/stream_executor/platform/default/dso_loader.cc:64]Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0:cannot open shared object file: No such file or directory解答:这是一个 warning,不影响任何功能,不影响使用,可以忽略。


问题10:是否可以在docker中内置jupyter客户端解答:你可以手动安装jupyter,或者可以自行修改dockerfile以满足你的需求。
考虑到镜像需要尽量小,以及jupyter并不是运行secreflow的必须依赖,我们目前不考虑内置jupyter。


问题11:python3.8 m1芯片 编译grpcio的时候一直报错报错信息:distutils.errors.CompileError: command '/usr/bin/qcc' failed with exit code 1解答:执行命令前先 conda install grpcio


问题12:使用多方安全计算或者联邦模型等后,如何查看参与方之间的通信消耗?解答:对于多方安全计算,SPU使用内部的通信信道来传输(MPC协议)数据,之后会逐步开放统计接口(目前还没有python接口可以查看)对于联邦学习,多方之间数据使用Ray 来通信,可以通过 /tmp/ray/session_{date}/logs 日志查看。我们即将发布的调度框架,会提供这个能力。

功能性

问题1:

secretflow后面有计划支持windows吗?

解答:

短期内没有windows支持计划,Windows可以通过 wsl 来跑。后续会补充wsl相关的文档。


问题2:

隐语提供隐匿查询功能吗?就是PIR技术

解答:

目前secretflow还不支持python直接调用的pir接口,可以直接调用spu的c++接口,示例可以参考seal_pir的单测代码
https://github.com/secretflow/spu/blob/main/spu/pir/seal_pir_test.cc


问题3:

使用ABY3协议训练SS-XGB时,集群出现错误。

解答:

我们仍在优化以支持大型数据集,建议您将数据集缩小到[10000,450]


问题4:

两个密文矩阵相乘,目前是不支持么?

解答:

受限于算法原因,目前不支持两个密文矩阵相乘,后续 HEU 支持 FHE 算法后可以开放此接口。


问题5:

集群里面有个节点挂了,其他节点能感知到么?有没有办法获取各个节点的健康状态

解答:

调度框架这部分能力开源后组建集群就可以发现。


问题6:

secretflow联邦学习能否对接更复杂的深度学习任务,比如目标检测?

解答:

理论上是可以的,欢迎使用FL Model进行尝试。


其他

问题1:

请问隐语的学习需要什么基础,AI、ML 零基础可以么?

解答:

推荐我们「隐语开源社区」隐私计算线上慕课,本课程联合20位顶尖高校学者与产业代表联合出品,划分为7为大模块:课程前瞻、隐私计算全局概览、概念基础、技术应用、案例介绍、框架基础、动手实践,融合了基础理论与实践应用,将由浅入深为大家呈现100+专业细分知识点。适合所有对隐私计算感兴趣的同学。

视频首页:https://space.bilibili.com/2073575923/video

也可以看下文档推荐的论文:https://secretflow.readthedocs.io/zh_CN/latest/


问题2:

纵向联邦模型中数据是否出域?如何进行信息交互?

解答:

纵向联邦学习主打是数据不出域,交互的是梯度信息。另外,目前隐语还没有发布纵向FL的算法,当前发布的纵向算法中,对于传统模型用的MPC,对于NN用的拆分学习。


相关文章
|
Web App开发 前端开发 Java
Apache Zeppelin系列教程第二篇——整体架构
Apache Zeppelin系列教程第二篇——整体架构
496 0
|
SpringCloudAlibaba 容灾 关系型数据库
nacos常见问题之启动报错如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
2671 2
|
8月前
|
并行计算 程序员 API
Python版本进化史:从3.6到3.14,每个版本都带来了什么惊喜?
程序员晚枫,全网30万下载的python-office作者。亲历Python 3.6到3.14进化历程,详解各版本核心新特性:f-strings、数据类、海象运算符、模式匹配、性能飞跃至多解释器并发革命,助你掌握Python演进脉络,高效开发。
802 14
|
9月前
|
数据采集 NoSQL 数据可视化
用Playwright打造可靠的企业级采集方案--从单机验证到集群化落地
本项目将单机Playwright爬虫逐步演进为分布式集群,解决脚本不稳定、限速、维护难等问题。以招聘数据采集为例,实现从页面解析、代理IP轮换、Redis任务队列到多机并发的完整链路,结合MongoDB/Elasticsearch落库与可视化,形成可复用的生产级爬虫架构,适用于数据分析、岗位监控等场景。
661 0
用Playwright打造可靠的企业级采集方案--从单机验证到集群化落地
|
自然语言处理 数据可视化 数据挖掘
带你飞上云端,轻松解析数据——gopup库详细解析--包含安装库教程
本文介绍了Python库gopup,它是一个用于轻松爬取互联网数据的工具,简化了数据收集和处理的过程。文章提供了gopup的安装教程,特别强调了安装时需注意setuptools版本,并给出了PyCharm和命令行两种安装方法。gopup库能获取包括指数、百度和谷歌数据等多种类型的数据。文中还展示了如何使用gopup获取微博指数和豆瓣新片榜数据,并通过代码示例呈现数据和图表。此外,文章提醒了使用时的风险和部分接口的失效情况,并提供了库文档链接以供深入学习。gopup库适用于数据可视化和数据分析,是进行文本挖掘和自然语言处理项目的理想工具。
带你飞上云端,轻松解析数据——gopup库详细解析--包含安装库教程
|
人工智能 供应链 数据可视化
跨境电商供应链优化趋势:从智能库存到绿色物流
高效供应链管理是行业发展的关键,涉及原材料采购、生产制造、库存管理、跨境物流和终端交付等环节。通过数据驱动决策、多供应商合作、灵活物流策略、清关合规和技术赋能,可以优化供应链,提升运营效率。
1769 7
跨境电商供应链优化趋势:从智能库存到绿色物流
|
JSON 自然语言处理 前端开发
实操|基于抽象语法树(AST)的代码问题修复
文章介绍了如何通过抽象语法树(AST)技术自动化地解决前端代码治理中的具体问题,特别是针对大量存在的未使用变量或函数参数等问题。
|
运维 监控 网络协议
Linux抓包命令tcpdump使用技巧大全
【7月更文挑战第10天】
1184 5
Linux抓包命令tcpdump使用技巧大全
|
消息中间件 存储 Java
一览纵山小,原来RocketMQ是这样工作的!
本文介绍了阿里巴巴开源的高性能分布式消息队列系统RocketMQ的核心组件及其作用。RocketMQ拥有四个关键组件:NameServer、Broker、Producer和Consumer。NameServer作为注册中心维护路由信息;Broker负责消息的接收、存储和转发;Producer生成消息并通过Topic与Broker关联;Consumer则订阅并处理消息。文章详细解析了各组件的功能及交互逻辑,并展示了RocketMQ在异步通信、日志收集、流处理及事件驱动架构中的典型应用场景。通过整体框架的梳理,有助于读者更好地理解和掌握RocketMQ的工作机制。
418 4