联邦学习的其他压缩方法
Other compression methods for Federated Learning
我注意到TFF框架已经实现了梯度量化压缩方法。我们 select 通过删除全局模型的某些部分来创建子模型的非传统压缩方法怎么样?我在论文“通过减少客户端资源需求扩大联邦学习的范围”(https://arxiv.org/abs/1812.07210) 中遇到了“Federated Dropout”压缩方法。想知道 Federated Dropout 方法是否已在 Tensorflow Federated 中得到支持。如果没有,请问如何实现它(该方法的主要思想是在全局模型中删除固定百分比的激活和过滤器以交换和训练较小的子模型)?
目前,TFF 代码库中没有可用的此想法的实现。
但是这里有一个大纲,你可以怎么做,我建议从 examples/simple_fedavg
开始
- 修改 top-level
build_federated_averaging_process
以接受两个 model_fn
s -- 一个 server_model_fn
用于全局模型,一个 client_model_fn
用于较小的 sub-model 实际针对客户培训的结构。
- 修改
build_server_broadcast_message
以仅从 server_state.model_weights
中提取相关的 sub-model。这将是从服务器模型到客户端模型的映射。
-
client_update
may actually not need to be changed (I am not 100% sure), as long as only the client_model_fn
is provided from client_update_fn
.
- 修改
server_update
- weights_delta
将更新到客户端 sub-model,因此您需要将其映射回更大的全局模型。
一般来说,步骤 2. 和 4. 比较棘手,因为它们不仅取决于模型中有哪些层,还取决于它们的连接方式。因此,很难创建一个易于使用的通用解决方案,但是为您事先知道的特定模型结构编写这些应该没问题。
我注意到TFF框架已经实现了梯度量化压缩方法。我们 select 通过删除全局模型的某些部分来创建子模型的非传统压缩方法怎么样?我在论文“通过减少客户端资源需求扩大联邦学习的范围”(https://arxiv.org/abs/1812.07210) 中遇到了“Federated Dropout”压缩方法。想知道 Federated Dropout 方法是否已在 Tensorflow Federated 中得到支持。如果没有,请问如何实现它(该方法的主要思想是在全局模型中删除固定百分比的激活和过滤器以交换和训练较小的子模型)?
目前,TFF 代码库中没有可用的此想法的实现。
但是这里有一个大纲,你可以怎么做,我建议从 examples/simple_fedavg
- 修改 top-level
build_federated_averaging_process
以接受两个model_fn
s -- 一个server_model_fn
用于全局模型,一个client_model_fn
用于较小的 sub-model 实际针对客户培训的结构。 - 修改
build_server_broadcast_message
以仅从server_state.model_weights
中提取相关的 sub-model。这将是从服务器模型到客户端模型的映射。 -
client_update
may actually not need to be changed (I am not 100% sure), as long as only theclient_model_fn
is provided fromclient_update_fn
. - 修改
server_update
-weights_delta
将更新到客户端 sub-model,因此您需要将其映射回更大的全局模型。
一般来说,步骤 2. 和 4. 比较棘手,因为它们不仅取决于模型中有哪些层,还取决于它们的连接方式。因此,很难创建一个易于使用的通用解决方案,但是为您事先知道的特定模型结构编写这些应该没问题。