0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FedJAX的库结构和内容

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2021-11-08 11:27 次阅读

联邦学习是一种机器学习设置,允许多个客户端(即移动设备或者整个组织,取决于正在参与的任务)在一个中央服务器的编排下,协同训练同一个模型,同时还能保持训练数据的离散性。例如,通过联邦学习,可以基于永远不会从移动设备中消失的用户数据训练虚拟键盘语言模型。

要实现这点,联邦学习算法首先需要初始化服务器中的模型,然后完成以下对于每一轮训练而言都非常关键的三步:

1. 服务器将模型发送到一组采样客户端。

2. 这些采样客户端在本地数据中训练模型。

3. 训练完成之后,客户端将更新后的模型发送到服务器,然后服务器将所有这些模型汇总在一起。

随着人们对隐私和安全的日益注重,联邦学习已成为一个尤为活跃的研究领域。对于这个日新月异的领域,能够轻松将想法转换为代码、快速迭代,以及比较和复制现有基线的重要性不言而喻。

日新月异的领域

https://research.google/pubs/pub49232/

因此,我们很高兴为大家介绍 FedJAX。FedJAX 是一个基于 JAX 的开源库,适用于注重研究易用性的联邦学习模拟。FedJAX 拥有适用于执行联邦算法、预打包的数据集、模型和算法以及高模拟速度的简单基本模块,旨在让研究员能够更快速、更容易地开发和评估联邦算法。

FedJAX

https://github.com/google/fedjax

JAX

https://github.com/google/jax

在这篇文章中,我们将讨论 FedJAX 的库结构和内容。我们会证明,在 TPU 中,FedJAX 可通过 EMNIST 数据集的联合平均,在几分钟内就能训练完模型。而通过 Stack Overflow 数据集的标准超参数 (Hyperparameter),则需要将近 1 小时。

EMNIST

https://github.com/google/fedjax/blob/main/fedjax/datasets/emnist.py

联合平均

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.fed_avg

Stack Overflow

https://github.com/google/fedjax/blob/main/fedjax/datasets/stackoverflow.py

库结构

FedJAX 注重易用性,因此仅引进了少量新概念。使用 FedJAX 编写的代码与学术论文用于描述新颖算法的伪代码类似,因此极易上手。除此之外,虽然 FedJAX 提供了联邦学习的基本模块,但用户可以将其替换为最基本的实现(仅使用 NumPy 和 JAX),并且仍然可以将整体训练速度保持在一个合理的区间。

与学术论文用于描述新颖算法的伪代码类似

https://github.com/google/fedjax/blob/main/README.md#quickstart

NumPy

https://numpy.org/

包含的数据集和模型

在当前联邦学习研究领域,存在各种各样常用的数据集和模型,例如图像识别 (Image recognition)、语言建模 (Language modeling) 等。越来越多这样的数据集和模型无需安装即可直接用于 FedJAX,因此用户无需从头开始编写预处理数据集和模型。这不仅有利于对不同的联邦算法进行有效比较,还加速了新算法的开发。

目前,FedJAX 与以下数据集和示例模型一起打包:

EMNIST-62,一项字符识别任务

https://github.com/google/fedjax/blob/main/fedjax/datasets/emnist.py

Shakespeare,一项下一字符预测任务

https://github.com/google/fedjax/blob/main/fedjax/datasets/shakespeare.py

Stack Overflow,一项下一字词预测任务

https://github.com/google/fedjax/blob/main/fedjax/datasets/stackoverflow.py

除了以上标准设置,FedJAX 还提供用于创建新数据集和模型的工具,这些新数据集和模型可以与库的其余内容共同使用。

工具

https://fedjax.readthedocs.io/en/latest/fedjax.html#federated-data

此外,FedJAX 支持联合平均的标准实现,也支持用于在分散式示例上训练共享模型的其他联邦算法,例如自适应联邦优化器、不可知联合平均以及 Mime,从而让比较和评估现有算法变得更加简单。

自适应联邦优化器

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.fed_avg

不可知联合平均

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.agnostic_fed_avg

Mime

https://fedjax.readthedocs.io/en/latest/fedjax.algorithms.html#module-fedjax.algorithms.mime

性能评估

