Faiss 问题之 error 710 device-side assert triggered
问题: Faiss assertion 'err == cudaSuccess' failed in void __cdecl faiss::gpu::StandardGpuResourcesImpl::deallocMemory(int,void *) at D:\bld\faiss-split_1685360948441\work\faiss\gpu\StandardGpuResources.
问题描述
Faiss assertion ‘err == cudaSuccess’ failed in void __cdecl faiss::gpu::StandardGpuResourcesImpl::deallocMemory(int,void *) at D:\bld\faiss-split_1685360948441\work\faiss\gpu\StandardGpuResources.cpp:518; details: Failed to cudaFree pointer 0000001B08ABAA00 (error 710 device-side assert triggered)
这个问题的大概意思就是在deallocMemory方法失败了。
解决思路
1、寻找网上的解决办法
但是根据这个报错原因网上只找到了一个相似的问题,https://zhuanlan.zhihu.com/p/506945537,但是博主没有解决,只是改成使用cpu进行训练,CPU训练实在是慢,一个epoch要用一小时48分钟,忍受不了。
2、根据经验在gpu运行出现错误时,尝试使用cpu运行,因为cpu的检查更加仔细,往往可以检查出具体报错。
该方法在之前的某次其他的模型使用中,确实找到了具体问题,但这次并没有,反而是在cpu上正常运行了,这让我又一度陷入了坑中。
3、新思路,怀疑应该是gpu的问题,或者是cuda、pytorch、gpu驱动、faiss的版本问题
我用的是cuda11.7、pytorch1.13.1、gpu驱动546.17、faiss1.7.2(win版本)
尝试了faiss1.7.4但是还是没有解决,爆出相同的问题,应该不是版本问题了。
4、重新屡思路
我的代码是从github上下载的,跑sklean中自带的数据集没有任何问题,能跑,但是换上我自己的数据集就不能跑了(格式都相同),怀疑是自己的数据集问题。
因此找来了其他的模型相同的数据和格式、相同的环境(多GPU),也是可以跑的。那到底是什么问题呢???
5、突发奇想,在搜索Faiss问题的时候,发现基本上出现问题的都是多GPU,会不会是多的GPU的问题,试一下。
果然,改成单GPU后,问题消失,正常运行!!!!(一天的问题解决档到此结束,哈哈哈哈哈)
注:生活小记,如有不妥,还望高人指点。
更多推荐
所有评论(0)