AI共同学習、2手法を比較
Step by Step Guide to Build and Compare FedAvg and FedProx Federated Learning on Non-IID CIFAR-10 with NVIDIA FLARE

NVIDIAのAIツールで、AIがデータを持ち寄らず学ぶ共同学習の2つの方法を、偏ったデータで比較。実際の利用に近いAI学習の課題解決に貢献する。
このチュートリアルでは、NVIDIA FLARE を用いて高度なfederated learningの実験を構築します。クライアントデータがDirichlet分布を使用して分割され、federatedサイト間で現実的なラベルの不均衡をシミュレートするnon-IID CIFAR-10の設定で、FedAvgとFedProxを比較します。NVFlare Job APIを使用してfederatedジョブを定義および起動し、Client APIはシミュレートされたクライアントとサーバー間のローカルトレーニング、モデル交換、および通信を処理します。最後に、両方のアルゴリズムを同じ分割されたデータセットで実行し、通信ラウンド全体でグローバルモデルの精度がどのように進化するかを可視化します。 別のブラウザを使用 !pip install -q "nvflare>=2.5" torch torchvision matplotlib import os, glob, shutil, sys import numpy as np import torch, torchvision import torchvision.transforms as T import matplotlib.pyplot as plt NUM_SITES = 3 NUM_ROUNDS = 5 LOCAL_EPOCHS = 1 ALPHA = 0.3 MAX_SAMPLES = 4000 BATCH_SIZE = 64 LR = 0.01 DATA_ROOT = "/tmp/nvflare/data" RESULTS_DIR = "/tmp/nvflare/results" os.makedirs(DATA_ROOT, exist_ok=True) os.makedirs(RESULTS_DIR, exist_ok=True) torchvision.datasets.CIFAR10(root=DATA_ROOT, train=True, download=True) torchvision.datasets.CIFAR10(root=DATA_ROOT, train=False, download=True) 必要なライブラリをインストールし、federated learning実験に必要な主要パッケージをインポートします。クライアント数、トレーニングラウンド数、バッチサイズ、学習率、non-IID Dirichlet alpha値を含む実験設定を定義します。また、必要なデータフォルダと結果フォルダを作成し、CIFAR-10を一度ダウンロードして、すべてのシミュレートされたクライアントが同じデータセットを安全に再利用できるようにします。 別のブラウザを使用 CLIENT_SCRIPT = r''' import argparse, os, csv import numpy as np import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import DataLoader, Subset import torchvision import torchvision.transforms as T import nvflare.client as flare class Net(nn.Module): """Small CNN for CIFAR-10 (no b