Comments (5)
(1) I agree that updating without message can be completed outside DGLGraph
. Thus DGLGraph
can refuse to update node without message.
(2) Maybe we can let user decide? Basically there is a tradeoff between storage and re-computation.
(3) I think we need a special object for this, e.g. None
. The tricky case is when we tensorize reduce/update function. Currently I use a Python loop to filter out nodes without neighbor, which is very inefficient.
from dgl.
from dgl.
Requested by @zzhang-cn:
In the current implementation my UpdateModule
treats the "no message" case as receiving a zero vector. This only happens on the root node of a tree since it is the starting point of the whole message passing process. The restriction that message phase is required for an update should have minimal impact on our model since I can move the root node computation out from the send
/recv
framework and initialize the states by set_repr()
.
For the three questions:
(1) What are the downsides (either from our perspective or the user's experience) if we do allow updates with no messages? I think allowing no-message-updates can let the users write more compact code if the nodes do update itself without any incoming messages.
(2) In socket programming, calling sendto
would put the message into a buffer while recvfrom
clears it. I suggest we stick to this convention as well (i.e. calling a recvfrom
will clear the message from the edges). The users can stash the message by themselves if they hope to reuse it. The storage is not an issue here since the underlying tensor libraries already take care of keeping or freeing the message tensors.
(3) If we allow no-message-updates then I feel that this is not a problem.
from dgl.
Another corner case:
(4) If there is only one predecessor, do we allow optional reduce phase?
from dgl.
Done by PR #25
from dgl.
Related Issues (20)
- SDDMM operator fails in distributed environment
- [GraphBolt] Hetero example broken HOT 1
- [GraphBolt][PyG] Support for Heterogeneous Graphs in `to_pyg_data` HOT 5
- [GraphBolt] mag240M example does not reach expected accuracies. HOT 1
- [GraphBolt][Doc] gb.[gpu|cpu]_cached_feature is not showing
- [GraphBolt][PyG] Add `SampledSubgraph.to_pyg`.
- `import dgl` automatically import graphbolt HOT 2
- DistDGL v2.4 Training Error when num_samplers>0 HOT 3
- [UnitTest] AttributeError: module 'numpy' has no attribute 'ComplexWarning' HOT 6
- [Graphbolt][Cleanup] Remove old code after seeds refactor
- [DataLoader] Dataloader import problem for DGL 2.4 HOT 12
- ResourceWarning shows up when doing multigpu graphbolt example HOT 3
- Warning: expandable_segments not supported on this platform
- [Dist] partition_graph crash if no etyped edges or ntyped nodes are available
- [Graphbolt][Dataset] IGB-HOM dataset wrong number of edges HOT 2
- [GraphBolt][CUDA] Eliminate synchronization in link prediction preprocessing.
- itemsampler using graphbolt ondiskdataset doesn't work with link prediction HOT 8
- update dgl to cuda 12.4 pytorch 2.4.x got error HOT 1
- update dgl to cuda 12.4 pytorch 2.4.x got error "FileNotFoundError: Cannot find DGL C++ sparse library at /opt/conda/envs/torch124/lib/python3.11/site-packages/dgl/dgl_sparse/libdgl_sparse_pytorch_2.4.0.post301.so" HOT 1
- [Dist] check whether dist partition pipeline works with few num_nodes/edges HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dgl.