AI・機械学習
中級
Flower(フェデレーテッド学習フレームワーク)(フラワーフェデレーテッドガクシュウフレームワーク)
Python製のオープンソースフェデレーテッド学習フレームワーク。LLMのLoRAアダプタ集約からスマートフォン分散学習まで対応し、2025年時点で最も広く使われるフェデレーテッドLLM実装基盤。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
federated-learning
llm
framework
python
open-source
Flowerは「フェデレーテッド学習をシンプルに」というビジョンのもと、2020年にCambridge大学グループが公開したPython製フレームワーク。2025年時点でGitHub Stars 5,000+、商用採用事例50社以上を持ち、フェデレーテッドLLM実装のデファクトスタンダードとなっている。
アーキテクチャ概要
Flowerはサーバ・クライアント分離設計を採用する。
[FlowerServer]
└─ Strategy (FedAvg/FedProx/SCAFFOLD等)
└─ ServerApp: ラウンド管理・集約ロジック
[FlowerClient] × N
└─ NumPyClient / FlowerClient
└─ ローカルモデル (PyTorch/HF PEFT等)
└─ gRPC通信 → サーバへ重み差分送信
主要コンポーネント
| コンポーネント | 役割 | 設定例 |
|---|---|---|
| ServerApp | 集約・ラウンド管理 | flwr.server.ServerApp |
| ClientApp | ローカル学習・評価 | flwr.client.ClientApp |
| Strategy | 集約アルゴリズム | FedAvg(fraction_fit=0.1) |
| Simulation | 仮想クライアント実行 | flwr.simulation.run_superlink |
| SuperLink | 本番通信エンドポイント | TLS+認証対応 |
LLMとの統合方法
Hugging Face PEFT + Flowerの典型構成
# クライアント側 (簡略)
from flwr.client import NumPyClient
from peft import get_peft_model, LoraConfig
class LLMClient(NumPyClient):
def __init__(self, model, train_data):
self.model = get_peft_model(model, LoraConfig(r=8, ...))
self.train_data = train_data
def fit(self, parameters, config):
# LoRAパラメータをFlower形式で受け取り
set_params(self.model, parameters)
# ローカル学習
train(self.model, self.train_data, epochs=1)
return get_params(self.model), len(self.train_data), {}
Flower Simulation(仮想フェデレーテッド環境)
実際のネットワークなしで100+クライアントを単一マシンでシミュレート可能。
- Ray バックエンド: マルチプロセス並列でクライアントを仮想化
- GPU共有: 複数仮想クライアントが1台のGPUをシェア
- 速度: 100クライアント×Llama 3 8B LoRAを4枚A100で1ラウンド約20分
バージョン別機能追加履歴
| バージョン | リリース | 主要追加機能 |
|---|---|---|
| 1.0 (2022) | 2022年6月 | 基本FedAvg・シミュレーション |
| 1.5 (2023) | 2023年9月 | SuperLink本番通信・TLS認証 |
| 1.8 (2024) | 2024年3月 | LLM PEFTサンプル・FlexLoRA |
| 1.10 (2024) | 2024年9月 | 非同期集約・グローバルDP |
| 1.12 (2025) | 2025年2月 | Llama 3公式チュートリアル・FedLoRA改善 |
Flowerの競合比較
| フレームワーク | Star数 | LLM対応 | 本番実績 | 学習コスト |
|---|---|---|---|---|
| Flower | 5.2k | 高 | 高 | 低 |
| FedML | 3.4k | 高 | 中 | 中 |
| PySyft | 9.1k | 中 | 中 | 高 |
| OpenFL | 0.8k | 中 | 低 | 高 |
| FATE | 5.7k | 低 | 高(中国) | 高 |
よくある質問(FAQ)
Q1: Flowerはオンプレ環境でも使えるか? A: SuperLinkを自社サーバに立てることでクラウド不要のオンプレ構成が可能。Docker Composeで5分でデプロイできる公式テンプレートが提供されている。
Q2: FlowerはDifferential Privacyを内蔵しているか? A: Flower自体はDPを内蔵しないが、PythonのOpacusライブラリと組み合わせることでDP-SGDを適用できる。flwr-1.12からOpacus統合の公式サンプルが追加された。
Q3: 本番環境での認証・セキュリティは? A: SuperLinkはTLS相互認証(mTLS)をサポート。クライアント証明書ベースでなりすましを防止する。追加でgRPCインターセプタでカスタム認証も実装可能。
まとめ
- FlowerはフェデレーテッドLLMファインチューニングの最有力フレームワーク
- HF PEFTとの統合でLoRAアダプタ集約が容易
- Simulationモードで本番前の大規模検証が可能
- 2025年はLlama 3 + Flowerの組み合わせが事実上の標準スタック