微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 FL 中,客户可以训练不同的模型架构吗?

如何解决在 FL 中,客户可以训练不同的模型架构吗?

在这tutorial 上练习,我希望每个客户训练不同的架构和不同的模型,这可能吗?

解决方法

TFF 确实支持具有不同模型架构的不同客户端。

然而,Federated Learning for Image Classification tutorial 使用 tff.learning.build_federated_averaging_process 实现联合平均 (McMahan et. al 2017) 算法,定义为每个客户端接收相同的架构。这是在 TFF 中通过将模型“映射”(在函数式编程意义上)到每个客户端数据集以生成新模型,然后聚合结果来实现的。

为了实现具有不同架构的不同客户端,需要实施不同的联合学习算法。这可以有几种(非详尽的)表达方式:

  1. 实现 ClientFedAvg 的替代方案。此方法将固定模型应用于客户数据集。替代实现可能会为每个客户端创建不同的架构。

  2. 创建 tff.learning.build_federated_averaging_process 的替代品 使用不同的函数签名,拆分客户端组 这将接收不同的架构。例如,目前 FedAvg 看起来像:

    (<state@SERVER,data@CLIENTS> → <state@SERVER,metrics@SERVER>
    

    这可以用带有签名的方法替换:

    (<state@SERVER,data1@CLIENTS,data2@CLIENTS,...> → <state@SERVER,metrics@SERVER>
    

    这将允许函数在内部tff.federated_map() 将不同的模型架构用于不同的客户端数据集。这可能仅在 FL 模拟或实验和研究中有用。

然而,在联邦学习中,关于如何将服务器上的模型聚合回单个全局模型会存在一些难题。这可能需要先设计出来。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?