本文记录下在集群环境下使用MMDetection的内容。
环境简介:所用集群设备为本地集群,具有管理节点和计算节点,且管理和计算在不同的主机上,作为用户,没有超级管理员权限。
MMdetection源码下载点击进入
这里主要记录下环境配置,其实在官网教程里有具体的配置流程,但是这里主要记录下在当前设备情况下的环境配置问题,便于后来借鉴。
官方的配置文档,可以点击该链接
这里主要记录下不同的地方,由于在本集群中,仅有管理节点可以联网,所以在创建环境或者下载安装包过程中,主要在管理节点进行。但是在源码编译过程中,需要切换到计算节点进行。
环境配置细节
官网中:
conda install pytorch torchvision -c pytorch
实际配置:
这个安装还是在管理节点切换到对应环境下,然后运行下面的命令。由于管理节点一般为多核CPU,但运算过程中一般需要GPU,所以需要现装GPU 可使用下面的命令,主要借鉴Pytorch官网的命令。
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
命令运行好后,切换到 torch命令下,判断环境是否正常:
torch.cuda.is_available()
下面再有问题的就是编译过程
官网命令:
pip install -v -e .
这个命令需要一些依赖包,即它会主动调用源码下的 requirements.txt ,如果所处环境中,没有对应的包,则需要安装包,这时,又会遇到计算节点无法联网的问题,所以在这个命令之前,最好先切换到管理节点,切换到对应的环境下,然后运行下面的命令。
pip install -r requirements.txt
等待安装成功后,再切换到计算节点,切换到对应的环境,在含GPU的节点进行编译,这个过程很快,一般来讲,如果没有报错误,会生成 mmdet 的包。
这个包在官网中说,也可以通过 mim install mmdet 安装,但说实话我没通过这个命令安装成功,应该是所选择的cuda 和 torch版本的问题吧,可能其他版本下面有mmdet,那个官网点击链接如下,压根没发现 mmdet。
样例测试
官网如下:
其中第一条命令,为下载预训练模型:
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
第二条命令为测试命令,但是需要注意,修改配置文件的路径
python demo/image_demo.py demo/demo.jpg ./configs/rtmdet/rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu
但是你会发现,程序当你运行第一条命令时,就会报错:
ModuleNotFoundError: No module named ‘mmdet‘
明显,我们已经在源码编译过程中,使用命令 pip install -v -e . 安装了 mmdet,为什么还是报错?这个需要我们再运行一条命令:
python setup.py install
即将对应的 mmdet 依赖项,加入我们的环境变量中,这样才可以运行。
经过以上之后,再运行测试命令,即可发现输出如下:
通过测试,环境配置成功。当然如果您不是在类似实验硬件条件下,环境配置会更简单,傻瓜操作就行。