GitHub突破1000星!上交、清华开源个性化联邦学习算法库PFLlib

5115c0deb6440caea6f64db3214f473c.gif

©PaperWeekly 原创 · 作者 | 张剑清

单位 | 上海交通大学、清华大学(AIR)

研究方向 | 联邦学习

我们在 GitHub 上开源了一个个性化联邦学习算法仓库(PFLlib),目前已经获得 1K+ 个 Star 和 200+ 个 Fork,在业内收到了广泛的好评。PFLlib 囊括了 34 个联邦学习算法(其中包含 27 个个性化联邦学习算法)、3 大类数据异质场景、20 个数据集。

开源该仓库的主要目的是:1)降低初学者研究个性化联邦学习算法的门槛;2)提供一个统一的实验环境,在多种场景和多个方面对不同个性化联邦学习算法进行评估,为个性化联邦学习算法在具体场景中应用时的选择提供参考;3)为个性化联邦学习算法的研究者们提供一个可以交流的平台,在交流的过程中互相学习,碰撞出新的火花。

829ef6b56341d5a0de3863bef24718d5.png

▲ GitHub Star 的增长曲线

1328e64360dece1fc867e8db56cc6a02.png

论文标题:

PFLlib: Personalized Federated Learning Algorithm Library

论文链接:

https://arxiv.org/abs/2312.04992

代码链接:

https://github.com/TsingZ0/PFLlib

b2a97161f5a7cad4d681691c37dd787f.png

个性化联邦学习(PFL)

联邦学习(FL)作为一种新型的分布式机器学习范式,它主要用于训练人工智能(AI)模型。除了传统分布式机器学习的跨设备协同训练 AI 模型的特点之外,联邦学习的特殊性主要体现在保护每个设备上数据隐私的能力。

联邦学习实现隐私保护的主要方式是:禁止具有隐私性的数据离开产生该数据的设备。这种限制使得这些设备上的本地数据无法通过传统分布式机器学习中的数据采集、数据清洗、数据分片等操作,来实现每个设备上数据的一致性。

由于不同设备所处环境的不同,使得它们各自产生数据、采集数据、处理数据的方式不尽相同。于是,便产生了各个设备之间的数据异质问题,如图 1。在异质的数据上学习得到的本地模型,通过服务器进行了模型参数聚合后生成的全局模型会有表现不佳等问题。

53cebec81ab322745431f4a17b7eaf2b.png

▲ 图1:联邦学习及数据异质问题。

为了应对联邦学习中的数据异质问题,研究者们开始探索在设备参与到联邦学习系统里进行协同训练、聚合得到全局模型的同时,为自己学习适配本地任务的个性化模型的新型联邦学习算法。这类算法被人们称为“个性化联邦学习算法”。

在个性化联邦学习的范畴中,生成全局模型不再是最终的目的,而以全局模型为知识共享的载体、用全局模型中蕴含的全局信息来提升本地模型效果才是最终的目标,如图 2 所示。

在个性化联邦学习框架之下,每个参与者通过联邦学习过程实现协作,用聚合得到的全局信息弥补了本地数据不足的问题;且每个参与者为自己本地任务训练得到的个性化模型利好参与者自身,无形中激励了各个设备参与联邦学习的热情。

49b30fae417654c94fde27286b0da22f.png

▲ 图2:个性化联邦学习。

4b98909b6638949dac732d6e4fd8eb18.png

PFLlib 简介

2021 年伊始,本人在探索个性化联邦学习算法的过程中发现,由于不同论文的实验设置(如数据集、模型结构、数据异质种类、客户机数量、超参数设定等)不同,导致论文中的大部分实验数据不能复用。同时,有相当一部分的论文,其代码并不开源,使得我们无法通过在新场景下运行代码来获得实验数据。

此外,在 PFL 领域逐渐火热起来后,对比实验往往需要比较十几个相关方法,即使每个方法有自己的开源代码,为这些具有不同风格、结构、规范的代码进行新实验设置的适配需要花费大量的精力和时间,使得刚入门 PFL 的研究者无法关注在 PFL 本身的研究上。

