11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Federated Learning Demo アプリを動かしてみよう

Last updated at Posted at 2021-01-06

はじめに

最近Fedarated Learningという考え方が提唱されています。学習そのものは、分散したノードで行い、学習済みモデルは、すべての学習データを反映した全体的なものにするという考え方です。
IBMでは、その考え方に基づいたAPIをライブラリとして実装し、すでにデモプログラムが動くようになっています。
これからご紹介するのは、そのデモプログラムで、コメントを日本語化したものです。
Fedarated Learningがどんなものか、試してみたい方は、是非、このコードを実行してみて下さい。

Federated Learningとは

Federated Learningは、当事者がデータを共有せずにデータを活用したい場合に適しています。
例えば、航空会社連合が、世界的なパンデミックが航空会社の遅延にどのように影響するかをモデル化したいとします。
フェデレーションに参加している各パーティは、データを移動したり共有したりすることなく、データを使用して共通のモデルを学習することができます。
結果として得られたモデルは、スコアリングデータに対してより正確な予測を提供するために展開することができ、連合の各メンバーにより良い結果と洞察力を与えることができます。

この図は、連合した当事者が、データを互いに共有することなく、共通のモデルを訓練するためにデータを送信する方法を示しています。アグリゲータはモデルの更新を管理します。

スクリーンショット 2021-01-06 16.22.48.png

中央のアグリゲーターは、各パーティに対して、問い合わせ(Q)を行います。各パーティは、自分のローカルのデータで作成したモデルに基づき、問い合わせに対する回答を返します。(R1からRNまで)
アグリゲーターは、問い合わせ結果を総合して、中央のモデルを学習させます。

より詳細な説明については、以下を参照して下さい。

動作確認済み環境

動作は、Watson Studio上のJupyter Notebookで確認しています。
IBM Cloud上で必要なサービスはCloud Object Storage、Watson Studio、Watson Machine Learningのみです。すべて、クレジットカード登録なしのライトアカウントで利用できますので、このデモも、ライトアカウントで試してみることが可能です。

サンプルnotebook

サンプルNotebookは以下の2つになります。

Part1
Part2

概要紹介

NotebookはPart1とPart2に分かれています。
Part1では、Federation Learningのための枠組みを作ります。
Part2では、アグリゲーターが各パーティと通信して、実際の学習を行います。
Federated Learning実施時には、IBM社が提供しているライブラリである、ibmflが用いられています。

実習ステップ1

それでは、実習をはじめましょう。

Notebookの読み込み

最初にWatson Studioのプロジェクト管理画面から「Projectに追加」->「Notebook」を選択します。
Notebook名入力画面になったら、下のように各項目を入力します。

① 「URLから」タブを選択
② 名前に「FL Part1」を入力
③ URL欄に以下のURLをコピペして入力
https://raw.githubusercontent.com/makaishi2/sample-data/master/notebooks/Federeted%20Learning%20%E3%83%87%E3%83%A2%20Part1.ipynb
④ 「作成」ボタンをクリック

スクリーンショット 2021-01-06 12.54.38.png

正しく読み込めると下のような画面になります。
スクリーンショット 2021-01-06 12.55.42.png

共通設定

IAM_APIKEYCLOUD_USERIDPROJECT_IDの3つのパラメータを設定します。

スクリーンショット 2021-01-06 15.22.10.png

IAM_APIKEY

IAM_APIKEYは、下のリンクから「IBM Cloud APIキーの作成」ボタンをクリックして作成します。

CLOUD_USERID

CLOUD_USERIDは、下のリンクから、アカウントオーナーのリンクをクリックします。

下の管理画面で、右上の「詳細」ボタンをクリックします。

スクリーンショット 2021-01-06 13.00.50.png

すると、下のようにIAM IDが表示されるので、この値を用います。

スクリーンショット 2021-01-06 13.00.57.png

PROJECT_ID

NotebookのURLをテキストエディタに貼り付けます。このとき、赤枠で囲んだ部分がProject_IDになるので、このテキストをコピペします。

スクリーンショット 2021-01-06 15.06.41.png

WML設定

Watson Machine Learningのサイトをダラスにしている場合、修正は不要です。

スクリーンショット 2021-01-06 15.22.16.png

COS設定

COSに関しては、資格情報取得の前に、COSにバケットを作るところから始める必要があります。
目的は違うのですが、ちょうど下記手順の1章がそのまま該当するので、この手順に従って下さい。

これで、Notebook設定に必要な「バケット名(COS_BUCKET)」「資格情報(COS_ACCESS_KEY_IDとCOS_SECRET_ACCESS_KEY)」「エンドポイントURL(COS_ENDPOINT_URL)」のすべての情報が入手できるはずです。

スクリーンショット 2021-01-06 15.22.23.png

Notebookの実行

これでNotebook実行に際して必要な事前準備はすべて完了です。
あとは、Notebook内の指示に従って、上から順にセルを実行して下さい。

一番下の方に「4.1 トレーニングジョブのステータス取得」というセルがあります。

スクリーンショット 2021-01-06 15.27.11.png

このセルは1分おきに繰り返し実行して、 最後、Statusがaccepting_partiesとなるのを待ちます。

スクリーンショット 2021-01-06 15.25.09.png

このセルが実行エラーになった場合は、上の設定のどこかに誤りがありますので、記事を参考に一つ一つ見直すようにして下さい。
COSのエンドポイントURLが間違えやすい箇所のようです。(回復力によってURLが別になる)

ステータスが正しく変わったら、下記の一番下のセルを実行し、出力結果をコピーしてテキストエディタなどに保存します。
この結果は、Part 2でそのまま利用することになります。

スクリーンショット 2021-01-06 15.31.38.png

実習ステップ2

Notebookの読み込み

Notebook読み込み手順はPart1とほぼ同じです。
Notebook名入力画面になったら、下のように各項目を入力します。

① 「URLから」タブを選択
② 名前に「FL Part2」を入力
③ URL欄に以下のURLをコピペして入力
https://raw.githubusercontent.com/makaishi2/sample-data/master/notebooks/Federeted%20Learning%20%E3%83%87%E3%83%A2%20Part2.ipynb
④ 「作成」ボタンをクリック

正しく読み込まれると、下のような画面になります。

スクリーンショット 2021-01-06 16.09.47.png

セルの設定

Notebook上部の下記のセルを、Part1で取得した情報にまるごと置き換えます。

スクリーンショット 2021-01-06 16.11.05.png

Part2は、これで設定作業は終わりです。

Notebookの実行

あとは、上から順にNotebookを実行して下さい。
うまくいくと、次のような結果が得られるはずです。

5.1の実行結果

スクリーンショット 2021-01-06 16.06.31.png

5.2の実行結果

スクリーンショット 2021-01-06 16.06.42.png

(途中略)

一番下の結果例

スクリーンショット 2021-01-06 16.06.58.png

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?