Microsoft Researchは最近、連合学習ユーティリティと実験用ツール(FLUTE)をリリースした。これは連合学習のMLアルゴリズム開発を促進するための新しいシミュレーションフレームワークである。エンジニアと研究者が開発・デプロイの前に新しいアルゴリズムを設計・シミュレーションできるようにすることで、連合学習アルゴリズムの設計と実験の新しい方向性を切り開く。
FLUTEは、大規模なオフライン連合学習アルゴリズムを実行するためのシミュレーションフレームワークである。連合学習の主な目標は、一か所でデータを共有する必要なく、大量のデータに対して複雑な機械学習モデルをトレーニングすることである。このアプローチでは、初期のグローバルモデルが、限られた計算能力しか持たない各デバイスにアップロードされる。各デバイスのデータは、モデルに小さな更新を加えるために使われる。この小さな変更は、集約するために中央システムに転送される。この手順は、グローバルモデルに大きな変更がなくなるまで繰り返される。
処理の分散などの、柔軟性がもたらされる一方で、このフレームワークには課題がある。それは、各エンドノードでのトレーニングとプライバシーのために、移動する多くのデータチャンクをどのように管理するかということである。FLUTEでは、モデルを本番環境に実装して起動する前に、研究者と開発者がデータプライバシー、通信戦略、スケーラビリティなどの前述の制約をテスト・実験できるようにすることで、これらの問題に対処しようとしている。FLUTEはAzure MLと適切に統合されており、PythonとPyTorchをベースとしている。
次の図は、FLUTEの高レベルのアーキテクチャを示している。最初のステップでは、サーバはグローバルモデルをクライアントに送信する。データを使用するクライアントは、ローカルで生成された疑似勾配をサーバに送り返し、サーバはそれを集約する。新しいグローバルモデルはクライアント向けに更新され、最適なモデルに収束するまでこの手順が繰り返される。このフレームワークは多様な連合学習構成をサポートする。そこには、DGAやFedAvgなどの標準化された実装も含まれる。
画像ソース: Microsoft Research Blog
FLUTEはGitHubで一般向けに利用可能となっている。そこには実験を開始するための基本的なツールが付属する。コミュニティは、FLUTEアーキテクチャのビデオ、その他のドキュメント、公開されているFLUTE文書を参照できる。ブログ投稿に基づいて、Microsoft Researchは将来のリリースに向けて、最適化アルゴリズムの強化、他の通信プロトコルのサポート、Azure MLとより簡単にリンクする方法に取り組んでいる。
他にも、分散トレーニングや新しいMLモデルのデプロイのための連合学習フレームワークとして、Tensorflow連合学習やIBM連合学習がある。