IPLS : A Framework for Decentralized Federated Learning

背景 & 论文思想

今天介绍的还是一篇去中心化联邦学习的文章,与之前分享的一篇去中心化联邦学习文章有一些相似,都是将一个模型进行分片。改文章的死想是每个client都保留一部分分片,在训练模型更新参数的时候,首先从别的client中拿到自己所没有的模型分片组合成一个完成的模型,训练后再将梯度发送给其他的client

IPLS训练模型的方法

在这里插入图片描述

本篇文章所介绍的训练算法主要分为以下几个部分

  • Initialisation phase: 确定模型的拓扑结构(如ResNet),随机初始化模型的参数,确定优化算法和损失函数
  • Model partitioning and distribution:将模型进行分片,并确定两个参数的值 ρ , π \rho,\pi ρ,π,这两个参数的含义是,一个模型分片在所有的client中最多只有 ρ \rho ρ个副本,并且每个client最多只能拥有 π \pi π个模型的分片
  • Ttraining Phase:每个client将检查哪些分片是自身没有的,然后从别的client中拿过来组成一个新的模型,然后用该模型在本地数据集上进行训练,训练完成之后将新的分片发回给别的client

IPLS API

这篇文章有一个比较与众不同的点是设计了一系列的API来说明整个算法:

  • Init(String IPFS_Path, List Bootstrapers):这是Initialisation phase的实现,完成模型 M M M,损失函数 L L L,参数 ρ , π \rho,\pi ρ,π的指定和初始化。之后Init()会等待想要参与联邦的client的回应。回应(Response)中会包含着该client的通信地址、该client中可用的模型分片和可用的存储空间。这些信息都会保存在一个Lookup Table里面
  • UpdateModel(Vector Gradient):client可以调用这个方法去更新模型 W W W,首先 W W W会被分成相应的模型分片,然后对于每一个分片都会去Lookup Table里面去寻找可以提供该分片的client。这种client可能有多种,系统会根据一些准则,如位置,连通性,信任,负载,功率级别来确定哪个client是最适合的。当找齐这些client后,将每个模型分片和分片ID发送给对应的client,并等待这些client的回应。这些client会返回一个update给发起者(应该是一个梯度),然后发起者用这些update对应地更新本地模型分片
  • LoadModel():返回client本地缓存的模型

整个算法的过程也可以由下述伪代码所表示:
在这里插入图片描述
其中1-4行都是对系统的一个初始化,第5行是找出本地没有的模型分片,6-7行是让本地的模型分片的数量满足系统的要求,9-10是从其他client中拿齐模型分片之后用本地训练集进行训练

总结

这篇文章使用的方法还是跟之前的一些工作有些类似的,都是模型分片+P2P的一些变种,亮点比较少。不过之前的工作所做的模型分片都只是为了减少通信开销所使用的,每一个client都会有所有的模型分片,这篇文章的模型分片是为了保证系统的一个鲁棒性,为了防止某些节点在训练的过程中突然断开连接采取的一个冗余措施。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值