版本

# eZoo-GNN


eZoo-GNN项目,以eZoo DB为数据基础,集成图神经网络(GNN)的相关功能。在统一的GDB数据基础之上,构建一体化的图智能平台。

此文档包含eZoo-GNN产品的架构及模块介绍及基本的集成、使用方法说明。

如果您有任何新的需求与疑问,欢迎联系我们


# 架构简介

GNN平台架构分成内核及工具链两部分,内核中包含与模型训练、模型推理、数据加载直接相关的底层模块;工具链中包含训练GNN模型所需要工具包。

eZoo-GNN和ezoo-GDB使用统一的数据引擎,通过数据加载器,将图数据从GDB引擎加载到训练内存中为GNN训练做好准备。之后,用户可以使用GNN训练模块提供的底层接口,定义GNN模型并启动训练;使用GNN推理接口进行模型推理工作。

GNN的操作接口以Python语言形式提供,需要使用者对GNN原理及业务都有足够的了解才能编写符合业务需求的模型逻辑。为了进一步简化模型定义和训练工作,我们预置了GCN、GraphSage、GAT等算法,使用者根据实际需求,通过工具链中的模型参数定义模块指定模型训练时所使用的超参数,并通过模型训练工作流模块指定模型的训练、验证和部署。同时,当你希望对节点特征值进行特征工程时,可以使用数据预处理工具包。它支持正则化、标准化、独热编码等通用的特征工程操作,同时,可以利用图特有的能力,将图挖掘(中心度、分群计算等)的结果生成为节点特征。


# 目录结构

在项目工程的src/gnn目录中包含了所有eZoo-GNN相关的代码实现,其中主要的目录及功能:

  • 根目录文件:
    • setup.py:ezoognn的编译打包定义文件
    • build.sh:启动ezoognn的编译过程
    • gen-whl.sh:生成ezoognn的wheel包,供后续安装
    • start_train.py:训练示例启动主入口
  • ezoognn:eZoo-GNN的主要实现类,几个主要的内容:
    • ezoo_graph.py:对底层eZooGraph的Python封装
    • loader目录:数据加载器,用于GNN训练时从底层图库加载数据
    • sampler目录:采样器,进行随机批次训练、随机游走等计算时在eZoo图中进行采样
    • distribution目录:分布式训练相关实现类
    • utils目录:gnn相关工具包,包括图特征工程工具FeatureMaker、模型存取工具、GNN可视化工具等
  • ezoognnexample:eZoo-GNN的示例代码
    • jupyternotebook目录:以jupyter notebook形式组织各不同的GNN应用示例
    • loadingwholegraph目录:以全图数据加载方式进行GNN训练的示例
    • stochastic目录:随机批次方式进行GNN训练的示例
    • fullgraph目录:针对预置数据集,展示不同GNN算法的使用方法
  • pytestunit:python单元测试用例
  • test:cpp单元测试用例

# 编译安装

  • 编译gnn动态库,使用项目根目录编译gnn target:
    cd <project_workspace>
    mkdir build
    
    • Release版本:
    cmake --build ./build --config Release --target gnn --
    
    • Debug版本:
    cmake --build ./build --config Debug --target gnn --
    
  • 编译Cython部分:
    cd <project_workspace>/src/gnn
    bash ./build.sh
    

这之后即可在源代码目录的中执行主入口文件start_train.py等。

  • 生成wheel: 当希望生成whl包并安装到系统环境时,使用如下命令生成whl文件:
    cd <project_workspace>/src/gnn
    bash ./gen_whl.sh
    

脚本执行完成后,会在src/gnn目录中生成子目录ezoo-gnn-whl,其中放置了ezoo-gnn模块的安装文件,对其进行pip install即可将ezoognn安装到系统的Python目录中。


# 执行

项目中有大量GNN示例代码可供执行:

  • 通过Python执行
cd <project_workspace>/src/gnn
python start_train.py --cfg-file <eZooDB配置文件路径>

start_train.py中还有很多其它可配置参数,通过help参数查看:

python start_train.py --help
  • 通过jupyter notebook执行 安装ezoognn包之后,启动jupyter notebook,在src/gnn/ezoognnexample/jupyternotebook中打开需要的ipynb文件,根据说明执行。
最近一次更新时间: 9/20/2022, 5:31:33 AM