2025年detr源码(deno源码解析)

detr源码(deno源码解析)Open Federated Graph Learning OpenFGL 是一个全面的 用户友好的算法库 辅以集成的评估平台 专为联邦图学习 FGL 领域的研究人员设计 这个库集成了许多最先进的图联邦学习算法 而且运行效率比较高 这个库的代码框架简洁易懂 由四个核心模块组成 分别是 Client Server Task 和 FGLTrainer 接下来

大家好,我是讯享网,很高兴认识大家。



Open Federated Graph Learning (OpenFGL)是一个全面的、用户友好的算法库,辅以集成的评估平台,专为联邦图学习(FGL)领域的研究人员设计。这个库集成了许多最先进的图联邦学习算法,而且运行效率比较高。

这个库的代码框架简洁易懂,由四个核心模块组成,分别是:Client、Server、TaskFGLTrainer

接下来,我结合FedAvg在子图联邦学习的具体例子来分别介绍这四个核心模块。

最上层是FGLTrainer

它在初始化时创建了客户端列表和服务器,并负责控制整个联邦学习的训练和验证过程。在train函数中,我们可以看到最外层循环是总的通信轮数,内层循环是采样得到的多个客户端。

紧接着是Client


讯享网

它在初始化时创建了NoedClsTask,这是联邦学习的具体任务。并且在self.task中执行每个客户端的本地训练。训练完成之后,本地模型的参数通过send_message发送到服务器。

然后是Server

它在初始化时创建了NoedClsTask,这是联邦学习的具体任务。这里创建self.task是为了获得全局模型的参数。在execute函数中进行联邦聚合,并将聚合后的模型通过send_message发送到客户端。

最后介绍最底层的Task

这里以子图节点分类任务为例。可以看到,无论是客户端还是服务器,data、model和optimizer都是在这里定义的。在train函数中,我们可以看到有一个num_epochs的循环,这是本地客户端在每个通信轮次中的训练epoch次数。本地模型的前向传播和梯度优化都是在这里完成的。

信息传递

对于联邦学习,客户端与服务器之间的信息传递非常重要。根据上述的代码分析,我们可以看到首先在FGLTrainer中创建了消息池message_pool,并且该对象作为参数被传递到了新创建的客户端和服务器。这样就相当于服务器和客户端共用消息池,减少了通信开销,使得该框架的运行效率很高。

资源调度

可以看到,本框架在创建多个服务器时,实际上是创建了多个对象。因此,多个实例化的客户端分别物理地占有了显存和内存。这样做的好处是代码简单,模拟联邦学习时的通信开销少,运行速度快。但是,这样会导致无法应用到大规模客户端的情形。例如,本框架大多数设置10个客户端。如果当客户端个数增加到50或者100,有限的物理资源可能不够。

FED-PUB的框架采用了线程交换的机制,可以指定物理资源允许的客户端个数。超过的客户端会通过保存当前的模型参数、优化器参数到硬盘上,然后和已有的客户端进行交换。这样做的好处是理论上可以支持无限个客户端。但是缺点是存储、读取、交换的时间开销大,导致运行效率很低。

小讯
上一篇 2025-05-01 15:57
下一篇 2025-06-07 14:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/183304.html