项目文件夹

文件
2019-11-01 17:28:18 +08:00

43 行
1.6 KiB
ReStructuredText

FAQ
===
Troubleshooting
----------------
Deep Graph Library (DGL) is still in its alpha stage, so expect some trial and error. Keep in mind that
DGL is a framework atop other frameworks, e.g., PyTorch, MXNet, so it is important
to figure out whether a bug is due to DGL or the backend framework. For example,
DGL will usually complain and throw a ``DGLError`` if anything goes wrong. If you
are pretty confident that it is a bug, feel free to raise an issue.
Out-of-memory
-------------
Graph can be very large and training on graph may cause out of memory (OOM) errors. There are several
tips to check when you get an OOM error.
* Try to avoid propagating node features to edges. Number of edges are usually
much larger than number of nodes. Try to use out built-in functions whenever
it is possible.
* Look out for cyclic references due to user-defined functions. Usually we recommend
using global function or module class for the user-defined functions. Pay
attention to the variables in function closure. Also, it is usually better to
directly provide the UDFs in the message passing APIs rather than register them:
::
# define a message function
def mfunc(edges): return edges.data['x']
# better as the graph `mfunc` does not hold a reference to `mfunc`
g.send(some_edges, mfunc)
# the graph hold a reference to `mfunc` so as all the variables in its closure
g.register(mfunc)
g.send(some_edges)
* If your scenario does not require autograd, you can use ``inplace=True`` flag
in the message passing APIs. This will update features inplacely that might
save memory.