为何有这种需求:
- 服务器上非root账户;
- hanlp以tensorflow2.0+为基础;
- 服务器原有cuda版本9.0,cudnn7.1.3,均不符tensorflow2.1.0要求,无法启动GPU运算
踩坑合集
1.上官网下载与tensorflow=2.1.0对应的cuda(cuda 10.1)
甩图:
坑1:
我是在本机完成下载之后将运行文件.run上传到服务器的(怕服务器太慢,结果发现是我多虑了,服务器下载速度快),结果使用winscp传输后,在服务器直接运行
sh cuda*.run
直接报错:
gzip: stdin: unexpected end of file
Extraction failed.
Ensure there is enough space in /tmp and that the installation package is not corrupt
Signal caught, cleaning up
多次查找问题后发现其实是个白痴原因导致该错误:我在将本地文件上传服务器时,在winscp里直接将文件拖拽过去了。如果老老实实选择“上传”这种正规操作,就没有这种问题了。当然,如果你直接把文件下载到服务器,你也不会遇到这种问题。。。
安装过程中情况较为复杂。由于我本人没有root权限,故整个过程参考https://blog.csdn.net/hizengbiao/article/details/88625044,亲测有效。在安装过程中,因为没有root权限所以略去了对NVIDIA显卡驱动的安装(或升级)。但这里埋下一个隐患,那就是,对于CUDA 10.1而言,显卡驱动至少应该在>= 418.39以上。当前这个数值怎么查看?输入命令`nvidia-smi`,driver version对应的数字就是。
如果你的驱动没有达标,运行tensorflow的时候程序一般会这样提示你:
cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version
安装后截图:
2.下载和tf=2.1.0对应的cuDNN(7.6.5)并安装
- cuDNN下载页面:https://developer.nvidia.com/cudnn
- 注意,点击「Download cuDNN」之后,会让你注册并填写一个survey。耐着性子填完吧!注册和登录的地方,或许有的地方会被墙,或者至少也是在不*的情况下很龟速,如果你打不开页面,可以想想是不是应该*
- 下载好cuDNN文件后,发现后缀是.solitairetheme8,直接按照.tar解压。然后将解压得到的结果,按照以下方式复制粘贴到cuda-10.1的安装目录下:
cp ~/cuda/cuda-10.1/cuDNN/include/cudnn.h ~/cuda/cuda-10.1/include
cp ~/cuda/cuda-10.1/cuDNN/lib64/lib* ~/cuda/cuda-10.1/lib64
chmod a+r ~/cuda-10.0/include/cudnn.h ~/cuda-10.0/lib64/libcudnn*
*注:`~/cuda/cuda-10.1/cuDNN/`是我cuDNN文件解压所在的位置;~/cuda/cuda-10.1/是我运行`sh cuda*.run`安装cuda 10.1的位置。我们这一通复制粘贴,就是为了把cuDNN的文件放到CUDA目录下。
- 之后建立软链接:
cd ~/cuda/cuda-10.1/lib64
ln -sf libcudnn.so.7.6.4 libcudnn.so.7
ln -sf libcudnn.so.7 libcudnn.so
ldconfig -v
- 最重要的:在.bashrc文件里配置路径(我的家目录为/home/shenfei1,改成你的)
export PATH=/home/shenfei1/cuda/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/home/shenfei1/cuda1/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
修改之后,执行`source ~/.bashrc`使之生效。
-
验证nvcc版本,看看安装是否成功
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Fri_Feb__8_19:08:17_PST_2019
Cuda compilation tools, release 10.1, V10.1.105
注意最后一行release 10.1, V10.1.105。若nvcc命令找不到,说明中间安装有误
illusion_小驴 发布了56 篇原创文章 · 获赞 87 · 访问量 12万+ 私信 关注