美文网首页
如何让DL_Image_Gen在RTX2080Ti上跑起来

如何让DL_Image_Gen在RTX2080Ti上跑起来

作者: conson_wm | 来源:发表于2019-03-04 09:14 被阅读0次

  首先, DL_Image_Gen这个平台是在1080上顺利运行的, 环境如下
os: ubuntu16.04 LTS
Driver: 384.130
CUDA: 9.0.176
CUDNN: 7.0.5
torch:0.4.0

1. CUDA10

环境如下
os: ubuntu18.04 LTS
Driver: 410.78
CUDA: 10.0.130
CUDNN: 7.4.2

  开始的时候, 装torch是直接pip3 install torch, 装上的是1.0.1版本, 这个时候跑RNAN(in DL_Image_Gen)会出现下面的问题

RuntimeError: cuda runtime error (11) : invalid argument at /pytorch/aten/src/THC/THCGeneral.cpp:844

  这个问题出现的原因还是pytorch的版本和CUDA版本对不上的问题, 之前BY在CUDA9.0下面也碰到这个问题, 但不同的是, 虽然同样出现了THCudaCheck FAIL, 但他的代码在出现了这个error之后还是可以顺利运行过去, 我的就不行

  pytorch的论坛和github上, 很多人也都碰到了这个问题, 多数也都是在RTX2080或者2080Ti上, 有建设意见的有两个

https://github.com/1adrianb/face-alignment/issues/123

  这个小姐姐最后的解决方案是pytorch源码安装, 其实源码安装也并不复杂, 但问题是

Makefile:127: recipe for target 'all' failed

  这个坑我过不去, 上面csdn那篇博客上说降级gcc/g++到4.9, 但试了一下gcc/g++的4.9版本没法通过sudo apt-get install直接装, 装4.9,5.5都不好使, 所以这条路断绝了

  另外一个

https://discuss.pytorch.org/t/thcudacheck-fail-file-pytorch-aten-src-thc-thcgeneral-cpp/31788/6

torch.backends.cudnn.benchmark=False
image.png

  我之前确实在程序一开头设置过torch.backends.cudnn.benchmark=False, 但是还是出现了上面说的问题, 后来又用之前没加distiller那个简化版的DL_Image_Gen来试, 还是不行, 发现在solver.py里面, cudnn.benchmark=True, -_-! 改成False之后, Bing! 之前的错误不见了, 但有一个新问题

cublas runtime error: the GPU program failed to execute

  这个问题是在运行torch.matmul()函数的时候出现的

  再搜这个问题, 各种牛鬼蛇神又出来了, 靠谱的是这个

https://discuss.pytorch.org/t/bad-cuda-error-when-using-torch-matmul-with-cuda-10-0/36558

  一句话, 就是要用在Cuda10下编译出来的pytorch, 而直接装上的那个不知道是在什么环境下编译的, 所以又重新在https://pytorch.org/get-started/previous-versions/下了cu100/torch-1.0.0-cp36-cp36m-linux_x86_64.whl, 装上了之后, 就可以顺利运行了

  奇怪的是一点, 就是装了这个版本, 即使是把cudnn.benchmark=True, 也不会再报之前的THCudaCheck FAIL问题了, 很干净, 连在BY那儿出现的虽然FAIL但程序依然可以运行的问题都没有

  ps: 多说一句, DL_ImageGen的dependencies里面有tensorflow, 而tensorflow是没有cuda10下的官方版本的, 要pip3 install tf-nightly-gpu, 如果直接pip3 install tf-gpu的话, 会报错

can’t import “libcublas.so.9.0”

https://medium.com/@cjanze/how-to-install-tensorflow-with-gpu-support-on-ubuntu-18-04-lts-with-cuda-10-nvidia-gpu-312a693744b5

  总结一下, 在CUDA10下, 要把DL_Image_Gen跑起来, 其实关键是要在pytorch官网上, 安装对应CUDA10的那个torch版本, 而cudnn.benchmark=True or False其实并不影响, 下面, 就是要试一下在CUDA9.0的环境下能不能跑起来

2. CUDA9.0

环境如下
os: ubuntu18.04 LTS
Driver: 410.78
CUDA: 9.0.176
CUDNN: 7.0.5

  先完全照之前1080上的配置, 然后下pytorch官网的cu90/torch-0.4.0-cp36-cp36m-linux_x86_64.whl, 看能不能跑起来

  重新回到CUDA9.0之后, 按照在CUDA10.0上的经验, 我们把cudnn.benchmark=False, 并且安装pytorch提供的在CUDA9.0下编译出来的0.4.0版本, 运行RNAN的时候, 没有再报之前的

RuntimeError: cuda runtime error (11) : invalid argument at /pytorch/aten/src/THC/THCGeneral.cpp:844

  但是, 出现了CUDA10上也出现过的问题, 就是在运行torch.matmul()的时候, 出现报错

cublas runtime error : the GPU program failed to execute at /pytorch/aten/src/THC/THCBlas.cu:411

  我又在当前的环境下跑了BY的SRGAN和mini DL_Image_Gen中的c3srcnn, 虽然依然有THCudaCheck FAIL, 但是都可以训练起来

  也就是说, 这个版本的pytorch实际上还是有问题, 只能说支持了一部分的cuda上的操作, 但是torch.matmul()或这torch.mm()这样的操作在cuda上就会有问题

https://discuss.pytorch.org/t/runtimeerror-cublas-runtime-error-the-gpu-program-failed-to-execute-at/11470

https://discuss.pytorch.org/t/cublas-runtime-error/11243/7

  暂时还没有看到有什么解决方案, 所以现在的状态就是, 在CUDA10上, 用上一章的那套配置确定可以跑起来, 但是CUDA9上, 只要碰到torch.matmul()就跑不起来, 并且暂时没看到有好的解决方案

  下一步, 还是先用CUDA10+torch1.0.0(cuda10上没有编的torch0.4.0的版本)跑起来, 就跑在1080上跑的那个训练, 把torch.backends.cudnn.deterministic = True也开上, 然后看训练出来的模型的performance差异多大

相关文章

网友评论

      本文标题:如何让DL_Image_Gen在RTX2080Ti上跑起来

      本文链接:https://www.haomeiwen.com/subject/jtpeuqtx.html