这是一个基于Alphazero的神经网络模型,写成了Hex棋的形式,关于Hex棋的规则可以查看计算机博弈网。
以下为azalea的开源链接:
首先,听从前人建议,这个代码在win下跑会出现棋盘乱码,于是我决定在Ubuntu下跑,有关我自己的Ubuntu,是21.10版本,基本上算是最新版本。本人是第一次接触神经网络模型,在期间踩了许多坑,同时也为此做了大量的功课。第二次写文章,以记录自己成长经历,如有不当请指正。
以下为我自己在此方向做过的功课准备:
然后开始了漫长的环境配置,也是我主要想要记录的
首先在Ubuntu环境下安装虚拟环境,这里是我踩坑最严重的地方,开始时候根据开源代码中的readme,手动安装了符合版本的python3.6及pytorch0.4,然后又pip install 了azalea,然后按照他的步骤启动发现报错。
这里我比较奇怪的是azalea是来自我的镜像源,并不是项目,想着理所当然会用不了,至于为什么镜像源中会有azalea我不清楚原因,在网上找有关azalea库也没结果。
后来经过参考yolov5,其在项目中有一个 requirements.txt,在pycharm下提示安装相应的环境,于是我在azalea中寻找,发现没有。(这里我反复尝试自己装环境,属实踩坑了)
在友人的指点下,发现项目文档中有environment.yml文件,同时了解到,进入该目录下建立虚拟环境会自动调取environment中的环境配置,这里我才发现,他准备了两个environment文件,cpu版本与cuda版本。因为当时手头只有一台amd的小新(划重点amd,后面出问题了),所以装了cpu版本。这里environment.yml,后来我才了解到该文件由conda导出,其目的就是完整迁移虚拟环境,这里属实是因为我小白了。
紧接着,经过友人知道,又了解到项目文件中的setup,应该是安装完环境首先需要做的,通过
python setup.py build
python setup.py install
安装模型的环境,至此,模型环境的搭建应该完成。但我这里又出现了问题,问题原因上面以及描述,大概是cpu的问题,于是回去使用工作电脑(搭载RTX2070 I7 10750H)重新安装环境。发现这样的报错消失,因为过程中没有截图,以后有机会记录。
然后在这里我又犯了一个大错
nvidia-smi
天真的以为显卡驱动命令显示出的cuda版本是我自己安装的,实际上这个cuda是最高支持cuda版本。
下面是我在win下的显卡驱动,是511版本,支持的11.6版本cuda,与我在linux下的略有不同为510.54版本,但支持的最高也是11.6的cuda
于是我在linux下根据自己的显卡驱动版本,安装了cuda11.6 更新2与cudnn8.5.0, 以支持模型的运行。这里遇到的问题是英伟达的官网上只有针对于Ubuntu20.04的cuda与cudnn,但实际上我的系统是21.10,实测并没有什么实际的影响,听搞深度学习的友人说可能只会造成cuda运行不稳定,但我这里并没有出现类似的情况。
(76条消息) Ubuntu下CUDA的安装及配置(run方式)_花花少年的博客-CSDN博客_ubuntu安装cudahttps://blog.csdn.net/m0_37605642/article/details/114059682 然后进入azalea目录,进入虚拟环境,重新运行azalea,这时候发现pytorch报错,经过查找发现是pytorch与cuda版本不对应的关系,我自己估计可能是由于该environment.yml文件的pytorch为1.0.1版本,而我自己的cuda与cudnn均为最新版本,于是我在已经安装了pytorch的虚拟环境下重新覆盖安装了配套cuda11.3的pytorch,发现问题解决。
https://github-com.translate.goog/pytorch/pytorch/issues/17334?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CNhttps://github-com.translate.goog/pytorch/pytorch/issues/17334?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CNhttps://www.cnpython.com/qa/1400332
https://www.cnpython.com/qa/1400332
重新运行,发现模型报错,经查找发现由于tensor训练不连续,解决办法是在虚拟环境下的带 tensor.view()的引用前加上coutiguous(),变为tensor.coutiguous().view()
解决后模型运行成功
用pycharm重新配置,依然没有问题