当时,我在探索后来发表在 AAAI 2023 的 FedALA [1](PFLlib 包含该算法)过程中,感觉自己写的用来进行对比实验的代码框架相对简单易懂。出于开源精神,我便对其进行了开源。之后,随着我在 PFL 领域逐步深入,越来越多的PFL方法出现,我后续也持续地加入了不少算法,才有了如今的规模。

19403cd11acce12ae9d1e1846d4c28c6.png

▲ 图3:PFLlib 中实现 FedAvg 的例子。

总的来说,PFLlib 拥有以下几个特性:

  • 代码结构简单,易于入手和阅读,易于添加新算法。工具函数存放在utils文件夹中。基础的设备和服务器操作分别存放在clientbase.pyserverbase.py中。如图 3,以在 MNIST 数据集上实现最基础的 FedAvg [2] 算法为例,我们只需要编写generate_MNIST.py来生成实验场景,然后编写clientavg.pyserveravg.py来实现 FedAvg 训练流程,再将 FedAvg 在main.py配置一下,即可通过命令行运行 FedAvg 算法。

  • 提供了较为全面的联邦学习算法仓库和实验环境。PFLlib 总共拥有 34 个联邦学习算法(其中包含 27 个个性化联邦学习算法)、3 大类数据异质场景、20 个数据集。

  • GPU 资源需求较少。使用实验中最常用的 4 层 CNN 网络,可以在 NVIDIA GeForce RTX 3090 GPU 上,仅用 5.08GB 显存模拟 500 个设备同步训练的场景。

  • 提供了一种基于 DLG [3] 的隐私攻击和隐私泄露度量指标,用于度量多数论文中没提及的 PFL 算法的隐私保护能力。

2dffac6ace5c9a9c062e9c14a4089c9c.png

34个联邦学习算法

根据联邦学习算法中用到的技术,我们对 34 个 PFL 算法进行了分类,具体分类结果见表 1。

78c603ec8bdf75f304a50114b9acb015.png

▲ 表1:PFLlib 中联邦学习算法的分类。

691ced638daa639c3518b5359dbb09b2.png

3个场景和20个数据集

联邦学习的数据异质场景主要分为四大类:不平衡性(unbalance)、标签倾斜(label skew)、特征漂移(feature shift)、真实世界(real-world)

其中不平衡性指的是不同设备上数据量不同;标签倾斜主要指的是不同设备上的数据特征相似但类别(标签)不同;特征漂移则与标签倾斜恰好相反,指的是不同设备上的数据标签相同但特征不同;真实世界指的是不同设备上的数据是真实采集到的,可能同时包含以上三种情况。

由于不平衡性与标签倾斜和特征漂移都不冲突,PFLlib 将不平衡性融入了标签倾斜和特征漂移之中。

PFLlib 为标签倾斜(含不平衡性)、特征漂移(含不平衡性)、真实世界三个场景分别提供了适用于各自场景的数据集。

标签倾斜:该场景是在联邦学习领域探索的最多的场景,也是现实情况下最容易遇到的场景。该场景进一步还分为病态的非独立同分布(pathological non-IID)和真实的非独立同分布(practical non-IID)两个子场景。

总共有 14 个数据集用于标签倾斜场景:MNIST、EMNIST、Fashion-MNIST、Cifar10、Cifar100、AG News、Sogou News、Tiny-ImageNet、Country211、Flowers102、GTSRB、Shakespeare、Stanford Cars。它们都支持以上两个子场景。

特征漂移:在这个场景中,PFLlib 主要采用了 3 个数据集,分别是:Amazon Review、Digit5、DomainNet

真实世界:PFLlib 采用的是 IoT(Internet of Things)数据集,它们分别是:Omniglot(20 个设备, 50 个标签)、HAR(Human Activity Recognition)(30 个设备, 6 个标签)、PAMAP2(9 个设备,12 个标签)。

