Giter VIP home page Giter VIP logo

xtra-computing / g3 Goto Github PK

View Code? Open in Web Editor NEW
42.0 7.0 8.0 11.16 MB

G3: A Programmable GNN Training System on GPU

License: Apache License 2.0

CMake 1.75% Makefile 0.31% Python 0.32% Shell 2.19% CSS 0.22% JavaScript 0.31% HTML 0.15% Cuda 91.84% C++ 2.38% C 0.53%
gnn gunrock gnn-architectures graph-neural-network graph-processing gpu-computing gpu-acceleration gpu graph-systems deep-neural-networks

g3's Introduction


G3: A Programmable GNN Training System on GPU

What's new

G3 is research prototype that is currently in active development. You are welcome to share ideas and contribute.

The web-based GUI can be found at https://g3-gui.web.app/.

VLDB 2020 demo video (with a case study on predicting COVID in Singapore): https://www.youtube.com/watch?v=UJH0nh38wSg

Overview

G3 is built as a programming framework for Graph Neural Network (GNN) applications that supports graph related operations natively and leverages on the computation power of Graphics Processing Units (GPU). It is named G3, which stands for Graph processing system but tailored for GNN processing on GPUs. The values of G3 can be summarized as follow:

  • G3 thrives to fundamentally enhance the performance of GNN applications by incorporating graph oriented operators at the low level.
  • G3 provides a set of existing basic modules that can be stacked up to build up user-customized GNN architectures.
  • G3 provides flexible C++ based APIs such that developers are able to define and implement their own GNN layers when such layers do not exist in our system.
  • G3 frees the programmers from low level GPU thread management and memory management concerns, which is usually daunting and injects numerous unnoticeable bugs into the system.
  • G3 automatically applies graph-centric optimizations on the GNN architectures during run time.

We have done some preliminary studies to show how such system can be used to build Graph Convolutional Network (GCN) , the state of the art in various GNN models, and how our implementation exceeds the performances of Tensorflow implementation (the original implementation) as well as PyTorch implementation by a significant margin. Details are here.

G3 is built based on Gunrock, a CUDA library for graph-processing designed specifically for the GPU. For more details, see Gunrock's Github repo. Most of the code is reused from Gunrock's code base. G3 added these components to Gunrock to efficiently support GNN training 1) GCN App and 2) GCN Example.

Getting Started

Prerequisites

CMake >= 3.10
G++ >= 7.5
CUDA >= 9.0

Quick Install

git clone --recursive https://github.com/Xtra-Computing/G3.git
cd G3
mkdir build
cd build
cmake ..
make -j

After that, you can run the example GCN application:

cd bin
./gcn

How to cite G3

If you use G3 in your paper, please cite our work (full version).

@article{husong2020g3,
 author = {Liu, Husong and Lu, Shengliang and Chen, Xinyu and He, Bingsheng},
 title = {G3: When Graph Neural Networks Meet Parallel Graph Processing Systems on GPUs},
 journal = {PVLDB (Proceedings of the VLDB Endowment), demo paper},
 year = {2020}
}

Related work

Acknowledgement

  • We acknowledge Ee Ter Low, Long Sha, and Karan Sapra for their contributions on developing the demo (with special support under COVID internship program (T1 251RES1824)).
  • This work is supported by a collaborative grant from Microsoft Research Asia.

g3's People

Contributors

bingshenghe avatar husong998 avatar lushl9301 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

g3's Issues

Running "Case-study-COVID-19-in-Singapore" demo using G3

Hi, I reviewed the "Case-study-COVID-19-in-Singapore" demo and executed it successfully on my system. However, I did not understand the relation between this demo and the G3 program. Here are my questions:

1- The "Case-study-COVID-19-in-Singapore" demo uses PyTorch LSTM and Linear modules to train the described 3-layered GNN module. So, to use G3 for the training, how do we change this defined PyThorh module to a G3 one?

2- How do we change the input data of this demo to one suitable for G3? As far as I realized, the datasets in the web-app demo are somehow different from the datasets in this demo.

3- In sum, implementing this demo with G3 is unclear. Therefore, I would appreciate that if you clarify this.

Thanks.

Using Time Series data to Train a GNN in G3

Hi,

I opened issue #6 and asked about the Running "Case-study-COVID-19-in-Singapore" demo using G3. You stated that the code base of the Covid-19 demo on G3 is hard-coded, and the LSTM part is not 100% functional. Therefore it is not pushed to this repo yet.

However, I have another question related to this. I have a dataset containing some time-series data on a GNN. I want to train a GNN using the G3 for the prediction over this time-series.

For example, you can consider a dataset of Covid-19 cases. So, based on this, I want to train 10 sequential days of confirmed cases in 5 cities to predict the 11th day of confirmed cases in these cities. So my question is that, is it possible to use time-series data to train a GNN in current the current G3?

I reviewed the sample data you put in this repo for the G3 (G3/dataset/gcn/). None of them are time-series data and time-series prediction. Regarding the current API of G3 and the lack of the LSTM module in it, I want to know whether we can train a model for time series prediction using G3 or not.

Thanks for your time. :)

Runtime error when run gcn sample with pubmed dataset

Summary:
I am getting this error when running gcn demo sample with the dataset pubmed:
"terminate called after throwing an instance of 'std::invalid_argument'"

Reproducibility:
./gcn --feature_file=../../dataset/gcn/pubmed.svmlight --graph_file=../../dataset/gcn/pubmed.graph --split_file =../../dataset/gcn/pubmed.split

To Reproduce:
1 gpu with 1GB RAM

For example:

  1. Clone gunrock
  2. Switch to the dev-refactor branch

Make sure to:
$ git submodule init
$ git submodule update
etc.
etc.

Expected Behavior:
A clear and concise description of what you expected to happen.

Actual Results:
A clear and concise description of what you actually experienced.

System Configuration:

GPU: GTX 970
CPU: Intel(R) Xeon(R) CPU E3-1280 v5 @ 3.70GHz
OS: Ubuntu 18.04.1 LTS
Cuda compilation tools, release 10.0, V10.0.130
NVIDIA-SMI 415.13
Driver Version: 415.13
CUDA Version: 10.0
gcc (Ubuntu 6.4.0-17ubuntu1) 6.4.0 20180424

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.