大数据集, paper100M或者MAG240M. 看refresh的表格.
先试试yelp ,node是reddit3倍. Yelp [40,20] bs =1024大概是7539mb, 整张图放进去都超不过16GB.
换了AmazonProducts 1,598,960节点, 是yelp的2倍. 这个数据集有问题.
https://ogb.stanford.edu/docs/nodeprop/
单个GPU 的消耗内存是多少? 多少个nano batch会消耗完? 速度是多少?
ogbn- product 2,449,029个节点, yelp的3倍. 47class,终于oom了.
batch_size | Num of neighbors | Memory (mb) |
---|---|---|
1024*20 | [100, 20] | oom |
1024*18 | [100, 20] | 15398 |
直接特征全放上去也才936MB. label只有20MB.edgeindex比较大, 2000mb.
57g总共. train_loader. subgraph_loader , quiver_sampler 会导致https://discuss.pytorch.org/t/unable-to-move-model-to-cuda/56390 但是单独quiver sampler 和单独 train_loader + subgraph_loader都不会. 因为cuda0上有东西.
pyg-team/pytorch_geometric#7108
epoch 50.4s,(15,10,5) ,hidden-layer feature dimensionality 256, and mini-batch size 1024
labels有 424.000000 MB,而且要搬移很久
snap-stanford/ogb#425 Most likely because PyTorch did not support the tensor with such a large size.
edge_index = edge_index[:, edge_mask]
就是取第二维度根据mask来取值. https://stackoverflow.com/questions/59344751/is-there-any-diffrence-between-index-select-and-tensorsequence-in-pytorch查看.
注意tensor(0) 和tensor(0) 会被set认为是不同的.
torch.allclose 来测试两个tensor是否一样
注意OGB_MAG是个异构图. 可以用pytorch_geometric/benchmark/loader/neighbor_loader.py.
用 AttributedGraphDataset. mag. 试试. 可以给pyg提pr examples.
mag, y = data.y.to(rank), 有22G , 非常大. x没有train_mask, 也没有idx, AttributeError: 'GlobalStorage' object has no attribute 'train_idx' pyg-team/pytorch_geometric#7139
解决方法是 pyg-team/pytorch_geometric#7139 (comment)
train index 有1,207,179个node , product train_idx torch.Size([196615])就几秒钟.
9:55 开始初始化, neighborsampler初始化很慢, 为什么?? 会先把所有的都采样吗? 应该不会, 10:06 , 初始化完毕. 大概11分钟.
会执行所有的colltefn吗? or do collet fn when iterate it
batchsize =1 会初始化的更慢吗? 初始化了4分钟还没好.