每个数据集中含有多个子数据集,每个子数据集是从某个具体的设备(例如传感器、陀螺仪等)上采集得到的真实数据。这类数据集有利于 PFL 算法在实际场景落地问题的研究。正如 GPFL [4](PFLlib 包含该算法)中的实验表明,在模拟场景(标签倾斜和特征漂移等)表现较好的算法,在真实世界场景中不一定具有良好表现。

3259ca93daacedc4be98962235524bef.png

部分实验结果

出于验证 PFLlib 中附带实验平台的可用性,根据 GPFL 中的默认实验设置,我们对部分算法在部分常见场景中的表现进行了展示,如下表所示(实验结果仅供参考)。

319f4a2774c8bea71f9bd40ea0517511.png

▲ 表2:PFLlib 中部分联邦学习算法在部分场景中测试集上的分类准确率。

最后,感谢大家对 PFLlib 项目的支持,也欢迎刚了解到 PFLlib 的朋友们一起参与到 PFLlib 项目的建设中来!

outside_default.png

参考文献

outside_default.png

[1] Zhang, Jianqing, et al. "Fedala: Adaptive local aggregation for personalized federated learning." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 37. No. 9. 2023.

[2] McMahan, Brendan, et al. "Communication-efficient learning of deep networks from decentralized data." Artificial intelligence and statistics. PMLR, 2017.

[3] Zhu, Ligeng, Zhijian Liu, and Song Han. "Deep leakage from gradients." Advances in neural information processing systems 32 (2019).

[4] Zhang, Jianqing, et al. "Gpfl: Simultaneously learning global and personalized feature information for personalized federated learning." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023.

更多阅读

3838bdb60eb4f96589d0480c7decc679.png

c7ad2b0cc96e74c5fbc4f30800933c0c.png

981336f45aaf0202580675a01dc742ae.png

6c5df9d887b086887f36b7ede2a37f76.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

c8aa14961d443ccc1386b3679537afe3.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

1634d4bbd2dcd5cc20ee4caa3f88bb9f.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/522002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】探索C++中的类与对象(下)---深入理解C++中的关键概念与应用

​​ 🌱博客主页:青竹雾色间. 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ✨人生如寄,多忧何为 ✨ 在C编程中,有许多重要的概念和特性,包括构造函数、explicit关键字、静态成员、友元以及内部类…

58 vue-cli 以及 webpack 提供的默认的插件, 配置

前言 vue-cli 这边作为驱动 webpack 的一个应用 它需要构造 webpack 所需要的上下文, 以及参数 这里 我们来关注一下 vue-cli 这边为 webpack 构造的参数 的相关处理 webpack 这边上下文的配置, 主要分为了几个部分, Entry, Output, Module, Resolve, Plugin, DevServer, O…

Linux下Qt生成程序崩溃文件

文章目录 1.背景2.Qt编译生成程序2.1.profile模式的本质 3.执行程序,得到core文件4.代码定位4.1.直接使用gdb4.2.使用QtCreator 5.总结6.题外话6.1.profile模式和debug模式的区别 1.背景 在使用Qt时,假如在windows,当软件崩溃时,…

太阳能光伏电子实验酸洗用PFA方槽耐受强酸碱耐高温

PFA清洗槽是四氟清洗桶后的升级款,主要用于半导体光伏光电等行业,一体成型,无需担心漏液,表面光滑无毛刺。 别名PFA浸泡桶、PFA酸缸、PFA方槽等,可定制尺寸,可配套盖子,盖子有PFA/PTFE两种材质…

