近期一直在使用nnunet分割框架,但是有多台设备需要部署,于是乎在部署时发现这样一个问题,同样的虚拟环境在不同的linux服务器里部署,有的能够正常运行框架,有的在运行nnUNet_convert_decathlon_task或者预处理nnUNet_plan_and_preprocess的时候,命令敲完,一秒就跳出Segmentation error(core dumped)的报错,然后终止运行,查了网上很多资料,也没有能解决问题的。
通过对段错误的定位,我发现实在转换文件与预处理时的import torch这个流程卡住了,大概可以确定是因为torch和某些库可能有冲突,是个比较奇怪的问题,解决方案经过我研究,也比较简单:如果是nnUNet_convert_decathlon_task报错,那么进入到/nnunet/experiment_planning/nnUNet_convert_decathlon_task.py中,在代码的最前面,导入库前无脑加上import torch即可;若是预处理报错,那就去/nnunet/experiment_planning/nnUNet_plan_and_preprocess.py前import torch,段错误的报错就可解决。
如果还不能解决,则考虑你的torch版本是否与cuda版本对应,强烈建议采用1.12.0一下的torch,会更加稳定一些。/
总结:这是一个库冲突的问题,只需要在报错的代码最开始先import torch,再导入其他库,即可解决此类冲突问题。