【論文筆記】《FLchain: Federated Learning via MEC-enabled Blockchain Network》精讀筆記
Information of the paper:
目錄
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的都丟掉了,這個不算是故障嗎?(上一篇文章中,超時的怎麼辦了?是假設都成功上傳了嗎?)
作者未解釋這中情況。上一篇文章未考慮“遲到”的問題。
這篇文章相當於把“遲到”問題做了一個處理,即丟掉,不予處理,從而不讓其影響全域性模型的更新。