M: Model {
	shape: class
	- apply_model_update(StatisticsType)`根据给定的统计量计算模型更新,既可以构造一个新模型返回,也可以直接原地修改`: Tuple\[ModelType, Metrics\]
}

EM: EvaluatableModel {
	shape: class
	- evaluate(dataset \.\.\.)`根据给定的数据集计算评估指标,可以是来自设备的数据集也可以是一个集中式的数据集`: Metrics
}

M -> EM

SM: StatefulModel {
	shape: class
	- get_model_difference(): StatisticsType
	- set_parameters(): None
}

EM -> SM

StatefulModel:

一个有固定参数量的有状态模型的实现

在这个场景下的本地训练分为四步: