1. 程式人生 > 實用技巧 >【論文筆記】《FLchain: Federated Learning via MEC-enabled Blockchain Network》精讀筆記

【論文筆記】《FLchain: Federated Learning via MEC-enabled Blockchain Network》精讀筆記

Information of the paper:

DOI:10.23919/APNOMS.2019.8892848

目錄

1. Abstract

2. Preliminaries and Definitions

2.1 Channel

2.2 Global Model State Trie

3. System Model

4.The Operation of FLchain

4.1FLchain過程

4.2 Transaction Pool

4.3 Global Model Update

4.4 Consensus Protocol

4.5 Analysis

5.Evaluation

6.思考


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】初始化。

t表示全域性迭代的次數;w_{j}表示channel j的全域性模型權重;w_{i,j}表示channel j 中裝置i的本地模型權重;D_{j}表示channel j 上的裝置數量。

這一篇的實驗部分和《Blockchained On-Device Federated Learning》的方法基本相同,都是解決線性迴歸問題,Loss Function也基本一樣,本篇就不再贅述。

【L3~L7】為每個裝置分配channel。

當一個裝置想要加入一個channel時,就執行“channel inquiry”操作,然後, 區塊鏈網路會向裝置傳送一個channel list。

裝置選定一個channel,就標記c_{i}=j。然後,去選定的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的T_{wait,j}(每個全域性模型迭代記憶體池中交易的累計時間),達到T_{wait,j}後,邊緣節點會轉發給區塊鏈。區塊鏈網路的每個節點都有特定自己的channel-specific mempool。有些交易會由於網路延遲等原因而“遲到”,這些“遲到”的交易要被丟棄,而不能用於下一次全域性模型更新的計算。

4.3 Global Model Update

當到達T_{wait,j}後,channel j中的邊緣節點會生成一個塊,塊中儲存該channel的mempool中的第t輪迭代的資訊。全域性模型狀態trie會儲存全域性模型引數w_{j}(t)。全域性模型狀態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是否已達期望的結果。

迭代結束的條件:\left \|w _{j}\left ( T \right )-w_{j}\left ( T-1 \right ) \right \|_{2}\leq\varepsilon _{threshold,j},其中\varepsilon _{threshold,j}是預定義的大於零的常數。

5.Evaluation

本篇文章,主要的優點:

  • FLchain為學習每個全域性模型提供一個單獨的channel,用於儲存屬於該channel的本地模型更新的共識和分類帳本。
  • 全域性模型trie也是基於每個channel維護的,它可以安全地將全域性模型權重儲存在Merkle Patricia Tree中,並且它還可以進行溯源。
  • 在FLchain中,全域性模型更新有區塊鏈網路進行計算、驗證、儲存,代替了中心伺服器,它比傳統地FL更健壯。

6.思考

6.1 channel的實質作用是什麼?

目前理解:通過channel把裝置進行“分塊”,裝置上傳local model時,先暫存到channel內邊緣節點的mempool,等達到T_{wait,j}後,邊緣節點將mempool中的內容轉發到區塊鏈。此外,裝置下載global model時,通過本channel的邊緣節點從區塊鏈下載。

6.2 交易池,僅僅是為了暫存裝置上傳的本地模型?所有本channel裝置上傳的都存在那裡,等到統一處理?最後一起上傳到區塊鏈?

目前來看是這樣的。

6.3 超過Twait的都丟掉了,這個不算是故障嗎?(上一篇文章中,超時的怎麼辦了?是假設都成功上傳了嗎?)

作者未解釋這中情況。上一篇文章未考慮“遲到”的問題。

這篇文章相當於把“遲到”問題做了一個處理,即丟掉,不予處理,從而不讓其影響全域性模型的更新。