一句话:换成pytorch1.8。
一、问题描述
今天跑一个开源的模型跑到第9个epoch时报错,如下:
RuntimeError: falseINTERNAL ASSERT FAILED at "..\\aten\\src\\ATen\\MapAllocator.cpp":135,
please report a bug to PyTorch.
Couldn't open shared file mapping: <000002043F0A2562>, error code: <1455>
二、寻找解决方案
遂搜索,同类问题比较少,有一个博客讲到是显卡性能问题。于是我尝试大幅降低batch_size和works,又跑了一遍,这次第3个epoch就报了同样的错误(我跑一个epoch要一小时)。
这时我就奇怪了,降低了对配置的要求(顺便提一下我用的3050Ti),报错来的更快了,这怎么解释?
后来我又到PyTorch的github主页上看有没有人提交过相似的issue,确实有一个:https://github.com/pytorch/pytorch/issues/67864,讨论的时间比较久。
原来这个问题一般在pytorch1.10版本中出现(同时在更高的版本中不保证不出现),如果将版本回滚到1.8,就不会出现。由于这个问题的出现太随机了,没有规律可循,这帮人一直没有能够得到一个稳定的复现,所以不好修。
因此现阶段的一个可行方案就是将pytorch的版本回到1.8。
三、解决问题
这里我记录了我的解决过程,其实就是安装个pytorch1.8。
(1)通过conda创建一个新的环境,我使用了python3.6
conda activate base #一定要先回到base环境下
conda create --name [你的环境名] python=3.6
conda activate [你的环境名]
(2)【非必要】由于在包略多的环境中conda的索引时间太长了,体验极差,solving environment要转个一小时,我推荐使用mamba替换conda
conda install mamba
安装成功后可以用mamba替换conda,比如更新conda时:
mamba update conda
(3)【可能遇到】我install中出现PackagesNotFoundError问题,参考了https://blog.csdn.net/weixin_45552562/article/details/109668589 后解决
(4)安装pytorch
首先在pytorch官网中寻找pytorch1.8的安装命令。在我这个时间点1.8的连接还挂在首页作为一个长期维护版本,之后可能需要在历史版本中找到1.8。
注意要安装GPU版本以及注意cuda版本的匹配。这里有一个小问题,就是通过nvidia-smi和nvcc -v查到的cuda版本可能不一样,当时安装的时候我还没注意过这个问题,具体见:https://blog.csdn.net/sophicchen/article/details/120782209。当时我在nvidia-smi中查到的cuda版本为11.6,而pytorch1.8没有匹配cuda11.6,只有10.2和11.1,于是我只能装11.1的版本试试(后来证明可用)。我使用如下命令装pytorch:
mamba install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch-lts -c conda-forge
这里我失败了3次,因为我用的宿舍网,网络环境好的话应该一次就可以成功。
(4)验证安装是否成功
conda env list
看到pytorch位列其中,接下来看看pytorch是否能够调用gpu
打开pycharm,随便开一个项目,将项目环境切换到你刚创建的新环境。
有可能pycharm识别不到你刚创建的环境,这时在解释器设置中手动添加相应的python.exe即可。
切换环境后,在pycharm下方的控制台中输入
import torch #如果这里有报错,下方有解决方案
import torchvision
torch.cuda.is_available()
得到Ture即为成功,也可以用
torch.cuda.get_device_name(0)
查看显卡类型。
(5)【可能遇到】import torch报错
上面提到有可能在import torch时报错,报错信息如下
ValueError: module functions cannot set METH_CLASS or METH_STATIC
这是python3.6版本中的一个bug,具体见https://github.com/pytorch/pytorch/issues/2731
只要在终端(注意要在你刚创建的环境下)中
pip install numpy -I
即可解决问题文章来源:https://www.toymoban.com/news/detail-420032.html
四、后续
如果问题没有解决,到时候再更新文章来源地址https://www.toymoban.com/news/detail-420032.html
到了这里,关于Pytorch训练过程中出现RuntimeError: falseINTERNAL ASSERT FAILED... Couldn‘t open shared file mapping...的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!