ModuleNotFoundError: No module named ‘Multiscaledeformableattention‘

 在实现DINO Detection方法时,我们可能会遇到以上问题。因为在DeformableAttention模块,为了加速,需要自己去编译这个模块。

如果你的环境变量中能够找到cuda路径,使用正确的torch版本和cuda版本的话,这个问题很容易解决。(ps:一般情况下,cuda会安装在/usr/local文件夹下,但是很多情况下,虽然cuda可以使用,但是你可能就是无法找到cuda路径)

但是,如果你在一个集群中,可能找不到cuda路径,那么编译起来就困难多了。

# 找cuda环境
nvcc -V

whereis cuda

我在集群中来编译这个模块,编译源文件:https://github.com/IDEA-Research/DINO/tree/main/models/dino/ops

首先想到的是,通过在非集群服务器中,配置与集群服务器相同的python环境和cuda环境;

编译完成之后,把生成的库文件拷贝过去(路径:./envs/python39/lib/python3.9/site-packages):

把生成的info文件也拷贝过去: 

 

这时,通过conda list,可以看到已经安装了这个库:

 但是,呀,但是,实际使用时:

 那么接下来,尝试用easy_install egg文件来安装,因为在另一个服务器已经生成了这个文件(在dist文件夹下),拷贝过去,然后安装:

easy_install MultiScaleDeformableAttention-1.0-py3.9-linux-x86_64.egg

安装的时候遇到问题:

 经过研究,这是setuptools版本的问题,升级到最新版(67),当前问题解决,出现另一个问题:

这个问题查了半天,无法解决,仔细想还是版本问题,所以就盲试更改版本,发现以下版本解决问题:

pip install setuptools==40

再次运行安装,终于安装成功:

 但是,在实际运行时确发现另一个bug:

 这个库在网上没有找到,所以想到原来我们用来编译的服务器上应该有,搜索之后找到了,然后将它放在了与egg文件相同的目录下,即./envs/python39/lib/python3.9/site-packages对应的文件夹下,但是测试发现系统并没有直接去这个目录下找这个库文件,还是提示找不到。思考是,在源服务器编译时,这个依赖库的路径写死了,写到了so中,还是无法解决问题。

-------------------------------------------------------------------

痛定思痛,决定看看没有root权限,来安装cuda,根据自己torch安装的版本,确定cuda版本,去官网下载run file,然后安装过程中,不选择驱动安装,设置自己的路径(包括cuda-toolkit路径和lib路径),进行安装。可参考:https://blog.csdn.net/u013602059/article/details/121225915

这样cuda是可以安装好的。之后,需要写run.sh文件:

export CUDA_HOME="/xx/./cuda/"
export TORCH_CUDA_ARCH_LIST="8.0"
cd ./models/dino/ops
python setup.py install

这里需要注意:TORCH_CUDA_ARCH_LIST的值与算力有关,TITAN服务器,可以设置8.0,如果时Tesla V100,应该是7.0,否则即使能够编译成功,会报如下错误:

 并且,训练过程完全无效。。。

这里提供算力查询网址:https://developer.nvidia.com/cuda-gpus#compute

 

 

按照自己的服务器GPU硬件条件 去设置就行。

再然后,sbatch run.sh,提交运行,发现能够正确安装,可喜可贺。

并且,最关键的是,自己的代码能够跑起来了。

总结:整个过程,虽然前面浪费了很多时间,但是还是了解了很多工具。 遇到问题一步一步解决。

### 回答1: 这个错误提示是说找不到名为'multiscaledeformableattention'的模块。可能是因为你的代码中引用了这个模块,但是你没有安装或者导入这个模块。你需要检查一下你的代码和环境,确保这个模块已经正确安装或者导入了。 ### 回答2: 这个错误是Python编程中出现的常见错误之一。它的意思是在引用“multiscaledeformableattention”这个模块时,Python无法找到这个模块。因此,我们需要寻找解决这个错误的方法。 在处理这个错误的过程中,需要考虑以下几个方面: 1. 确认模块名称是否正确 首先,我们需要确认使用的模块名称是否正确。如果模块名称错误,Python将无法找到该模块并引发“ModuleNotFoundError”错误。因此,我们需要确认我们使用的模块名称是否正确。 2. 确认模块是否已经安装 其次,我们需要确认是否已经安装了“multiscaledeformableattention”模块。如果没有安装,我们需要使用“pip install”命令来安装该模块。如果已经安装了该模块,我们需要确认安装路径是否正确。 3. 确认系统环境变量是否正确 最后,我们需要确认系统环境变量是否正确。如果环境变量设置不正确,Python将无法找到该模块。因此,我们需要确认系统环境变量是否包含正确的路径信息。 综上所述,要解决“ModuleNotFoundError: No module named 'multiscaledeformableattention'”错误,我们需要确认模块名称是否正确、确认模块是否已经安装和确认系统环境变量是否正确。同时,要注意代码编写和引用的正确性。通过以上步骤,我们可以成功解决这个错误。 ### 回答3: 这个错误提示告诉我们,在当前的Python环境中找不到名为'multiscaledeformableattention'的模块。当我们在Python代码中导入某个模块时,Python会去搜索一些已知的路径,如标准库目录、Python安装目录、当前工作目录等,在这些路径中找到对应的模块才能正常导入。但是,如果我们想导入的模块并不在这些路径中,就会出现这样的错误。 那么,怎么解决这个错误呢? 首先,我们需要确认 'multiscaledeformableattention' 是否是正确拼写的,并且确保这个模块存在于我们的代码中或者已经在系统中被安装了。如果是自己编写的模块,则需要确认模块文件所在路径是否正确。 其次,我们需要检查我们所使用的Python版本,有些模块只支持特定版本的Python。如果我们的Python版本不兼容该模块,则需要升级或者降级Python版本。 最后,我们还可以尝试使用pip命令在命令行中安装该模块。在命令行中输入 pip install 模块名,pip会自动下载并安装该模块,如果一切正常,则我们可以在Python代码中正常导入该模块。 总之,ModuleNotFoundError是导入模块时常见的错误,我们需要仔细检查模块名和路径,确认Python版本是否兼容,以及尝试使用pip安装模块等几种方法来解决该错误。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值