連合学習のための他の圧縮方法

Aug 18 2020

グラジエント量子化圧縮法がすでにTFFフレームワークに実装されていることに気づきました。グローバルモデルの一部を削除してサブモデルを選択する、従来とは異なる圧縮方法はどうでしょうか。「クライアントのリソース要件を減らすことでフェデレーション学習の範囲を拡大する」という論文で、「フェデレーションドロップアウト」圧縮方法に出くわしました(https://arxiv.org/abs/1812.07210)。FederatedDropoutメソッドがTensorflowFederatedですでにサポートされているかどうかのアイデア。そうでない場合、それを実装する方法についての洞察はありますか(この方法の主なアイデアは、グローバルモデルのアクティブ化とフィルターの固定パーセンテージを削除して、より小さなサブモデルを交換およびトレーニングすることです)?

回答

2 JakubKonecny Aug 18 2020 at 19:34

現在、TFFコードベースで利用可能なこのアイデアの実装はありません。

しかし、ここにあなたがそれを行う方法の概要があります、私はから始めることをお勧めします examples/simple_fedavg

  1. 修正トップレベルbuild_federated_averaging_process2受け入れるmodel_fn1 - Sをserver_model_fnグローバルモデルのため、1 client_model_fn、実際にクライアントに訓練された小さなサブモデル構造のために。
  2. build_server_broadcast_messageから関連するサブモデルのみを抽出するように変更しserver_state.model_weightsます。これは、サーバーモデルからクライアントモデルへのマッピングになります。
  3. client_update実際には、限りだけ(私は確信して100%ではないよ)に変更する必要はないかもしれないclient_model_fnから提供されますclient_update_fn。
  4. 変更server_update-weights_deltaクライアントサブモデルの更新になるため、より大きなグローバルモデルにマップし直す必要があります。

一般に、手順2と4は、モデル内のレイヤーだけでなく、それらの接続方法にも依存するため、注意が必要です。したがって、使いやすい一般的なソリューションを作成するのは難しいでしょうが、事前に知っている特定のモデル構造に対してこれらを記述しても問題ありません。