【论文笔记 | 异步联邦】Asynchronous Federated Optimization

news/2024/11/30 10:40:28/

论文信息

Asynchronous Federated Optimization,OPT2020: 12th Annual Workshop on Optimization for Machine Learning,不属于ccfa

introduction

背景:联邦学习有三个关键性质

  1. 任务激活不频繁(比较难以达成条件):对于弱边缘设备,学习任务只在设备空闲、充电、连接非计量网络时执行
  2. 通信不频繁:边缘设备和远程服务器之间的连接可能经常不可用、缓慢或昂贵(就通信成本或电池电量使用而言)
  3. 非iid训练数据: 联邦学习不同设备上的数据不相交,因此可能代表来自总体的非相同分布的样本

挑战:系统异构导致的“掉队者”问题

不同设备的计算和通信能力不同,可能会有很多弱设备无法按时完成本地更新任务

解决的问题:

  1. 解决正则化的局部问题保证收敛性
  2. 使用加权平均更新全局模型,其中混合权值作为过时性的函数自适应设置 α

贡献点:

  1. 提出了新的异步联邦优化算法,给出了原型系统设计
  2. 证明了该方法对于一类受限的非凸问题的收敛性
  3. 提出了控制由异步引起的错误的策略。引入一个混合超参数 α,可以自适应地控制收敛速度和方差减少之间的权衡
  4. 实验表明提出的算法收敛速度快,并且在实际设置中通常优于同步联邦优化。

问题描述:System model/架构/对问题的形式化描述

对问题的形式化描述

符号定义
在这里插入图片描述
在这里插入图片描述

0:调度程序通过协调程序触发训练
1,2: worker通过coordinator从server接收模型xt−τ
3 :worker按照算法1计算本地更新。Worker可以在工作和空闲两种状态之间切换
4,5,6:worker通过协调器将本地更新的模型推送到服务器。协调器将5中接收到的模型排成队列,并将它们依次提供给6中的更新程序。
7、8:服务器更新全局模型,并使其准备好在协调器中读取。在系统中,1和5是异步并行运行的

t:当前的全局模型版本
t - τ:设备接收到的全局模型版本
τ:过时度

解决方法

执行流程:

在这里插入图片描述

t:当前的全局模型版本
τ:设备接收到的全局模型版本
t - τ:过时度

挑战问题怎么解决:

  • 解决掉队者问题:允许异步聚合
  • 利用在这里插入图片描述
    ,调整 当前全局模型 与 从设备端接收到的模型 的 权重,完成对全局模型的更新在这里插入图片描述
    目的是降低陈旧模型的权重,减少陈旧模型对全局模型的负面影响

在这里插入图片描述
在这里插入图片描述

s( )需要满足两个条件

  • t = τ 时,模型是最新的,即 s(t-τ)=1
  • 随着 t-τ 的增加, s(t-τ)减少 s( ) 可以设置成以下三种形式 在这里插入图片描述

性能保证:

收敛性分析(略)

效果:重点是实验设计,每一部分实验在验证论文中的什么结论

实验设置

数据集:CIFAR-10 和 WikiText-2。训练集被划分为n = 100个设备。小批量分别为50个和20个。
Baseline:

  • FedAvg:在每个epoch中,随机选择k = 10个设备启动本地更新
  • 单线程SGD
  • FedAsync,通过从均匀分布中随机采样陈旧度(t−τ)来模拟异步
    每个实验重复10次,取平均值。

对比实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验效果:

  • FedAsync的收敛速度一般介于单线程SGD和fedavg之间。较大的α值和较小的陈旧度 使FedAsync更接近单线程SGD较小的α和较大的陈旧度 使得FedAsync更接近fedavg
  • 根据经验,FedAsync通常对超参数不敏感。当偏差较大时,可以通过调整α来提高收敛性。如果没有自适应α,则α越小越好。对于自适应α,经验上的最佳选择是 FedAsync+Hinge。FedAsync+Poly和FedAsync+Hinge具有类似的性能。
  • 与fedavg相比,FedAsync的性能与fedavg一样好,在大多数情况下甚至更好。当陈旧度较小时,FedAsync的收敛速度比fedag快得多。当陈旧度较大时,FedAsync仍然可以达到与fedag相似的性能。

(备选)自己的思考

