首页IT科技pytorch segmentation fault(Pytorch训练过程中出现RuntimeError: falseINTERNAL ASSERT FAILED… Couldn‘t open shared file mapping…)

pytorch segmentation fault(Pytorch训练过程中出现RuntimeError: falseINTERNAL ASSERT FAILED… Couldn‘t open shared file mapping…)

时间2025-06-19 06:08:46分类IT科技浏览4923
导读:一句话:换成pytorch1.8。 一、问题描述...

一句话:换成pytorch1.8            。

一            、问题描述

今天跑一个开源的模型跑到第9个epoch时报错            ,如下:

RuntimeError: falseINTERNAL ASSERT FAILED at "..\\aten\\src\\ATen\\MapAllocator.cpp":135, please report a bug to PyTorch. Couldnt 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

即可解决问题

四            、后续

如果问题没有解决            ,到时候再更新

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
新媒体文章采集工具是什么(新媒体文章采集工具)