A PyTorch Graph Neural Network Library
This is a library containing pyTorch code for creating graph neural network (GNN) models. The library provides some sample implementations.
ptgnntakes care of defining the whole pipeline, including data wrangling tasks, such as data loading and tensorization. It also defines PyTorch
nn.Modules for the neural network operations. These are independent of the
AbstractNeuralModels and can be used as all other PyTorch's
nn.Modules, if one wishes to do so.
The library is mainly engineered to be fast for sparse graphs. For example, for the Graph2Class task (discussed below) on a V100 with the default hyperparameters and architecture
ptgnncan process about 82 graphs/sec (209k nodes/sec and 1,129k edges/sec) during training and about 200 graph/sec (470k nodes/sec and 2,527k edges/sec) during testing.
The tutorial gives a step-by-step example for coding the Graph2Class model.
pytorch-scatterbinaries built for CUDA 10.1 also work for CUDA 10.2).
To install PyTorch 1.4, use the up-to-date command from PyTorch Get Started, selecting the appropriate options, e.g. for Linux, pip, and CUDA 10.1 it's currently:
bash pip install torch torchvision
pytorch-scatter, follow the instructions from the GitHub repo, choosing the appropriate CUDA option, e.g., for CUDA 10.1:
bash pip install torch-scatter==2.0.4+cu101 -f https://pytorch-geometric.com/whl/torch-1.4.0.html
ptgnnfrom pypi, including all other dependencies:
bash pip install ptgnnIf you want to use ptgnn sampels with Azure ML (e.g. the
--amlflag in the implementation CLIs), install with
bash pip install ptgnn[aml]or directly from the sources,
cdinto the root directory of the project and run
bash pip install -e .To check that installation was successful and run the unit tests:
python python setup.py test
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
To contribute to this library, first follow the next steps to setup your development environment: * Install the library requirements. * Install the pre-commit hooks: * Run
pip3 install pre-commit* Install the hooks
If you are using conda, then download the correct torch-scatter wheel. If using
torch==1.5.0and Python 3.7, you can use the environment.yml included in the repo, with the following steps:
$ conda env create -f environment.yml $ conda activate ptgnn-env $ pip install torch_scatter-2.0.4+cu102-cp37-cp37m-linux_x86_64.whl $ pip install -e . $ python setup.py test $ pip install pre-commit $ pre-commit install
To create a PyPi release push a tag in the form
v1.3.4in this repository (make sure that you follow semantic versioning). The Publish on PyPi GitHub action will automatically upload a new release.