RUCAIBox / RecBole-GNN

Efficient and extensible GNNs enhanced recommender library based on RecBole.
MIT License
167 stars 37 forks source link

FEA: add XSimGCL #72

Closed downeykking closed 10 months ago

downeykking commented 10 months ago

Add GeneralRecommender XSimGCL to RecBole-GNN.

hyp1231 commented 10 months ago

Awesome! Thanks for the great contribution! :)

downeykking commented 10 months ago

workfile中这句可能存在问题:

pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html

这个是pyg安装的一个bug,它会从其他编译版本找最新的库,从日志中可以看到它安装了

torch-scatter==2.1.2 torch-sparse==0.6.18 torch-cluster==1.6.0 torch-spline-conv==1.2.1

但是参照https://data.pyg.org/whl/torch-1.11.0+cpu.html,torch-1.11.0-cpu并没有这些高版本的包。 可以修改为

pip install torch-scatter==2.0.9 torch-sparse==0.6.15 torch-cluster==1.6.3 torch-spline-conv==1.2.2 torch-geometric -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html

还有地方会出错,dgl最新版会丢弃低版本的pytorch,我找到了个最近的支持1.11.0的版本 安装dgl处需要修改为

pip install dgl==0.9.1

按照这个修改后,我本地环境测试可以过(其它包都是按照workfile中的版本,除了libstdc++.so.6)

github测试从日志来看好像是libstdc++.so.6存在问题:

/usr/share/miniconda/envs/test/lib/python3.9/site-packages/recbole/utils/utils.py:22: in <module>
    import torch
/usr/share/miniconda/envs/test/lib/python3.9/site-packages/torch/__init__.py:199: in <module>
    from torch._C import *  # noqa: F403
E   ImportError: libstdc++.so.6: cannot open shared object file: No such file or directory

不知道是不是因为workfile中的这两句

sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
sudo ln -s /home/linuxbrew/.linuxbrew/Cellar/gcc/12.2.0/lib/gcc/12/libstdc++.so.6.0.30 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
downeykking commented 10 months ago

pr里添加了新的commit解决CI 问题,但是发现好像要先解决CI 的问题才能把代码合并 ~_~

hyp1231 commented 10 months ago

非常感谢!!看起来你的解决方案非常好,应该就是这个问题。

我今天也开了个 branch 本来打算把 CLI 的 bug 给修了。原计划是把 torch 直接搞成 2.0.0,这样 pyg 也好装,numpy 老版本的 bug 也没有。结果 block 在 RecBole 的 evaluator 调用一个废弃掉的 numpy 的 attribute np.float 上了。。。明天空下来时我彻底解决下 CLI 问题然后把这两个 PR 都 merge 掉,再次感谢!!

downeykking commented 10 months ago

非常感谢!!看起来你的解决方案非常好,应该就是这个问题。

我今天也开了个 branch 本来打算把 CLI 的 bug 给修了。原计划是把 torch 直接搞成 2.0.0,这样 pyg 也好装,numpy 老版本的 bug 也没有。结果 block 在 RecBole 的 evaluator 调用一个废弃掉的 numpy 的 attribute np.float 上了。。。明天空下来时我彻底解决下 CLI 问题然后把这两个 PR 都 merge 掉,再次感谢!!

好的!RecBole-GNN很好用hhh,所以也想多做贡献;如果解决了CI问题的话,我之前用RecBole-GNN的时候也发现了一些其它的RecBole1.1.1带来的问题,我的想法是开个compatibility.py,在config设置那里兼容一下,到时候也会提一下pr

RecBole好像停在1.1.1一年了,有考虑发新版嘛 RecBole-GNN有些问题是和RecBole耦合的,感觉可以在RecBole升级之后RecBole-GNN也升级个2.0

hyp1231 commented 10 months ago

hhhh 感谢感谢!!尝试解决了一下 CI 问题,看看会不会好。确实 RecBole 太久没升级了,最近和团队沟通一下看看有没有发版计划。

downeykking commented 10 months ago

hhhh 感谢感谢!!尝试解决了一下 CI 问题,看看会不会好。确实 RecBole 太久没升级了,最近和团队沟通一下看看有没有发版计划。

老哥不好意思,我那个commit解决CI bugs里面固定了pyg库的版本是对应当时的pytorch1.11.0的,现在合并的版本是pytorch2.0.0,因此pyg用我固定的版本的话就是不匹配的了,到时候可能github merge的时候还会存在问题。我刚去查了一下pytorch2.0.0对应的是这些版本,老哥直接在python-package.yml里面改一下?

