# GraphPAS **Repository Path**: ncucjm/GraphPAS ## Basic Information - **Project Name**: GraphPAS - **Description**: GraphPAS是一个高效的并行图神经网络结构搜索算法 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-11-27 - **Last Updated**: 2024-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Graph Neural Network Parallel Architecture Search --- ### 一.图神经网络结构搜索 #### 1.图神经网络结构搜索定义: 1. 如图1GraphNAS所示,在相应的图神经网络结构搜索空间,使用搜索算法搜索图神经网络参数; 2. 基于图神经网络参数结构参数按照固定图神经网络构型(消息传递网络)进行建模; 3. 使用图神经网络结构参数评估策略(节点分类验证集准确度)进行结构参数评估; 4. 将评估信号反馈给搜索算法; 5. 搜索算法基于反馈信号指导下一步结构搜索动作; #### 2.图神经网络结构参数定义: 1. 五个参数组成一层图神经网络结构,每层结构组件组合顺序一致顺序如2; 2. (1).注意力机制函数->(2).节点聚合函数->(3).激活函数->(4).多头注意力机制头数->(5).输出层隐层单元维度; 3. 结构参数表示如下,n表示图神经网络层数: [att(1),agg(1),act(1),head(1),dim(1),...,att(n),agg(n),act(n),head(n),dim(n)];
图1.GraphNAS
#### 3单层图神经网络构型定义(消息传递网络构型): 节点特征矩阵->dropout层->head个dim特征降维层->attention层(head个独立attention参数)-> ->节点聚合层->特征向量拼接(最后一层GNN操作:加和平均)层->激活函数层->节点特征矩阵 --- ### 二.并行进化搜索算法架构图(GraphPAS Framework) #### 1.搜索算法核心: 1. 并行化搜索; 2. 使用图神经网络结构组件分布约束遗传搜索方向;
图2.GraphPAS Framework
--- ### 三.安装 1. **python库** - python >= 3.6 - scipy==1.1.0 - torch==1.1.0 - torch_scatter==1.2.0 - torch-cluster==1.4.0 - torch-sparse==0.4.0 - torch_geometric==1.2.1 - numpy==1.15.4 - scikit_learn==0.21.3 - ray==1.2.0 - requests 2. **cuda版本9.0** --- ### 四.项目目录结构: graphpas |---build_gnn :图神经网络构建 |--- __init__.py |--- gnn_manager.py :图神经网络建模管理 |--- gnn_net.py    :图神经网络前向计算 |--- graph_sample.py :图数据随机采样 |--- message_passing_net.py :消息传递网络/参数初始化 | | graphpas_search :GraphPAS并行遗传搜索 |--- __init__.py |--- search_algorithm.py :并行搜索算法 |--- search_manager.py :搜索算法管理 |--- util.py :数据处理/存储/读取 __init__.py | device_information.py :GPU硬件判断 | estimation.py :GNN结构参数评估 | parallel_operator.py :平行计算 | search_space.py :GNN结构搜索空间/GNN构型 data_util |--- cite_network :cite_network数据集合 |--- util_cite_network.py :cite_network数据集预处理 examples |--- graph_data_bulid_example :图数据构建案例 | |--- graph_data_build.py :自定义图数据构建 | |--- node_edge.txt :图边关系文件 | |--- node_feature.txt :图节点特征文件 | |--- node_label.txt :图节点标签文件 |---graph_data_sample_example :图数据随机采样案例 | |--- graph_data_sample.py :图随机采样 |--- node_classification_example :节点分类案例 |--- node_classification.py :节点分类 parallel_config.py :并行机制初始化 --- ### 五.使用案例 #### 案例 1.构建自己的图数据集 - 图数据构建: 案例脚本: examples/graph_data_build_example/graph_data_build.py - 图数据格式: 案例文件: 1.examples/graph_data_build_example/node_edge.txt 2.examples/graph_data_build_example/node_feature.txt 3.examples/graph_data_build_example/node_label.txt #### 案例 2.对自定义图数据随机采样 - 图数据随机采样: 案例脚本: examples/graph_data_sample_example/graph_data_sample.py #### 案例 3.基于cite_network图数据的节点分类 - Transductive Learning节点分类案例: 案例脚本: examples/node_classification_example/node_classification.py #### 案例 4.并行启动与机制 - 并行启动: from parallel_config import ParallelConfig ParallelConfig(True) # True 并行 - 串行调试: from parallel_config import ParallelConfig ParallelConfig(False) # Fasle 串行 - GPU/CPU资源使用/机制 1.自动识别主机GPU/CPU资源. 2.自动默认使用主机全部GPU资源,当没有GPU资源默认使用主机CPU所有逻辑核心资源. 3.优先使用GPU资源. ---