HPE Swarm Learning とは

Posted on
この記事は、最終更新日から 2 年以上経過しています。 情報が古い可能性があります。

先日、日本ヒューレット・パッカード から HPE Swarm Learning というソフトウェアが発表されました。

この Swarm Learning は製品版とコミュニティ版があり、コミュニティ版は無料で使えるのですが、 使い方が、少々ややこしいので、私がやってみた、をご紹介したいと思います。

その前に、 Swarm Learning はどんなソフトウェアで、何が嬉しいのか、を簡単にご紹介します。

Swarm Learning とは

Swarm Learning は 連合学習 (Federated Learning) の一種です。

連合学習とは、地理的に離れた場所にあるデータを集めることなく、データのある各拠点で学習を行い、 その結果を、マージすることで、精度の向上を目指す学習法です。

連合学習は、プライバシーの観点からデータの移動が難しい場合や、 複数の事業者間で双方が所有するデータを合わせて学習する際に、利用することが検討されます。

一般的な連合学習では、学習を統括するリーダーが存在し、リーダーから配布されたモデルを使って、 エッジで学習を行い、学習結果をリーダーに返却します。 リーダーは返却された学習結果をマージして、モデルを更新します。 この処理を繰り返します。

モデルのサイズは、一般的にはデータのサイズより遥かに小さいため、データ転送サイズは小さく、 効率的な学習方法となります。

一方で以下のような懸念もあります。

このような懸念をなくし、プライバシーに配慮しつつ、分散されたデータでの学習を可能にしたのが Swarm Learning です。

Swarm Learning ではエッジ間を、ブロックチェーン を使ったP2Pで接続し、リーダーを持ちません。

学習結果のマージのたびに、一時的なリーダーが選出され、モデルのマージが行われます。 (そのため、あるエッジの学習結果が、1箇所に集まり続けることがありません。)

これにより、連合学習のメリットを享受しつつ、デメリットを排除することができました。

Swarm Learning のアーキテクチャ

Swarm Learning Architecture

画像はこちらより。 https://github.com/HewlettPackard/swarm-learning

Swarm Learning には以下のコンポーネントがあります。

Swarm Learning Architecture 2

Swarm Learning の通信

Swarm Learning は各コンポーネント間での通信に使用するポートがあります。 Swarm Learning を起動するシステムでは、これらのポートが開いている必要があります。

  1. 各SN間のP2P通信のためのポート。デフォルト設定では 30303 が使用されます。
  2. SNのAPIサーバーのポート。各Swarm Learningコンポーネントとの通信で使用します。デフォルト設定では 30304 が使用されます。
  3. 各SL間のP2P通信のためのポート。モデルの重みをSL間で共有する際に使用します。デフォルト設定では 30305 が使用されます。
  4. APLSのAPIサーバーのポート。各Swarm Learningコンポーネントがライセンスの確認のために使用します。デフォルト設定では5814 が使用されます。
  5. (オプション) SWCI がRESTベースのAPIサーバーを実行するために使用するポート。デフォルト設定では 30306 が使用されます。

Swarm Learning Component Interactions

次回へ

この記事では、 Swarm Learning の概要をご紹介しました。次回の記事では、Swarm Learning のインストール方法について ご紹介したいと思います。

その他の Swarm Learning の記事はこちらです。

参照