联合学习的其他压缩方法

时间:2020-08-17 18:51:15

标签: tensorflow-federated

我注意到TFF框架中已经实现了Gradient Quantization压缩方法。通过删除全局模型的某些部分来选择子模型的非传统压缩方法呢?我在论文“通过减少客户端资源需求来扩展联合学习的范围”(https://arxiv.org/abs/1812.07210中遇到了“联合辍学”压缩方法。 Tensorflow Federated中已经支持Federated Dropout方法的任何想法。如果不是,则有什么见解如何实现(该方法的主要思想是在全局模型中删除固定百分比的激活和过滤器,以交换和训练较小的子模型)?

1 个答案:

答案 0 :(得分:2)

当前,TFF代码库中没有该想法的实现。

但这是您如何做的概述,我建议从examples/simple_fedavg开始

  1. 修改顶层build_federated_averaging_process以接受两个model_fn-一个server_model_fn用于全局模型,一个client_model_fn用于实际训练的较小子模型结构客户。
  2. 修改build_server_broadcast_message,仅从server_state.model_weights中提取相关子模型。这将是从服务器模型到客户端模型的映射。
  3. 实际上client_update不需要更改(我不确定100%肯定),只要client_update_fn仅提供client_model_fn
  4. 修改server_update-weights_delta是客户端子模型的更新,因此您需要将其映射回更大的全局模型。

通常,步骤2和4.非常棘手,因为它们不仅取决于模型中的哪些层,而且还取决于它们的连接方式。因此,很难创建一个易于使用的通用解决方案,但可以为事先知道的特定模型结构编写这些解决方案。