Personalized Subgraph Federated Learning,FED-PUB,2023,ICML 2023,代码

部署运行你感兴趣的模型镜像

论文阅读在这篇文章

data文件夹

图划分算法,没有采用Louvain算法(Blondel et al., 2008),在Zhang et al. (2021),使用到。而是使用的METIS graph partitioning algorithm(Karypis,1997)

disjoint.py

parser.py

parser.py解析参数

multiprocs.py

multiprocs.py分布式训练的进程管理,
整体流程图:

ParentProcess
  ├── __init__()
  │    ├── 解析 GPU 设置
  │    ├── 创建共享字典 sd
  │    ├── 创建工作进程 (create_workers)
  │    └── 初始化 Server 实例
  └── start()
       ├── 设置初始状态
       ├── 创建路径 (检查点和日志)
       ├── 多轮训练循环
       │    ├── 调用 on_round_begin()
       │    ├── 选择客户端并分配给工作进程
       │    ├── 等待客户端更新 (wait)
       │    └── 调用 on_round_complete()
       ├── 更新 sd 状态以通知工作进程结束
       └── 进程清理

layers.py

定义单层的MaskedGCNConv等

net.py

构建MaskedGCN

server.py

metispy

metispy 是一个用于图划分(graph partitioning)的Python库,它是METIS库的Python接口。METIS 是一个用于将图划分成若干个子图的工具,广泛应用于并行计算、网络分析等领域。
安装:pip install metispy
安装建议参考:https://github.com/james77777778/metis_python?tab=readme-ov-file,适用unix.
应用示例:

import metispy as metis
import networkx as nx

# 创建一个示例图
G = nx.karate_club_graph()

# 获取节点和边列表
nodes = list(G.nodes)
edges = list(G.edges)

# 将 NetworkX 图转换为 METIS 所需的格式
node_mapping = {node: idx for idx, node in enumerate(nodes)}
edges_mapped = [(node_mapping[u], node_mapping[v]) for u, v in edges]

# 创建 METIS 图
metis_graph = metis.MetisGraph(len(nodes), edges_mapped)

# 设置划分成的子图数量
num_parts = 4

# 执行图划分
objval, parts = metis.part_graph(metis_graph, nparts=num_parts)

# 打印结果
print(f'Objective value: {objval}')
print(f'Partition labels: {parts}')

# 将划分结果映射回原始节点
partition_mapping = {node: parts[node_mapping[node]] for node in nodes}
print(f'Partition mapping: {partition_mapping}')

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所谓远行Misnearch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值