# Auto Graph Learning An autoML framework & toolkit for machine learning on graphs. *Actively under development by @THUMNLab* Feel free to open issues or contact us at autogl@tsinghua.edu.cn if you have any comments or suggestions! [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Documentation Status](https://readthedocs.org/projects/autogl/badge/?version=latest)](https://autogl.readthedocs.io/en/latest/?badge=latest) ## News! - 2021.07.11 New version! v0.2.0-pre is here! In this new version, AutoGL supports [neural architecture search (NAS)](https://autogl.readthedocs.io/en/latest/docfile/tutorial/t_nas.html) to customize architectures for the given datasets and tasks. AutoGL also supports [sampling](https://autogl.readthedocs.io/en/latest/docfile/tutorial/t_trainer.html#node-classification-with-sampling) now to perform tasks on large datasets, including node-wise sampling, layer-wise sampling, and sub-graph sampling. The link prediction task is now also supported! Learn more in our [tutorial](https://autogl.readthedocs.io/en/latest/index.html). - 2021.04.16 Our survey paper about automated machine learning on graphs is accepted by IJCAI! See more [here](http://arxiv.org/abs/2103.00742). - 2021.04.10 Our paper [__AutoGL: A Library for Automated Graph Learning__](https://arxiv.org/abs/2104.04987) is accepted by _ICLR 2021 Workshop on Geometrical and Topological Representation Learning_! You can cite our paper following methods [here](#Cite). ## Introduction AutoGL is developed for researchers and developers to conduct autoML on graph datasets and tasks easily and quickly. See our documentation for detailed information! The workflow below shows the overall framework of AutoGL. AutoGL uses `datasets` to maintain datasets for graph-based machine learning, which is based on Dataset in PyTorch Geometric with some functions added to support the auto solver framework. Different graph-based machine learning tasks are handled by different `AutoGL solvers`, which make use of five main modules to automatically solve given tasks, namely `auto feature engineer`, `neural architecture search`, `auto model`, `hyperparameter optimization`, and `auto ensemble`. Currently, the following algorithms are supported in AutoGL:
Feature Engineer Model NAS HPO Ensemble
Generators
Graphlets
EigenGNN
more ...

Selectors
SeFilterConstant
gbdt

Graph
netlsd
NxAverageClustering
more ...
Node Classification
GCN
GAT
GraphSAGE

Graph Classification
GIN
TopKPool
Algorithms
Random
RL
more ...

Spaces
SinglePath
GraphNas
more ...

Estimators
Oneshot
Scratch
Grid
Random
Anneal
Bayes
CAMES
MOCAMES
Quasi random
TPE
AutoNE
Voting
Stacking
This toolkit also serves as a framework for users to implement and test their own autoML or graph-based machine learning models. ## Installation ### Requirements Please make sure you meet the following requirements before installing AutoGL. 1. Python >= 3.6.0 2. PyTorch (>=1.6.0) see for installation. 3. PyTorch Geometric (>=1.7.0) see for installation. ### Installation #### Install from pip Run the following command to install this package through `pip`. ``` pip install autogl ``` #### Install from source Run the following command to install this package from the source. ``` git clone https://github.com/THUMNLab/AutoGL.git cd AutoGL python setup.py install ``` #### Install for development If you are a developer of the AutoGL project, please use the following command to create a soft link, then you can modify the local package without install them again. ``` pip install -e . ``` ## Documentation Please refer to our documentation to see the detailed documentation. You can also make the documentation locally. First, please install sphinx and sphinx-rtd-theme: ``` pip install -U Sphinx pip install sphinx-rtd-theme ``` Then, make an html documentation by: ``` cd docs make clean && make html ``` The documentation will be automatically generated under `docs/_build/html` ## Cite Please cite [our paper](https://openreview.net/forum?id=0yHwpLeInDn) as follows if you find our code useful: ``` @inproceedings{ guan2021autogl, title={Auto{GL}: A Library for Automated Graph Learning}, author={Chaoyu Guan and Ziwei Zhang and Haoyang Li and Heng Chang and Zeyang Zhang and Yijian Qin and Jiyan Jiang and Xin Wang and Wenwu Zhu}, booktitle={ICLR 2021 Workshop on Geometrical and Topological Representation Learning}, year={2021}, url={https://openreview.net/forum?id=0yHwpLeInDn} } ``` You may also find our [survey paper](http://arxiv.org/abs/2103.00742) helpful: ``` @article{zhang2021automated, title={Automated Machine Learning on Graphs: A Survey}, author={Zhang, Ziwei and Wang, Xin and Zhu, Wenwu}, booktitle = {Proceedings of the Thirtieth International Joint Conference on Artificial Intelligence, {IJCAI-21}}, year={2021}, note={Survey track} } ``` ## License Notice that we follow [Apache license](LICENSE) across the entire codebase from v0.2.