見出し画像

【ふぇろっそ】連合学習を試してみよう

こんにちは。Rosso AI部、連合学習担当(?)の中の人です。
連載も第3回目となり、そろそろ本気でネタどうしようとなってきたわけですが、そろそろ連合学習を実際に動かしてみたい!という方のために、サクッと連合学習を試せるフレームワークを紹介しようと思います。
(なんかどこかで聞き覚えのあるフレーズのような???)

その名もFroseAI。弊社オリジナルのフレームワークです。
(夏にインターンのために私が作ったとかそういう話はとりあえず略)


FroseAiのインストール

FroseAi は現在まだ PyPi へパッケージを公開していません。(もう少しお待ちください)
現在は下記いずれかの方法でインストールが可能です。

  1. GitHub から直接 pip install する

  2. git clone して setup.py からインストール

GitHub から直接 pip install

setup.py を用意していますので、下記コマンドで pip install が可能です。

pip install git+https://github.com/rosso-ai-dataanalytics/FroseAi.git

ただし、直接 pip install してしまうと、以下で紹介する config ファイルが付いてきません。そのため config ファイルは自分の手で書く必要があります。

git clone して setup.py からインストール

GitHub から git clone する場合は、下記コマンドでインストールしてください。

git clone git@github.com:rosso-ai-dataanalytics/FroseAi.git
python setup.py install

setup.py から requirements.txt を読み込むようにしていますので、上のコマンドで関連パッケージのインストールまで行われます。

えっと、pyproject.toml ?? 今は保留です!(逃)

FroseAi を実行してみる

さて、早速動かしてみたいところですが、その前に config ファイルを用意します。こちらのファイルを参考に config ファイルを書いてみます。

Configファイルを書いてみる

common:
  job_name: "fedavg_cifar10"
  server_url: "localhost:9200"
  random_seed: 0
  client_num: 4
  log_output_path: "./log"
  device: "cuda"

model: 
  model: "resnet18"

data:
  dataset: "CIFAR10"
  data_cache_dir: "./data"
  partition_method: "hetero"
  partition_alpha: 1.0

train:
  round: 30
  batch_size: 100
  inner_loop: 100
  learning_rate: 0.1
  weight_decay: 0.01

はい、これだけです。これを froseai_conf_cifar10.yml として保存します。
(細かい設定については次回以降紹介していきます)

device には "cuda" を選択しています。GPU がない PC で動かす場合は、ここを "cpu" へ変更してください。ただし、本設定は 4クライアントを 4プロセス同時で動かすため、よほど高スペックなCPUでないと厳しいかもしれません。

実行してみよう

FroseAi はインストールすると、 froserun コマンドが実行できます。
これでサクッと動きます!

froserun froseai_conf_cifar10.yml

動きましたでしょうか?(いろいろワーニングは出てきますけど!!)

メトリクスのログは ./log ディレクトリ下に metrics.csv が出力されます。見つからない場合は何とか探してみてください。
メトリクスをプロットすると、こんな感じになるかと思います。

Accuracy : CIFAR10 Resnet18 FedAVG の結果

ん? ResNet18 で CIFAR10 の結果なのに、結果が低すぎないかと!?
実はこの設定、連合学習のキツキツの設定だったりします。上の config ファイルをある部分を1行変えると、劇的に結果が変わります!
さて、それはどこでしょう???

と、この話の続きは次回とします。
次回は同じお題を用いて連合学習の難しさについて、紹介してみます。
お楽しみに!!


最後に、株式会社Rosso AI部では、連合学習の相談も承っております。
こちらから、ご一報いただけると幸いです。