联邦学习#
客户端基类#
- class monai.fl.client.BaseClient[source]#
提供一个抽象基类,允许客户端返回数据的汇总统计信息。
要定义新的统计脚本,请从此类继承并实现以下抽象方法
- self.get_data_stats()
initialize()、abort() 和 finalize() – 继承自 ClientAlgoStats;可以可选地实现以帮助管理类对象的生命周期。
- class monai.fl.client.ClientAlgo[source]#
提供一个抽象基类,用于定义可在任何平台上运行的 algo。要定义新的 algo 脚本,请从此类继承并实现以下抽象方法
self.train()
self.get_weights()
self.evaluate()
self.get_data_stats() (可选,继承自 ClientAlgoStats)
initialize()、abort() 和 finalize() - 继承自 ClientAlgoStats - 可以选择实现以帮助管理类对象的生命周期。
- evaluate(data, extra=None)[source]#
获取测试数据的评估指标。
- 参数:
data – 包含用于评估的网络权重的 ExchangeObject。
extra – 包含 FL 系统可提供的附加信息的字典。
- 返回:
包含评估指标的 ExchangeObject。
- 返回类型:
metrics
- class monai.fl.client.ClientAlgoStats[source]#
- get_data_stats(extra=None)[source]#
获取本地数据的汇总统计信息。
- 参数:
extra – 包含 FL 系统可提供的附加信息的字典。例如,请求的统计信息。
- 返回:
汇总统计信息。
- 返回类型:
ExchangeObject
Extra dict 示例
requested_stats = { FlStatistics.STATISTICS: metrics, FlStatistics.NUM_OF_BINS: num_of_bins, FlStatistics.BIN_RANGES: bin_ranges }
返回的 ExchangeObject 示例
ExchangeObject( statistics = {...} )
MONAI Bundle 参考实现#
- class monai.fl.client.MonaiAlgo(bundle_root, local_epochs=1, send_weight_diff=True, config_train_filename='configs/train.json', train_kwargs=None, config_evaluate_filename='default', eval_kwargs=None, config_filters_filename=None, disable_ckpt_loading=True, best_model_filepath='models/model.pt', final_model_filepath='models/model_final.pt', save_dict_key='model', data_stats_transform_list=None, eval_workflow_name=None, train_workflow=None, eval_workflow=None)[source]#
这是
ClientAlgo
的实现,允许使用 MONAI bundle 配置进行联邦学习。- 参数:
bundle_root – bundle 的目录路径。
local_epochs – 在每轮本地训练中执行的本地 epoch 数量;默认为 1。
send_weight_diff – 是否发送权重差异而不是完整权重;默认为 True。
config_train_filename – 相对于 bundle_root 的 bundle 训练配置文件路径。可以是一个文件列表。默认为 “configs/train.json”。仅当 train_workflow 为 None 时有用。
train_kwargs – 训练的 ConfigWorkflow 的其他参数,除了 config_file、meta_file、logging_file、workflow_type。仅当 train_workflow 为 None 时有用。
config_evaluate_filename – 相对于 bundle_root 的 bundle 评估配置文件路径。可以是一个文件列表。如果为 “default”,将使用 [“configs/train.json”, “configs/evaluate.json”]。此参数仅当 eval_workflow 为 None 时有用。
eval_kwargs – 评估的 ConfigWorkflow 的其他参数,除了 config_file、meta_file、logging_file、workflow_type。仅当 eval_workflow 为 None 时有用。
config_filters_filename – 过滤器配置文件。可以是一个文件列表;默认为 None。
disable_ckpt_loading – 如果在训练/评估配置中定义了 CheckpointLoader,则不使用任何 CheckpointLoader;默认为 True。
best_model_filepath – 最佳模型检查点的位置;默认为相对于 bundle_root 的 “models/model.pt”。
final_model_filepath – 最终模型检查点的位置;默认为相对于 bundle_root 的 “models/model_final.pt”。
save_dict_key – 如果模型检查点包含多个状态字典,则 save_dict_key 定义的那个将由 get_weights 返回;默认为 “model”。如果应返回所有状态字典,请将 save_dict_key 设置为 None。
data_stats_transform_list – 用于数据统计结果的变换列表。
eval_workflow_name – 对应于 “config_evaluate_filename” 的工作流名称,默认为 “train”,因为默认的 “config_evaluate_filename” 会覆盖训练工作流配置。此参数仅当 eval_workflow 为 None 时有用。
train_workflow – 用于执行训练的 bundle 工作流,如果为 None,将基于 config_train_filename 和 train_kwargs 内部创建一个 ConfigWorkflow。
eval_workflow – 用于执行评估的 bundle 工作流,如果为 None,将基于 config_evaluate_filename、eval_kwargs、eval_workflow_name 内部创建一个 ConfigWorkflow。
- evaluate(data, extra=None)[source]#
在客户端的本地数据上进行评估。
- 参数:
data – 包含当前全局模型权重的 ExchangeObject。
extra – 包含 FL 系统可提供的附加信息的字典。
- 返回:
包含评估指标的 ExchangeObject。
- 返回类型:
return_metrics
- get_weights(extra=None)[source]#
返回模型的当前权重。
- 参数:
extra – 包含 FL 系统可提供的附加信息的字典。
- 返回:
- 包含当前权重的 ExchangeObject(默认)
或从磁盘加载请求的模型类型(ModelType.BEST_MODEL 或 ModelType.FINAL_MODEL)。
- 返回类型:
return_weights
- class monai.fl.client.MonaiAlgoStats(bundle_root, config_train_filename='configs/train.json', config_filters_filename=None, data_stats_transform_list=None, histogram_only=False, workflow=None)[source]#
这是
ClientAlgoStats
的实现,允许使用 MONAI bundle 配置进行联邦学习。- 参数:
bundle_root – bundle 的目录路径。
config_train_filename – 相对于 bundle_root 的 bundle 训练配置文件路径。可以是一个文件列表;默认为 “configs/train.json”。仅当 workflow 为 None 时有用。
config_filters_filename – 过滤器配置文件。可以是一个文件列表;默认为 None。
data_stats_transform_list – 用于数据统计结果的变换列表。
histogram_only – 是否仅计算直方图。默认为 False。
workflow – 要执行的 bundle 工作流,通常是训练、评估或推理。如果为 None,将基于 config_train_filename 内部创建一个 ConfigWorkflow。