* huuuuge update
* remove
* lint
* lint
* fix
* what happened to nccl
* update multi-gpu unsupervised graphsage example
* replace most of the dgl.mp.process with torch.mp.spawn
* update if condition for use_uva case
* update user guide
* address comments
* incorporating suggestions from @jermainewang
* oops
* fix tutorial to pass CI
* oops
* fix again
Co-authored-by: Xin Yao <xiny@nvidia.com>
* WIP: TypedLinear and new RelGraphConv
* wip
* further simplify RGCN
* a bunch of tweak for performance; add basic cpu support
* update on segmm
* wip: segment.cu
* new backward kernel works
* fix a bunch of bugs in kernel; leave idx_a for future
* add nn test for typed_linear
* rgcn nn test
* bugfix in corner case; update RGCN README
* doc
* fix cpp lint
* fix lint
* fix ut
* wip: hgtconv; presorted flag for rgcn
* hgt code and ut; WIP: some fix on reorder graph
* better typed linear init
* fix ut
* fix lint; add docstring
* Add RNAGlib to examples and DGL-powered-projects
* Add RNAGlib to examples and DGL-powered-projects
* Add RNAGlib to examples and DGL-powered-projects
* implement pin_memory/unpin_memory/is_pinned for dgl.graph
* update python docstring
* update c++ docstring
* add test
* fix the broken UnifiedTensor
* XPU_SWITCH for kDLCPUPinned
* a rough version ready for testing
* eliminate extra context parameter for pin/unpin
* update train_sampling
* fix linting
* fix typo
* multi-gpu uva sampling case
* disable new format materialization for pinned graphs
* update python doc for pin_memory_
* fix unit test
* UVA sampling for link prediction
* dispatch most csr ops
* update graphsage example to combine uva sampling and UnifiedTensor
* update graphsage example to combine uva sampling and UnifiedTensor
* update graphsage example to combine uva sampling and UnifiedTensor
* update doc
* update examples
* change unitgraph and heterograph's PinMemory to in-place
* update examples for multi-gpu uva sampling
* update doc
* fix linting
* fix cpu build
* fix is_pinned for DistGraph
* fix is_pinned for DistGraph
* update graphsage unsupervised example
* update doc for gpu sampling
* update some check for sampling device switching
* fix linting
* adapt for new dataloader
* fix linting
* fix
* fix some name issue
* adjust device check
* add unit test for uva sampling & fix some zero_copy bug
* fix linting
* update num_threads in graphsage examples
Co-authored-by: Quan (Andy) Gan <coin2028@hotmail.com>
Co-authored-by: Jinjing Zhou <VoVAllen@users.noreply.github.com>
* Adding initial files of example
* Removing old timing code
* Improving doc strings and fixing some minor bugs
* Merging from upstream and addressing PR comments
Co-authored-by: zakjost <jostza@amazon.com>
Co-authored-by: Mufei Li <mufeili1996@gmail.com>
* added distgnn plus libra codebase
* Dist application codes
* added comments in partition code. changed the interface of partitioning call.
* updated readme
* create libra partitioning branch for the PR
* removed disgnn files for first PR
* updated kernel.cc
* added libra_partition.cc and moved libra code from kernel.cc to libra_partition.cc
* fixed lint error; merged libra2dgl.py and main_Libra.py to libra_partition.py; added graphsage/distgnn folder and partition script.
* removed libra2dgl.py
* fixed the lint error and cleaned the code.
* revisions due to PR comments. added distgnn/tools contains partitions routines
* update 2 PR revision I
* fixed errors; also improved the runtime by 10x.
* fixed minor lint error
* fixed some more lints
* PR revision II changed the interface of libra partition function
* rewrite docstring
Co-authored-by: Quan (Andy) Gan <coin2028@hotmail.com>
* rgcn with new heterograph API
* added new apply_edge()
* optimized forward pass
* renaming from *hetero to *heteroAPI
Co-authored-by: Israt Nisa <nisisrat@amazon.com>
Co-authored-by: Da Zheng <zhengda1936@gmail.com>
* squeeze node labels in FraudDataset
* fix RLModule
* update results in README.md
* fix KeyError in full graph training
Co-authored-by: Jinjing Zhou <VoVAllen@users.noreply.github.com>
* add word_ids and simplify
* simplify
* add word_ids to be removed later
* remove word_ids
* seems to work
* tweak
* transpose word_z
* add word_ids example
* check api compatibility
* improve compatibility
* update doc
* tweak verbose
* restore word_z layout; tweak
* tweak
* tweak doc
* word_cT
* use log_weight and some other tweaks
* rewrite README
* update equations
* rewrite for clarity and pass tests
* tweak
* bugfix import
* fix unit test
* fix mult to be the same as old versions
* tweak
* could be a bugfix
* 0/0=nan
* add doc_subgraph utility function
* minor cache optimization
* minor cache tweak
* add environmental variable to trade cache speed for memory
* update README
* tweak
* add sparse update pass unit test
* simplify sparse update
* improve low-memory efficiency
* tweak
* add sample expectation scores to allow resampling
* simplify
* update comment
* avoid edge cases
* bugfix pred scores
* simplify
* add save function
Co-authored-by: Yifei Ma <yifeim@amazon.com>
Co-authored-by: Quan (Andy) Gan <coin2028@hotmail.com>
Co-authored-by: Jinjing Zhou <VoVAllen@users.noreply.github.com>
* gpu compact graph template
* cuda compact graph draft
* fix typo
* compact graphs
* pass unit test but fail in training
* example using EdgeDataLoader on the GPU
* refactor cuda_compact_graph and cuda_to_block
* update training scripts
* fix linting
* fix linting
* fix exclude_edges for the GPU
* add --data-cpu & fix copyright
* Use ==/!= to compare constant literals (str, bytes, int, float, tuple)
Avoid Syntax Warnings on Python >= 3.8
$ `python3`
```
>>> "" == ""
True
>>> "" is ""
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
True
```
* Use ==/!= to compare constant literals (str, bytes, int, float, tuple)
* The start of experiments of Jiahang Li on GraphSAINT.
* a nightly build
* a nightly build
Check the basic pipeline of codes. Next to check the details of samplers , GCN layer (forward propagation) and loss (backward propagation)
* a night build
* Implement GraphSAINT with torch.dataloader
There're still some bugs with sampling in training procedure
* Test validity
Succeed in testing validity on ppi_node experiments without testing other setup.
1. Online sampling on ppi_node experiments performs perfectly.
2. Sampling speed is a bit slow because the operations on [dgl.subgraphs], next step is to improve this part by putting the conversion into parallelism
3. Figuring out why offline+online sampling method performs bad, which does not make sense
4. Doing experiments on other setup
* Implement saint with torch.dataloader
Use torch.dataloader to speed up saint sampling with experiments. Except experiments on too large dataset Amazon, we've done some experiments on other four datasets including ppi, flickr, reddit and yelp. Preliminary experimental results show consumed time and metrics reach not bad level. Next step is to employ more accurate profiler which is the line_profiler to test consumed period, and adjust num_workers to speed up sampling procedures on same certain datasets faster.
* a nightly build
* Update .gitignore
* reorganize codes
Reorganize some codes and comments.
* a nightly build
* Update .gitignore
* fix bugs
Fix bugs about why fully offline sampling and author's version don't work
* reorganize files and codes
Reorganize files and codes then do some experiments to test the performance of offline sampling and online sampling
* do some experiments and update README
* a nightly build
* a nightly build
* Update README.md
* delete unnecessary files
* Update README.md
* a nightly update
1. handle directory named 'graphsaintdata'
2. control graph shift between gpu and cpu related to large dataset ('amazon')
3. remove parameter 'train'
4. refine annotations of the sampler
5. update README.md including updating dataset info, dependencies info, etc
* a nightly update
explain config differences in TEST part
remove a sampling time variant
make 'online' an argument
change 'norm' to 'sampler'
explain parameters in README.md
* Update README.md
* a nightly build
* make online an argument
* refine README.md
* refine codes of `collate_fn` in sampler.py, in training phase only return one subgraph, no need to check if the number of subgraphs larger than 1
* Update sampler.py
check the problem on flickr is about overfitting.
* a nightly update
Fix the overfitting problem of `flickr` dataset. We need to restrict the number of subgraphs (also the number of iterations) used in each epoch of training phase. Or it might overfit when validating at the end of each epoch. The method to limit the number is a formula specified by the author.
* Set up a new flag `full` specifying if the number of subgraphs used in training phase equals to that of pre-sampled subgraphs
* Modify codes and annotations related the new flag
* Add a new parameter called `node_budget` in the base class `SAINTSampler` to compute the specific formula
* set `gpu` as a command line argument
* Update README.md
* Finish the experiments on Flickr, which is done after adding new flag `full`
* a nightly update
* use half of edges in the original graph to do sampling
* test dgl.random.choice with or without replacement with half of edges
~ next is to test what if put the calculating probability part out of __getitem__ can speed up sampling and try to implement sampling method of author
* employ cython to implement edge sampling for per edge
* employ cython to implement edge sampling for per edge
* doing experiments to test consumed time and performance
** the consumed time decreased to approximately 480s, the performance decrease about 5 points.
* deprecate cython implementation
* Revert "employ cython to implement edge sampling for per edge"
* This reverts commit 4ba4f092
* Deprecate cython implementation
* Reserve half-edges mechanism
* a nightly update
* delete unnecessary annotations
Co-authored-by: Mufei Li <mufeili1996@gmail.com>
* publish pct
* add train_cls
* add readme
* update opt for point transformer
* update the example index
* update for comments
Co-authored-by: Tong He <hetong007@gmail.com>