异步 FL :一个FL生态中有一个Server,多个Device,其中不同device 的计算能力、通信资源以及本地数据集不同,导致device 进行本地模型训练所需的时间不同,有快有慢。传统FL 需要等待所有的device 完成本地模型训练后,server 端才会按照选定的策略(eg:加权平均)进行聚合。但是异步FL 不需要等待,只要涉及训练的device 中有一个完成训练,就可以上传到Server 端完成聚合。

问题: server 端 updater 顺次从 coordinater上获取 Xnew 进行模型更新,假设当最新的模型为 X3
,但其他模型都没训练完成时,全局模型再次更新为 X4,X3是会轮空还是? 思考:目前的论文大部分其实是半异步,就是 Server
端会等待一个固定时间 T 之后进行全局模型聚合,或者等待固定个数 n 个模型后进行聚合。而且一般情况下为了获得较好的模型,实验设定的
device 数都不会很少,基本不需要考虑这样的情况,也就是问题不存在 通过允许 Plato 代码得出, client 端和 fedavg
流程一致,只对算法进行修改 主要的修改在server

动机,通过什么方法解决,达到了什么效果,有什么可以改进的地方

论文对你的启发,包括但不限于解决某个问题的技术、该论文方法的优缺点、实验设计、源码积累等。
备注:

  1. 不是每一篇论文都有以上内容,但是尽可能按照以上思路读论文、总结论文。
  2. 注意用自己的话总结以上内容,不要整篇翻译论文,而且不推荐使用类似知云翻译这种软件读论文。建议直接读英文原文,有不理解或者不知道的词可以翻译记录。
  3. 读论文的过程中,一定要多问为什么,多考虑这个问题存不存在、这个方法能不能解决,不要盲目迷信论文作者。
  4. 读论文的目的在于调研本领域的研究内容,发现问题,提出自己的想法,刷论文数量没有意义,需要发现读过论文对自己研究的价值。
  5. 当发现论文中存在自己不了解的技术或者方法,首先进行调研,不要有畏难的心理,多掌握一门工具能帮助你解决自己的研究问题。

http://www.ppmy.cn/news/1425414.html

相关文章

Spring Boot 加载本地 JAR 包的技术实践

随着微服务架构的兴起,Spring Boot 因其快速构建、易于部署的特性,成为了众多开发者的首选框架。在开发过程中,我们有时需要引入一些不在公共 Maven 仓库中的 JAR 包作为依赖,这时候就需要加载本地的 JAR 包。本文将详细介绍在 Sp…

[C++][算法基础]欧拉函数(线性筛)

给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和。 输入格式 共一行,包含一个整数 n。 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和。 数据范围 1≤n≤ 输入样例: 6输出样例&#xff1a…

FPGA开发之状态机设计

状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路。通常包括三个部分: 一是下一个状态的逻辑电路, 二是存储状态机当前状态的时序逻辑电路, 三是输出组合逻辑电路。 通常,状态机的状态数量有限,称…

Mac使用Idea新手常用快捷键

Mac使用Idea新手常用快捷键 前言常用指令1、选中多个文件,不连续2、点进去查看某个类的代码3、复制某个类的全类名4、鼠标滚轮选中多行,然后选中这些行上同一列光标所在的单词 前言 入职新公司后用的是mac,从windows切换到mac,一…

安卓手机APP开发__媒体开发部分__直播流

安卓手机APP开发__媒体开发部分__直播流 目录 概述 检查和监控直播的播放 在直播流中的定位查找 直播播放的用户界面 配置直播播放的参数 播放速度调整 定制播放速度的调整算法 直播窗口背后的异常和ERROR_CODE_BEHIND_LIVE_WINDOW 概述 ExoPlayer没有任何特殊配置的…

PCB---Editor 输出光绘

选择一个层*(正面走线层和过孔) 选择一个文件复制命名(最后删除初始的那2个文件,下图是删除过后的): 隐藏全部开始重复以上步骤: 大致的层: Art01(正面走线层和过孔&…

ceph osd分组

一、前言 使用分组可以更好的管理osd,将不同类型的磁盘,分到不同的组中,例如hhd类型的osd分配到hhd组,ssd类型的osd分配到ssd组,将io要求不高的分配到hhd组做存储,io要求高的分配到ssd组做存储 二、配置 查…

Unity 中(提示框Tweet)

using UnityEngine; using UnityEngine.UI; using DG.Tweening; using System; public class Message : MonoBehaviour {public float dropDuration 0.5f; // 掉落持续时间public float persisterDuration 1f; // 持续显示时间public float dorpHeight;public static Message…