adfasss代码复现,模型训练时经常报的一个错误,特别是新建了虚拟环境时:
...in forward
qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
File "/data/conda/envs/cim/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
return forward_call(*input, **kwargs)
File "/data/conda/envs/cim/lib/python3.8/site-packages/torch/nn/modules/linear.py", line 114, in forward
return F.linear(input, self.weight, self.bias)
RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)`
根据日志提示,计算qkv的线性变化就出错了(怎么可能),网上找了资料成功解决,其实代码本身根本没有错!!!
解决方案
unset LD_LIBRARY_PATH
只需简单在Linux环境中 执行这个命令即可解决问题。
unset LD_LIBRARY_PATH命令用于将环境变量 LD_LIBRARY_PATH 的值清空或取消设置。在Linux系统中,LD_LIBRARY_PATH 是用来指定动态链接库(shared library)的搜索路径的环境变量。如果这个变量被设置了,系统在运行时会根据其所包含的路径来搜索动态链接库,以便加载程序运行所需的库文件。
通过执行unset LD_LIBRARY_PATH命令,可以取消对 LD_LIBRARY_PATH 环境变量的设置,从而使系统在运行时不再使用该环境变量指定的路径来搜索动态链接库。这在某些情况下可能有助于解决与动态链接库路径相关的问题,或者使系统返回到默认的动态链接库搜索路径设置。