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

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

    关注

    13

    文章

    10097

    浏览量

    90907
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136236

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    与标准C的区别

    因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C进行了优化,以减小代码量。 优化标准,肯定会带来一些差异,下面分享几点
    发表于 12-09 07:49

    E203 代码结构梳理

    一、队伍介绍 本篇为蜂鸟E203系列分享第五篇,本篇介绍的内容是E203 代码结构梳理。 二、层次图 三、模块具体功能
    发表于 10-30 06:56

    订单评价内容采集接口技术解析

    基于常见技术场景,确保真实性和实用性。 1. 接口概述与核心功能 订单评价内容采集接口主要负责从数据中提取指定订单的评价信息,包括文本评论、评分和用户元数据。其核心功能包括: 数据查询 :通过订单ID或其他标识符精准定位
    的头像 发表于 10-17 15:14 275次阅读
    订单评价<b class='flag-5'>内容</b>采集接口技术解析

    数据数据恢复—服务器异常断电导致Oracle数据故障的数据恢复案例

    Oracle数据故障: 某公司一台服务器上部署Oracle数据。服务器意外断电导致数据报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据
    的头像 发表于 07-24 11:12 448次阅读
    数据<b class='flag-5'>库</b>数据恢复—服务器异常断电导致Oracle数据<b class='flag-5'>库</b>故障的数据恢复案例

    数据数据恢复—SQL Server数据被加密如何恢复数据?

    SQL Server数据故障: SQL Server数据被加密,无法使用。 数据MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 515次阅读
    数据<b class='flag-5'>库</b>数据恢复—SQL Server数据<b class='flag-5'>库</b>被加密如何恢复数据?

    AD封装安装教程

    电子发烧友网站提供《AD封装安装教程.pdf》资料免费下载
    发表于 06-19 15:35 3次下载

    SQLSERVER数据是什么

    SQL Server 是由微软公司开发的一款 关系型数据管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据解决方案之一,尤其适用于Windows平台,但也
    的头像 发表于 05-26 09:19 998次阅读

    MySQL数据是什么

    MySQL数据是一种 开源的关系型数据管理系统(RDBMS) ,由瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查询语言(SQL)进行数据存储、管理和操作,广泛应用于Web
    的头像 发表于 05-23 09:18 924次阅读

    程序设计与数据结构

    《程序设计与数据结构》重点阐述了三大方向内容: 1. C语言学习中的痛点:针对当前工程师在C语言学习中的痛点,如指针函数与函数指针,如何灵活应用结构体等。从变量的三要素(变量的类型,变量的值和变量
    发表于 05-13 16:45

    AI知识的搭建与应用:企业数字化转型的关键步骤

    和应用数据,从而为AI应用提供源源不断的支持,帮助企业实现全面的数字化转型。   AI知识的定义与作用   AI知识是一个由结构化和非结构化数据组成的资源池,包含了企业的核心知识、
    的头像 发表于 03-27 15:18 1088次阅读

    AD封装之3D元件

    AD封装分享
    发表于 02-10 15:37 33次下载

    MySQL数据的安装

    MySQL数据的安装 【一】各种数据的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介绍
    的头像 发表于 01-14 11:25 866次阅读
    MySQL数据<b class='flag-5'>库</b>的安装

    云数据是哪种数据类型?

    云数据是一种部署在虚拟计算环境中的数据,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据服务。云数据主要分为两大类:关系型数据
    的头像 发表于 01-07 10:22 812次阅读

    一般企业购买云服务器带数据吗?

    购买云服务器是否带数据,这主要取决于所选择的云服务提供商及其具体的套餐或服务内容。一般来说,云服务器本身是一个提供计算能力、存储空间和网络连接资源的虚拟服务器,它本身并不直接包含数据服务。然而
    的头像 发表于 01-06 10:25 726次阅读

    如何使用cmp进行数据管理的技巧

    你在使用 cmp 命令时进行有效的数据管理。 1. 理解 cmp 命令 cmp 命令用于比较两个文件是否在内容上完全相同。它逐字节比较文件,并在找到第一个不同的地方时停止。这对于检查数据文件的一致性非常有用,尤其是在备份和恢
    的头像 发表于 12-17 09:31 977次阅读