【论文笔记】《FLchain: Federated Learning via MEC-enabled Blockchain Network》精读笔记
Information of the paper:
DOI: 10.23919/APNOMS.2019.8892848
目录
2. Preliminaries and Definitions
1. Abstract
1)提出了基于区块链网络的“FLchain”.
2)介绍了“the Global model state trie”.
2. Preliminaries and Definitions
2.1 Channel
将peers隔离开,分成小的“区域”,每一小“区域”属于同一个channel。只有在同一个channel中的peers才有权在channel内读取、提交、验证事务。每个channel有单独的分类帐本,单独的共识。在FLchain中,对于每个全局模型,都会创建一个带有genesis块(用于存储该channel的分类账)的新channel。genesis块存储全局模型的初始权重、权重的维数、超参数、**函数、偏差(bias)。
2.2 Global Model State Trie
类似于用于追踪账户状态的“Account StateTrie”。作者提出的“Global Model State Trie”用来追踪FLchain中全局模型的权重。每一个channel都有它自己的“Merkle Patricia tree”形式的trie。Global Model State Trie将权值存储在键值对中,其中“key”为权重位置(下表表权重的索引),“value”是权重系数。达成共识之后,trie为全局学习模型提供更新后的权重系数。
3. System Model
作者将多存取边缘计算(MEC)和区块链网络结合,提出了一套适用于FL的系统模型。FLchain包括移动设备和边缘设备(如Fig.1)。移动设备使用设备上的数据样本计算local model update。边缘设备有两个作用:①向资源受限的移动设备提供网络资源;②在FLchain的区块链网络中充当节点。
每个全局模型是在单独的channel上进行的。
在FLchain中,区块链网络由边缘设备组成,对于特定的channel,它以块的形式在单独的区块链上存储来自于设备的本地模型更新。区块链网络也计算并安全地将特定channel的全局模型更新存储在分类账上。
Fig.2 表示特定信道FL的区块链的简化结构。
FLchain的底层区块链平台应该是定制开发的,具有Hyperledger Fabric(一个分布式账本技术)和Ethereum(以太坊)的特点。
4.The Operation of FLchain
4.1FLchain过程
上述算法1 描述了FLchain的操作。
【L.2】初始化。
表示全局迭代的次数;
表示channel j的全局模型权重;
表示channel j 中设备i的本地模型权重;
表示channel j 上的设备数量。
这一篇的实验部分和《Blockchained On-Device Federated Learning》的方法基本相同,都是解决线性回归问题,Loss Function也基本一样,本篇就不再赘述。
【L3~L7】为每个设备分配channel。
当一个设备想要加入一个channel时,就执行“channel inquiry”操作,然后, 区块链网络会向设备发送一个channel list。
设备选定一个channel,就标记
。然后,去选定的channel那里进行注册,然后设备会获得一组公钥和私钥,设备可以通过公私钥向channel上传本地模型权重系数。
【L8~L20】一个channel内的模型更新。其中,
【L9~L17】channel内的所有设备的操作。
[L10~L11]是将全局模型下载同步到本地。(通过该channel中的边缘节点从区块链那里下载最新的全局模型参数。 疑问:边缘节点怎么选出来的,如果边缘节点崩溃了呢?)
[L12~L14]本地设备进行V轮计算(通过公式6)。
这篇文章的方法也是用的SVRG(随机方差梯度下降)。
[L15~L16]将本地模型权重上传至channel的边缘节点。达到块生成并且转发到区块链网络。并等待channel的回应。
【L19】使用公式(7)计算全局权重。
【L20】进行全局模型状态Trie的更新,块生成,共识。
下面是时序图。
4.2 Transaction Pool
这篇文章提到了“Transaction Pool”这个概念,我理解为“交易池”。设备提交的交易被累积在交易池(实际是一个mempool)中,直到时间达到该channel的(每个全局模型迭代内存池中交易的累计时间),达到
后,边缘节点会转发给区块链。区块链网络的每个节点都有特定自己的channel-specific mempool。有些交易会由于网络延迟等原因而“迟到”,这些“迟到”的交易要被丢弃,而不能用于下一次全局模型更新的计算。
4.3 Global Model Update
当到达后,channel j中的边缘节点会生成一个块,块中存储该channel的mempool中的第t轮迭代的信息。全局模型状态trie会保存全局模型参数
。全局模型状态trie的root被添加进块的头部(block header)。全局模型权重更新使用的DANE(分布式拟牛顿法)。
4.4 Consensus Protocol
有的设备可能无法在规定时间内向胜利矿工报告它们的本地模型,这就需要一个协议来处理这些设备。
在矿工广播最新的块之后,区块链中的peers必须验证块交易并检查更新的全局模型状态trie。Peers计算它们自己的本地模型状态trie,并且对照广播的块来验证全局模型状态trie的根。如果发现该区块有效,则区块链网络必须为区块链达成共识。但若该块无效,就会被拒绝。赢家矿工的块广播被附加到特定的分布账本上。由于每个区块链节点都要计算、验证和确认全局模型状态trie,因此blockchain-based FL就比传统的FL可信且健壮。基本一致性协议可以用pBFT(拜占庭容错)或者POW来代替。
4.5 Analysis
在每次全局模型迭代之后,都将进行判断,检查FL是否已达期望的结果。
迭代结束的条件:,其中
是预定义的大于零的常数。
5.Evaluation
本篇文章,主要的优点:
- FLchain为学习每个全局模型提供一个单独的channel,用于存储属于该channel的本地模型更新的共识和分类帐本。
- 全局模型trie也是基于每个channel维护的,它可以安全地将全局模型权重存储在Merkle Patricia Tree中,并且它还可以进行溯源。
- 在FLchain中,全局模型更新有区块链网络进行计算、验证、存储,代替了中心服务器,它比传统地FL更健壮。
6.思考
6.1 channel的实质作用是什么?
目前理解:通过channel把设备进行“分块”,设备上传local model时,先暂存到channel内边缘节点的mempool,等达到后,边缘节点将mempool中的内容转发到区块链。此外,设备下载global model时,通过本channel的边缘节点从区块链下载。
6.2 交易池,仅仅是为了暂存设备上传的本地模型?所有本channel设备上传的都存在那里,等到统一处理?最后一起上传到区块链?
目前来看是这样的。
6.3 超过Twait的都丢掉了,这个不算是故障吗?(上一篇文章中,超时的怎么办了?是假设都成功上传了吗?)
作者未解释这中情况。上一篇文章未考虑“迟到”的问题。
这篇文章相当于把“迟到”问题做了一个处理,即丢掉,不予处理,从而不让其影响全局模型的更新。