U-Mamba复现中遇到的问题及解决方法
1. 环境安装
1.1. 出错步骤1:创建umamba虚拟环境出错
解决方案在我的另一篇文章中
1.2. 出错步骤2:安装pytorch出错
1.3. 出错步骤3:安装casual-conv1d出错
错误1:
首先尝试了第一种解决方法:使用git clone直接将causal-conv1d clone过来
但是出错:(后来发现前面加上一个sudo就行)
后尝试第二种解决方法:直接从github上将项目下载到本地,再将项目发到服务器上再进行安装,但是用WinScp发文件的时候告诉我权限不够了…遂放弃
第三种解决方法:
conda install -c "nvidia/label/cuda-11.7.0" cuda-nvcc//这里是根据自己的cuda版本进行安装的
conda install packaging
pip install -i https://pypi.mirrors.ustc.edu.cn/simple causal-conv1d==1.1.1//这里用中科大的源,因为我自己用清华源的时候会Timeout,但每个人情况可能不同哪个能用就用哪个
成功安装(Building wheel for mamba_ssm的时间会比较长,安装mamba_ssm的时等待时间也要等较长时间)
- 注意:安装的mamba_ssm的版本一定要和casual-conv1d的版本相同,
要安装mamba_ssm==1.1.1
版本,否则后面运行时会报错(另一定要注意是安装mamba_ssm不是mamba!!!)
2. 运行:
2.1. 数据集预处理
nnUnet有严格的数据集结构要求,按照以下步骤制作自定义数据集:
-
在umamba下有一个文件夹data,初始只包含了
nnUNet_raw
文件夹,其中包含了作者在文章中使用的四个数据集(只有数据集名字,其中并没有图像)
-
从作者提供的网盘中下载数据集,这里使用的是Dataset_703,下载后包含了以下几个文件:
-
在data文件夹下创建三个文件夹,分别为
nnUNet_results、nnUNet_raw、nnUNet_preprocessed
-
配置环境变量
export nnUNet_results="/app/data/nnUNet_results"
export nnUNet_preprocessed="/app/data/nnUNet_raw"
export nnUNet_raw="/app/data/nnUNet_raw"
- 文章作者提供的数据集已经经过初步的处理的,所以不需要进行数据转换,只需要进行预处理即可:
nnUNetv2_plan_and_preprocess -d 703(这里根据自己的数据集名称进行修改DATASET_ID) -verify_dataset_integrity -c 2d(如果是3d图像,修改为3d即可)
开始处理:
2.2. 训练
nnUNet_n_proc_DA=0 CUDA_VISIBLE_DEVICES=0 nnUNetv2_train Dataset703_NeurIPSCell 2d all -tr nnUNetTrainerUMambaEnc -device cuda
2.2.1. 问题一
在docker容器中运行的,首先报错:
ImportError: libGL.so.1: cannot open shared object file: No such file or dir
解决方法:需要更新apt,安装libgl1-mesa-glx
apt update
apt install libgl1-mesa-glx
2.2.2. 问题二
在docker容器中运行老是能碰到奇奇怪怪的问题,这次是:RuntimeError: One or more background workers are no longer alive. Exiting. Please check the print statements above for the actual error message
最后在nnUnet的issues中找到了解决方法:https://github.com/MIC-DKFZ/nnUNet/issues/1343
nnUNet_n_proc_DA=0 CUDA_VISIBLE_DEVICES=0 nnUNetv2_train Dataset703_NeurIPSCell 2d all -tr nnUNetTrainerUMambaEnc -device cuda
2.2.3. 问题三
ausal_conv1d_fwd(): incompatible function arguments. The following argument types are supported:
1.(arg0: torch.Tensor, arg1: torch.Tensor, arg2: Optional[torch.Tensor], arg3: Optional[torch.Tensor], arg4: bool) -> torch.Tensor
解决方法:将mamba-ssm版本换成1.1.1版本,pip install mamba-ssm=1.1.1
开始训练啦:
显存占用大约为15G:
3. 测试
待更新