uniapp:聊天消息列表(好友列表+私人单聊)支持App、H5、小程序

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 文章简介(效果图展示&#xff…

【SQL】1890. 2020年最后一次登录(简单写法;窗口函数写法)

前述 sql 中 between 的边界问题 ---- between 边界:闭区间,not between 边界:开区间 在 sql 中, between 边界:闭区间not between 边界:开区间 题目描述 leetcode题目:1890. 2020年最后一…

LC 235.二叉搜索树的最近公共祖先

235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&…

量身定制:选择能够解决企业问题的六西格玛培训机构

现在的培训机构太多了,都在打着六西格玛管理的旗号,甚至有很多培训机构连六西格玛管理都没有学习过,就敢号称自己是六西格玛管理专家。在这个鱼龙混杂的市场上,很多企业对于选择什么样的培训机构,以及如何选择一家靠谱…

【话题】如何看待那些速成并精通软件书籍的神器

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景1. 神话与现实1.1 理论与实践之间的鸿沟1.2 一劳永逸的错觉 2. 速成书籍的优势与局限2.1 优势:2.2 局限: 3. 如何有效利用速成书籍3.1 量力而…

第十二天--二维数组的彻底解刨--地址

1.二维数组我们用父子的地址来称呼二维数组的地址 比如arr[3][4] 这里的arr是二维数组的首地址,也是父数组的首地址,也是子数组的首地址 arr1父数组的地址偏移1,实际上是偏移了4*416个字节 arr[0]是子数组的首地址,arr[0]1是子数…

Ubuntu22.04安装Anaconda

一、下载安装包 下载地址:https://www.anaconda.com/download#Downloads 参考:Ubuntu下安装Anaconda的步骤(带图) - 知乎 下载Linux 64-Bit (x86) installer 二、安装 在当前路径下,执行命令: bash Ana…

Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066

很奇怪的问题,在使用nifi的时候碰到的,这里是用NIFI,把数据从postgresql中同步到mysql中, 首先postgresql中的源表,中是没有create_time这个字段的,但是同步的过程中报错了. 报错的内容是说,目标表中有个create_time字段,这个字段是必填的,但是传过来的flowfile文件中,的数据没…

智过网:一建继续教育,操作指南与周期解析

随着社会的快速发展和技术的不断更新,建筑行业对从业人员的专业素质要求也在逐步提高。为了确保一级建造师的专业技能能够与时俱进,满足行业发展的需求,继续教育成为了必不可少的环节。本文将详细解析一建继续教育的操作流程及其周期安排&…

洛谷 1126.机器人搬重物

思路:BFS 这道BFS可谓是细节爆炸,对于编程能力和判断条件的能力的考察非常之大。 对于这道题,我们还需要额外考虑一些因素,那就是对于障碍物的考虑和机器人方位的考虑。 首先我们看第一个问题,就是对于障碍物的考虑…

基于单片机放大电路程控放大特性参数设计

**单片机设计介绍,基于单片机放大电路程控放大特性参数设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机放大电路程控放大特性参数设计是一个结合了单片机编程和放大电路技术的综合性项目。以下是对该设计项目的概…

Dapr(三) Dapr核心组件的使用一

结合前两期 Dapr(一) 基于云原生了解Dapr(Dapr(一) 基于云原生了解Dapr-CSDN博客) Dapr(二) 分布式应用运行时搭建及服务调用(Dapr(二) 分布式应用运行时搭建及服务调用-CSDN博客) 下篇推出dapr服务注册与发现,dapr组件绑定,dapr Actor功能。 目录 1.…

LVGL可视化设计-Gui Guider

(提示:本篇编辑状态中,完成了70%左右,争取4-8前完成) 一、Gui Guider 概述 免费!免费!免费!支持 LVGL v7、 v8.3很方便的:安装、使用 (另一种主流的visual studio模拟,省…

#pragma once的作用

使用visual studio新建头文件时,第一行会出现如下默认代码, #pragma once 它是一种编译器指令,通常用于确保头文件只被包含一次,以避免产生重复定义的问题。当编译器处理一个源文件时,遇到#pragma once指令时&#xf…

【Python】数据挖掘与机器学习(一)

【Python】数据挖掘与机器学习(一) 大家好 我是寸铁👊 总结了一篇【Python】数据挖掘与机器学习(一)sparkles: 喜欢的小伙伴可以点点关注 💝 【实验1】预测鲍鱼年龄 问题描述 请从一份数据中预测鲍鱼的年龄,数据集在abalone.cvs中&#xff…

SAP-SD VFX3释放销售订单发票报错:科目确定错误

VFX3 报错截图: VF03 - 检查发票信息 VKOA - 科目确定配置 核对是否有配置相应科目 以上~~