|
| 1 | +# Graph Neural Networks - Summer of Code |
| 2 | + |
| 3 | +Graph neural networks (GNN) are deep learning models well adapated to data rapresented by graphs along with feature vectors associated to nodes and edges. |
| 4 | +GNNs are a growing are of research and find many applications in complex networks analysis, relational reasoning, combinatorial optimization, molecule generation, and many other fields. |
| 5 | +[GraphNeuralNetworks.jl](https://github.com/CarloLucibello/GraphNeuralNetworks.jl) is a pure Julia package for GNNs already equipped with plenty of features such as many common graph convolutional layers, CUDA support and graph batching for fast parallel operations. There are a number of ways by which the package could be improved: |
| 6 | + |
| 7 | +- **Adding graph convolutional layers (duration: 175h, expected difficulty: easy to medium):** |
| 8 | +While we implement a good variety of graph convolutional layers, there is still a vast zoology to be implemented yet. |
| 9 | + |
| 10 | +- **Adding models and examples (duration: 175h, expected difficulty: medium):** |
| 11 | +As part of the documentation and for bootstrapping new projects, |
| 12 | +we want to add fully worked out examples and applications of graph neural networks. |
| 13 | + |
| 14 | +- **Adding graph datasets (duration: 175h, expected difficulty: easy):** |
| 15 | +. Provide julia friendly wrappers for common graph datasets in [`MLDatasets.jl`](https://github.com/JuliaML/MLDatasets.jl). |
| 16 | + |
| 17 | +- **Supporting heterogeneous graphs (duration: 175h, expected difficulty: hard):** |
| 18 | +In some complex networks, the relations expressed by edges can be of different types. |
| 19 | +We need to implement an heteroeneous graph type and implement convolutional layers supporting them. |
| 20 | + |
| 21 | +- **Training on very large graphs (duration: 175h, expected difficulty: medium to hard):** |
| 22 | +Graph containing several milions of nodes are too large for gpu memory. Mini-batch training si performed on subgraphs, as in the GraphSAGE algorithm. |
| 23 | + |
| 24 | +- **Supporting temporal graph neural networks (duration: 175h, expected difficulty: hard):** |
| 25 | +We aim at implementing temporal graph convolutions for time-varying graph and/or node features. |
| 26 | + |
| 27 | +- **Improving perfomance using sparse linear algebra (duration: 175h, expected difficulty: medium to hard):** |
| 28 | +Many graph convolutional layers can be expressed as non-materializing algebraic operations involving the adjacency matrix instead of the slower and more memory consuming gather/scatter mechanism. We aim at extending as far as possible and in a gpu-friendly way these *fused* implementation. |
| 29 | + |
| 30 | +**Recommended skills:** Familiarity with graph neural networks and Flux.jl. |
| 31 | + |
| 32 | +**Expected results:** New features added to the package along with tests and relevant documentation. |
| 33 | + |
| 34 | +**Mentors:** [Carlo Lucibello](https://github.com/CarloLucibello) (author of [GraphNeuralNetworks.jl](https://github.com/CarloLucibello/GraphNeuralNetworks.jl).For linear algebra, co-mentoring by [Will Kimmerer](https://github.com/Wimmerer) (lead developer of [SuiteSparseGraphBLAS.jl](https://github.com/JuliaSparse/SuiteSparseGraphBLAS.jl)). |
| 35 | + |
| 36 | +**Contact:** Feel free to contact us on the [Julia Slack Workspace](https://julialang.slack.com/) or by opening an issue on [GraphNeuralNetworks.jl](https://github.com/CarloLucibello/GraphNeuralNetworks.jl). |
0 commit comments