pip install dgl==1.1.2
pip install torch-scatter==2.1.2 torch-sparse==0.6.18 torch-cluster==1.6.3 torch-spline-conv==1.2.2 torch-geometric -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html
hyp1231 commented 10 months ago

hhhh 感谢感谢!!尝试解决了一下 CI 问题,看看会不会好。确实 RecBole 太久没升级了,最近和团队沟通一下看看有没有发版计划。

老哥不好意思,我那个commit解决CI bugs里面固定了pyg库的版本是对应当时的pytorch1.11.0的,现在合并的版本是pytorch2.0.0,因此pyg用我固定的版本的话就是不匹配的了,到时候可能github merge的时候还会存在问题。我刚去查了一下pytorch2.0.0对应的是这些版本,老哥直接在python-package.yml里面改一下?

pip install dgl==1.1.2
pip install torch-scatter==2.1.2 torch-sparse==0.6.18 torch-cluster==1.6.3 torch-spline-conv==1.2.2 torch-geometric -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html

嗯嗯刚刚也发现了hhh,已经改掉且过 CI 了!目前 config 也沿用了你的写法,再次感谢🍺

downeykking commented 10 months ago

hhhh 感谢感谢!!尝试解决了一下 CI 问题,看看会不会好。确实 RecBole 太久没升级了,最近和团队沟通一下看看有没有发版计划。

老哥不好意思,我那个commit解决CI bugs里面固定了pyg库的版本是对应当时的pytorch1.11.0的,现在合并的版本是pytorch2.0.0,因此pyg用我固定的版本的话就是不匹配的了,到时候可能github merge的时候还会存在问题。我刚去查了一下pytorch2.0.0对应的是这些版本,老哥直接在python-package.yml里面改一下?

pip install dgl==1.1.2
pip install torch-scatter==2.1.2 torch-sparse==0.6.18 torch-cluster==1.6.3 torch-spline-conv==1.2.2 torch-geometric -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html

嗯嗯刚刚也发现了hhh,已经改掉且过 CI 了!目前 config 也沿用了你的写法,再次感谢🍺

hhh不客气~ 感觉可以固定住pyg和dgl的版本会比较好 pyg有个bug就是直接安装sparse库这些的话它会默认去找最新pytorch支持的最新的版本,但是可能在我们自己pytorch的版本里面sparse这些没有这么高版本的,然后就编译不了了 这是相关的一个issue https://github.com/pyg-team/pytorch_geometric/issues/5015 还有dgl经常发布了一个新版本就丢弃了对旧pytorch的支持了 :(

hyp1231 commented 10 months ago

hhhh 感谢感谢!!尝试解决了一下 CI 问题,看看会不会好。确实 RecBole 太久没升级了,最近和团队沟通一下看看有没有发版计划。

老哥不好意思,我那个commit解决CI bugs里面固定了pyg库的版本是对应当时的pytorch1.11.0的,现在合并的版本是pytorch2.0.0,因此pyg用我固定的版本的话就是不匹配的了,到时候可能github merge的时候还会存在问题。我刚去查了一下pytorch2.0.0对应的是这些版本,老哥直接在python-package.yml里面改一下?

pip install dgl==1.1.2
pip install torch-scatter==2.1.2 torch-sparse==0.6.18 torch-cluster==1.6.3 torch-spline-conv==1.2.2 torch-geometric -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html

嗯嗯刚刚也发现了hhh,已经改掉且过 CI 了!目前 config 也沿用了你的写法,再次感谢🍺

hhh不客气~ 感觉可以固定住pyg和dgl的版本会比较好 pyg有个bug就是直接安装sparse库这些的话它会默认去找最新pytorch支持的最新的版本,但是可能在我们自己pytorch的版本里面sparse这些没有这么高版本的,然后就编译不了了 这是相关的一个issue pyg-team/pytorch_geometric#5015 还有dgl经常发布了一个新版本就丢弃了对旧pytorch的支持了 :(

原来是这样子!很有道理,版本问题确实好难搞 😭 之前 CI 里面 torch, pyg, dgl 还算稳定,结果 numpy 和 recbole 各崩一次。之后要是再崩我就找个时间把各个重要库的版本全给固定了。。