🚀 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:
- 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)
- 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_layer functionality which helps to boost the performance.
- Weighted Sampling: Allow passing a
weight vector to neighbor_sample to sample based on
- Subgraph sampling
🚀 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.
neighbor_sampleimplementationhetero_neighbor_sampleimplementation (Hetero neighbor sampler multithreading pyg-lib#215)pyg-liband/or PyGSubgraphTypewithbidirectionalsampling support (1/2) #7199SubgraphTypewith bidirectional sampling support (2/2) #7200bidirectionalsampling benchmarkstrim_to_layerfunctionality which helps to boost the performance.trim_to_layerutility function #6661SparseTensorsupport fortrim_to_layer#7089weightvector toneighbor_sampleto sample based onweightvector toneighbor_sampleto sample based on importance scores. Reference DGL implementation (seeprobargument).pyg-lib, see herepyg_lib.neighbor_samplein casedirected=False