-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Open
Description
🚀 The feature, motivation and pitch
Different GNN applications require customized sampling to improve the accuracy and/or performance. We propose the following advanced sampling routines with detailed benchmarking reports.
- Multi-threading support: All sampling operations are single-threaded. We can expect additional speed-ups when providing multi-threading implementation:
- Multi-threaded
neighbor_sampleimplementation - Multi-threaded
hetero_neighbor_sampleimplementation (Hetero neighbor sampler multithreading pyg-lib#215) - Introduce benchmarks in
pyg-liband/or PyG
- Multi-threaded
- Bi-directional sampling: Allow the option to return a bidirectional graph as part of sampling (e.g., for allowing GNNs with more layers than sampled hops)
- Add
SubgraphTypewithbidirectionalsampling support (1/2) #7199 - Add
SubgraphTypewith bidirectional sampling support (2/2) #7200 - Introduce
bidirectionalsampling benchmarks
- Add
- Hierarchical Neighborhood sampling: Hierarchical Neighborhood Sampling is extending classical Neighborhood Sampling by collecting additional information about number of sampled nodes and edges per each hop. That information can be used in special features like Hierarchical Graph Adjacency Matrix implemented by
trim_to_layerfunctionality which helps to boost the performance.- Adding option to return info about sampled graph pyg-lib#197
- Adding
trim_to_layerutility function #6661 -
SparseTensorsupport fortrim_to_layer#7089 - Adds an example for Hierarchical Sampling #7244
- Add automatic trimming example via a separate HGAM layer and add an example
- Write documentation/tutorial
- Weighted Sampling: Allow passing a
weightvector toneighbor_sampleto sample based on- Allow passing a
weightvector toneighbor_sampleto sample based on importance scores. Reference DGL implementation (seeprobargument). - Integrate into PyG
- Allow passing a
- Subgraph sampling
- Initial version in
pyg-lib, see here - Benchmarking efforts
- Integrate into
pyg_lib.neighbor_samplein casedirected=False
- Initial version in
ClaudMor and Martins6