2025/10/3の研究ログ
TypeError: cannot unpack non-iterable NoneType objectを直す
loss, metrics = super().evaluate(server_round, parameters) # type: ignoreにて
おそらくmetricsがNone
最初から作り直そう
flowerのチュートリアルにPytorch Lightningがあった > これを参考にすればそのまま移植しても動くはず
設計書を作る
ディレクトリ構成
変更しない中身は書かない: コンテキスト節約のため
code: tree
flower
client
client_app.py
common < ほぼdcase
desed_task < 共通部品
PSDS_Eval < 念の為
local < この中にsed_trainer_pretrained.pyがある
confs < 設定ファイル
pretrained.yaml
data_loader.py < FL用にデータ分割 元コードと融合する方針が良い?
extract_embeddings.py < 埋め込み作成で使用
train_pretrained.py < これどうする?
server
strategy
fed_ave.py
server_app.py
train_pretrained.pyをどう実現するか
prepare_run()とsingle_run()はセット
元コードはある指標を監視して,良い結果が出るたびに何らかの方法で重みなど保存?
評価時に最良のモデルを呼び出す
訓練はtrainer.fit(),評価はtrainer.test()
MeanTeacherはローカルで実行
MeanTeacherの理解が不足している
Studentの移動平均がTeacherモデルだが,あくまでStudentの学習を安定させるために参照するだけ?
Teacherモデルこそ大事なのかと思ったが,そうではないのかな?
一旦Studentモデルを集約する
以下の理由でTeacherは集約しない
Studentの各段階で学習した重要な特徴を薄める可能性がある
Studentより古い
clientはローカルのvalidation_setで評価
serverは全データではなく,分割されて残ったデータを使用?
pl-flowerの実装を見る
client_app: from flwr.clientapp import ClientApp
デコレータ下でFL用処理(ノード番号や分割したデータの取得,送信?)をしつつ,trainer.fit()とtrainer.test()をtrainとevaluateで行っている
一方,友人の実装では,継承したカスタムappをclient_fnとして渡す
server_app
同様だが,評価をfed_avgに一任していそう
どのようにモデルを評価している? > FedAVG内部の標準メソッド + dataloaderで分割
評価について,MeanTeacherのうち集約する片方を対象に取るような変更が必要?