收集客户返回的权重而不聚合它们

Collecting the weights returned by clients without aggregating them

我想知道创建模型的最简单方法,使用 tensorflow federated 广播它,运行 一个周期并收集客户端返回的权重而不用 fedavg 聚合它们。

TFF 为此目的提供了 tff.federated_collect 内在函数;它在服务器上实现了客户端数据流。

将其连接到大多数现有联合过程的内部的一种简单方法是分叉 simple_fedavg,我认为这是使用 TFF 较低级别功能的合理起点。

这里有几点需要注意。首先,据我所知,没有 'production' 系统支持 federated_collect。其次,根据您的意愿,可能有一个更简单、更直接的解决方案:只需 return 客户自己加权。 TFF 运行时将具体化 Python 客户端权重列表(我相信是急切的张量),您可以在其上执行任意 python 后处理。

要从 simple_fedavg 到达此处,如果需要,您可以有效地 return the client_outputs directly instead of passing them to tff.federated_mean. This would give you the client deltas (IE, the difference between the final client weights and the initial client weights); you could, however, simply modify client_update 避免计算此差异。