我们在两项任务上对自适应联合平均的标准 FedJAX 实现进行了基准测试:图像识别任务(测试联邦 EMNIST-62 数据集)和下一字词预测任务(测试 Stack Overflow 数据集)。联邦 EMNIST-62 数据集较小,由 3400 名用户和他们创建的示例(共 62 个拉丁字母数字字符)构成;而 Stack Overflow 数据集较大,由数百万问题和答案构成(这些问题和答案来自于拥有成千上万名用户的 Stack Overflow 论坛)。

自适应联合平均

https://openreview.net/pdf?id=LkFG3lB13U5

联邦 EMNIST-62 数据集

https://github.com/google/fedjax/blob/main/fedjax/datasets/emnist.py

Stack Overflow 数据集

https://github.com/google/fedjax/blob/main/fedjax/datasets/stackoverflow.py

我们在专门用于机器学习的各种硬件上测量性能。对于联邦 EMNIST-62,我们在 GPU (NVIDIA V100) 和 TPU(Google TPU v2 上的 1 个 TensorCore)加速器上对单一模型进行了 1500 轮训练(每轮 10 个客户端)。

对于 Stack Overflow,我们在 GPU (NVIDIA V100)、单核 TPU(Google TPU v2 上 1 个 TensorCore)及多核 TPU(Google TPU v2 上 8 个 TensorCore)上对单一模型进行了 1500 轮训练(每轮 50 个客户端)。其中,在 GPU 上使用 jax.jit,在单核 TPU 上仅使用 jax.jit,而在多核 TPU 上使用 jax.pmap。在下方图表中,我们记录了每轮训练的平均完成时间、完整评估测试数据所需时间以及整体执行时间(整体执行包含训练和完整评估)。

通过标准超参数和 TPUs,联邦 EMNIST-62 的整个实验可以在几分钟之内完成,而 Stack Overflow.的实验需要 1 小时左右的时间。

我们还评估了随着每轮客户端数量增加之后的 Stack Overflow 平均每轮训练时长。通过比较图表上 8 核 TPU 与单核 TPU 的平均每轮训练时长,我们很容易就能发现,如果每轮参与的客户端数量较多,则使用多核 TPU 能极大缩短运行时间(对微分化的不公开学习等应用来说非常有帮助)。

微分化的不公开学习

https://openreview.net/forum?id=BJ0hF1Z0b

结论和未来研究方向

在这篇文章中,我们介绍了 FedJAX 这种适用于研究、速度较快且简单易用的联邦学习模拟库。我们希望 FedJAX 能推动联邦学习的深入研究,同时引起人们对于该领域的更多关注。未来,我们计划继续发展现有算法集、聚合机制、数据集和模型。

欢迎各位随时查阅我们的教程笔记本,或者亲自体验 FedJAX!

教程笔记本

https://fedjax.readthedocs.io/en/latest/

亲自体验 FedJAX

https://github.com/google/fedjax/blob/main/examples

若想进一步了解 FedJAX 及其与 Tensorflow Federated 等平台的关系,请参阅我们的论文、README 或常见问题解答。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9142

    浏览量

    85384
  • 机器学习
    +关注

    关注

    66

    文章

    8414

    浏览量

    132612

