XAIN是一个用于联合学习的开源框架。

xain-fl的Python项目详细描述


Tests (master)PyPIGitHub licenseDocumentation StatusGitter chat


免责声明:这是正在进行的工作,尚未准备好生产,预计会发生错误!使用风险自负!请勿用于任何与安全相关的问题!


赛因

XAIN项目正在为机器学习构建一个隐私层,以便AI项目能够满足诸如 GDPR和CCPA。该方法依赖于联合学习作为支持技术,允许生产人工智能 应用程序完全符合隐私要求。在

联合学习还支持与隐私无关的不同用例,例如连接数据 在不平衡的数据集中达到更高的模型性能,并在边缘使用人工智能模型。在

此存储库包含运行协调器的源代码。协调器是联邦的组件 选择参与者进行培训并使用联邦平均法聚合模型的学习。在

参与者在与协调器不同的环境中运行,并使用SDK连接到它。您可以找到here的源代码。在

快速入门

XAIN需要Python 3.6.4+。要安装xain-fl包,只需运行:

$ python -m pip install xain-fl

从源安装

克隆此存储库:

^{pr2}$

使用dev配置文件(NOTE:它是 建议在虚拟环境中安装项目):

cd xain-fl
pip install -e '.[dev]'

通过运行测试验证安装

pytest

构建文档

项目文档位于docs/下。构建文档 运行:

$ cd docs/
$ make docs

生成的文档将位于docs/_build/html/下。你可以打开 在您的 收藏夹浏览器或只需运行以下命令:

$ make show

在本地运行协调器

要在本地计算机上运行协调器,可以使用 example-config.toml文件:

# If you have installed the xain_fl package,# the `coordinator` command should be directly available
coordinator --config configs/example-config.toml

# otherwise the coordinator can be started by executing the# `xain_fl` package:
python xain_fl --config configs/example-config.toml

从Docker映像运行协调器

有两个docker compose文件,一个用于开发,一个用于发布。在

发展形象

要运行协调器的开发映像,请首先构建Docker映像:

$ docker build -t xain-fl-dev -f Dockerfile.dev .

然后运行映像,将目录装载为Docker卷:

$ docker run -v $(pwd):/app -v '/app/xain_fl.egg-info' xain-fl-dev coordinator

上面的命令使用默认配置,但您也可以使用 自定义配置文件:

例如,如果您有一个./custom_config.toml文件 喜欢使用,您可以将其装入容器并运行协调器 有:

docker run \
  -v $(pwd)/custom_config.toml:/custom_config.toml \
  -v $(pwd):/app \
  -v '/app/xain_fl.egg-info'\
  xain-fl-dev \
  coordinator --config /custom_config.toml

发布图像

要运行协调器的发布映像,请先构建它:

$ docker build -t xain-fl .

然后运行它(本例假设您希望使用默认端口):

$ docker run -p 50051:50051 xain-fl

Docker撰写

协调器需要一个提供aws3的存储服务 应用程序编程接口。为了开发,我们使用minio。我们提供docker-compose 启动协调器容器和minio容器的文件, 并预先填充适当的存储桶。在

开发

要同时启动协调器和minio服务,请使用:

docker-compose -f docker-compose-dev.yml up

也可以只启动存储服务:

docker-compose -f docker-compose-dev.yml up minio-dev initial-buckets

释放

$ docker-compose up

相关论文和文章

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在mongodb中获取用户有权访问的数据库列表?   基于契约和类不变量的java设计   java我的代码有什么问题,似乎是正确的,但事实并非如此   java Android初学者:布局按钮和文本   400错误Paypal令牌API与Java(HttpURLConnection)   为什么Java从socket中随机读取数据,而不是整个消息?   如果我调用scanner,我会扫描两次。先是下一个,然后是扫描仪。下一个   如果消息发送失败,java ActiveMQ/JMS不重试   java有没有类似于dynaTrace的开源框架?   java Android:获取zip中的文件数(使用存储卷/存储访问框架)   java无法将流图像解码为片段   java如何修复Jenkins插件中的“此位置的预期stackmap帧”   java如何使用javac编译器编译AndroidManifest。xml文件?