連合学習のための他の圧縮方法
Aug 18 2020
グラジエント量子化圧縮法がすでにTFFフレームワークに実装されていることに気づきました。グローバルモデルの一部を削除してサブモデルを選択する、従来とは異なる圧縮方法はどうでしょうか。「クライアントのリソース要件を減らすことでフェデレーション学習の範囲を拡大する」という論文で、「フェデレーションドロップアウト」圧縮方法に出くわしました(https://arxiv.org/abs/1812.07210)。FederatedDropoutメソッドがTensorflowFederatedですでにサポートされているかどうかのアイデア。そうでない場合、それを実装する方法についての洞察はありますか(この方法の主なアイデアは、グローバルモデルのアクティブ化とフィルターの固定パーセンテージを削除して、より小さなサブモデルを交換およびトレーニングすることです)?
回答
2 JakubKonecny Aug 18 2020 at 19:34
現在、TFFコードベースで利用可能なこのアイデアの実装はありません。
しかし、ここにあなたがそれを行う方法の概要があります、私はから始めることをお勧めします examples/simple_fedavg
- 修正トップレベルbuild_federated_averaging_process2受け入れる
model_fn
1 - Sをserver_model_fn
グローバルモデルのため、1client_model_fn
、実際にクライアントに訓練された小さなサブモデル構造のために。 - build_server_broadcast_messageから関連するサブモデルのみを抽出するように変更し
server_state.model_weights
ます。これは、サーバーモデルからクライアントモデルへのマッピングになります。 - client_update実際には、限りだけ(私は確信して100%ではないよ)に変更する必要はないかもしれない
client_model_fn
から提供されますclient_update_fn。 - 変更server_update-
weights_delta
クライアントサブモデルの更新になるため、より大きなグローバルモデルにマップし直す必要があります。
一般に、手順2と4は、モデル内のレイヤーだけでなく、それらの接続方法にも依存するため、注意が必要です。したがって、使いやすい一般的なソリューションを作成するのは難しいでしょうが、事前に知っている特定のモデル構造に対してこれらを記述しても問題ありません。