原文标题:FedJAX:使用 JAX 进行联邦学习模拟

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HAL和标准的区别 HAL与CMSIS的关系

    在嵌入式系统开发中,HAL(硬件抽象层)和标准是两种常用的软件,它们在功能和使用场景上有所不同。 1. 标准 标准,通常指的是C语
    的头像 发表于 12-02 14:02 502次阅读

    如何快速入门HAL编程 HAL与裸机编程的比较

    。 选择开发环境和工具 : 下载并安装适用于目标微控制器的IDE(如STM32CubeIDE)。 配置开发环境,包括编译器、调试器等。 学习HAL文档和教程 : 阅读官方HAL文档,了解HAL
    的头像 发表于 12-02 11:39 294次阅读

    支持外扩sd卡功能的串口数据模块

    往期文章介绍了LS10串口数据模块的SQL数据库存取功能,片内容量测试如下: 容量测试,分享如下: 表格结构(sn int primary key not null,id int,p1 int
    发表于 11-23 09:50

    AIGC与传统内容生成的区别 AIGC的优势和挑战

    、AIGC与传统内容生成的区别 数据类型与处理 : AIGC主要面向非结构化数据的生成,如自然语言文本、图像、音频、视频等。这类数据规模更大,内在结构更复杂,对处理技术提出了更高要求。 传统
    的头像 发表于 11-22 16:04 263次阅读

    多维表格数据Teable的适用场景?

    Teable多维表格数据是一款功能强大的云端数据和协作工具,结合了电子表格的灵活性和数据的强大功能,适用企业内部项目管理 数据收集与整理 内容管理与创意协作 客户关系管理 项目跟
    的头像 发表于 10-31 15:48 187次阅读

    数据数据恢复—通过拼接数据碎片恢复SQLserver数据

    一个运行在存储上的SQLServer数据,有1000多个文件,大小几十TB。数据每10天生成一个NDF文件,每个NDF几百GB大小。数据包含两个LDF文件。 存储损坏,数据
    的头像 发表于 10-31 13:21 210次阅读
    数据<b class='flag-5'>库</b>数据恢复—通过拼接数据<b class='flag-5'>库</b>碎片恢复SQLserver数据<b class='flag-5'>库</b>

    AIGC与传统内容生成的区别

    AIGC : 主要面向非结构化数据的生成,如自然语言文本、图像、音频、视频等。 这类数据规模更大,内在结构更复杂,对处理技术提出了更高要求。 传统内容生成 : 主要处理结构化数据,如
    的头像 发表于 10-25 15:13 400次阅读

    labview选择结构和读写保存文件

    有一个选择结构有4个分支,其中一个分支为添加,想要在这个分支结构中向多列表表框中添加内容(已实现)并将这些内容输出为txt文件然后与原本的txt文件
    发表于 10-22 14:50

    架构师日记-从数据发展历程到数据结构设计探析

    一 数据发展史 起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据,但都存在着难以扩展和维护的问题。直到七十年代,关
    的头像 发表于 09-25 11:20 799次阅读
    架构师日记-从数据<b class='flag-5'>库</b>发展历程到数据<b class='flag-5'>结构</b>设计探析

    一种常用嵌入式开发代码

    使用开源协议:GPL-2.0varch简介varch(we-architecture,意为我们的框架)是嵌入式C语言常用代码模块,包含了嵌入式中常用的算法库,数据结构(容器),解
    的头像 发表于 09-04 08:06 472次阅读
    一种常用嵌入式开发代码<b class='flag-5'>库</b>

    尾矿位移监测设备的组成及其优势

    尾矿作为矿山废弃物的主要储存场所,其稳定性受多种因素影响,包括地质条件、降雨量、水位变化、坝体结构等。一旦发生溃坝、泄漏等事故,不仅会造成巨大的经济损失,还可能引发严重的环境污染和人员伤亡,为
    的头像 发表于 08-26 15:04 230次阅读
    尾矿<b class='flag-5'>库</b>位移监测设备的组成及其优势

    摆脱自建的繁琐,EDA元件转cadence原理图封装实战技巧

    摆脱自建的繁琐,EDA元件转cadence原理图封装实战技巧
    的头像 发表于 08-24 12:29 2699次阅读
    摆脱自建<b class='flag-5'>库</b>的繁琐,EDA元件<b class='flag-5'>库</b>转cadence原理图封装<b class='flag-5'>库</b>实战技巧

    恒讯科技分析:云数据rds和redis区别是什么如何选择?

    结构化数据,使用SQL作为查询语言,支持ACID事务和多种复杂查询操作。而Redis是一个基于内存的非关系型数据,采用键值对模型存储数据,支持丰富的数据结构如字符串、列表、集合、哈希表等。 2、性能:Redis以其超快的速度而
    的头像 发表于 08-19 15:31 384次阅读

    数据数据恢复—SqlServer数据底层File Record被截断为0的数据恢复案例

    SQL Server数据的数据无法被读取。 经过数据数据恢复工程师的初步检测,发现SQL Server数据文件无法被读取的原因是底层File Record被截断为0,无法找到文件开头,而且数据表
    的头像 发表于 07-26 11:27 384次阅读
    数据<b class='flag-5'>库</b>数据恢复—SqlServer数据<b class='flag-5'>库</b>底层File Record被截断为0的数据恢复案例

    博途用户自定义的使用-的编辑及管理

    前面两篇文章我们介绍了项目及全局。项目没有单独的存放路径,它随项目创建而创建,随项目保存而保存。全局有单独的存放路径,可被保存、归档及解压缩等。
    的头像 发表于 01-24 10:45 1086次阅读
    博途用户自定义<b class='flag-5'>库</b>的使用-<b class='flag-5'>库</b>的编辑及管理