【已解决】RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm( handle, opa, o

前情提要

        今天来复现一下WaterKnn,这个项目的话遇到的问题不算很多,所以就长话短说。

        项目地址:https://github.com/adiyoss/WatermarkNN

        项目简介:https://medium.com/@carstenbaum/the-ubiquity-of-machine-learning-and-its-challenges-to-intellectual-property-dc38e7d66b05

        论文地址:https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-adi.pdf

        环境配置:python3.7,cuda11.8(此处需11.6即可),GPU3090,torch1.13,其他未尽事宜请在项目地址中自查。

问题描述

        再复现上述项目的时候出现了以下错误,包括且不限于

        AssertionError: Error: no checkpoint found!

        torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 2; 1.95 GiB total capacity; 145.54 MiB already allocated; 7.31 MiB free; 160.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CON

        RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)`,

原因分析及解决

        AssertionError: Error: no checkpoint found!

        这是一个断言错误,就是checkpoint找不到了 ,那说明没有这个呗,但是我在项目和项目描述看了很多都没找到checkpoint/model.t7,但是我上面没有找到,那就自己训练一个吧。

        torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 2; 1.95 GiB total capacity; 145.54 MiB already allocated; 7.31 MiB free; 160.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CON

        这个原因还是很明显的,就是因为显存溢出了,我本机有亮机卡,所以会把亮机卡也当作gpu资源进行分布式训练,他显存很小啊,所以果断报错。

        解决办法也很简单,搬到服务器上去训练就可以了。

         RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)`

        RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)`,这个问题看了比较严重,因为都涉及到cuda了,幸运的是找到了两篇相关的内容,分别是:RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm解决_Rox_Lee的博客-CSDN博客今天遇到的问题很奇怪,在相同的虚拟环境下,运行一个Pytorch的程序,在Pycharm中运行正常,但是通过命令行启动就会报上面的错误。而且在另一台服务器上,也是相同的环境,Pytorch版本一致,正常运行,这就导致这个问题更加奇怪。例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据。https://blog.csdn.net/lxb206/article/details/130683772RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE 解决方案之一_cuda_error_invalid_value_Tony的博客-CSDN博客解决方案:RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling cublasSgemm( handle, opa, opb, m, n, k, α, a, lda, b, ldb, β, c, ldc)_cuda_error_invalid_valuehttps://blog.csdn.net/qq_44643484/article/details/131182670        其中在第一个中说是因为是CUBLAS的问题,可以尝试卸载虚拟环境中的CUBLAS相关包试试,但我conda list并未找到这个相关的包,所以不work。

        第二个说是环境变量的原因,这个是很有可能的,因为不同的虚拟环境设置以及最开始安装cuda和cudnn的时候会有设置环境变量的操作,那这样一来,对于多用户使用的服务器来说,有这样的可能性就很大,于是我按照第二篇进行操作,即执行

unset LD_LIBRARY_PATH

        ok,搞定了。【已解决】RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm( handle, opa, o_第1张图片

完结撒花

        其他的部分只需要按照测试和微调即可,但是需要注意的是什么呢?还得在服务器上跑,在本机跑依然会报显存溢出的情况。

        

你可能感兴趣的:(Bugs(程序报错),opencv,人工智能,机器学习,vscode,ide,ubuntu)