前言

安装环境包括编译器gcc /g++、显卡驱动、cuda、cudnn、pytorch
在安装过程中踩了不少的坑,有必要记录一下以免下次在遇到类似的情况,也希望可以帮助遇到类似的同学排疑解难~
文章有点长,但是给点耐心一步一步跟着操作,安装成功率100%!

准备工作

Google Cloud

Google Cloud比Linux多一步,需要自己创建VM。创建完VM后使用的虚拟环境就和Linux的一样啦,所以这里主要介绍如何创建VM。

  1. 进入到相应的项目 —> 创建VM实例
  2. VM实例配置
  3. 选择GPU的类型和数量:我选择的是4个T4


  1. 下滑在【 管理、安全、磁盘、网络、单独租用】的下拉项中,选择抢占式VM,用上这个可以用抢占式GPU,比较省钱嘿嘿



  1. 启动磁盘 —> 更改

磁盘选择ubuntu,并设置磁盘大小
可以选择大一点的磁盘容量,一般我选100G



  1. 配置好了,点击【创建】就OK啦
  2. 进入到VM之后就可以按照下面linux的步骤进行

linux/VM

cat /etc/issuecat /etc/lsb-release





gccg++gcc --versiong++ --version
![1.png](https://cdn.nlark.com/yuque/0/2020/png/1073041/1583820943040-752d7f3c-3783-45dd-8ab1-4d70ac2b4aed.png#align=left&display=inline&height=85&name=1.png&originHeight=85&originWidth=574&size=9587&status=done&style=none&width=574)gccg++
cat /proc/driver/nvidia/version



没有安装则无信息打印。

nvidia-smi



没有安装则无信息打印。


安装gcc和g++

gccg++
sudo apt-get install gcc-4.9sudo apt-get install g++-4.9update-alternatives --config gccupdate-alternatives --config g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get update


驱动安装

nvidia
  1. 如果需要安装显卡的话,需要先将旧版本的显卡驱动卸载:
sudo apt-get remove --purge nvidia*
  1. 安装之前,需要先禁用一个东西。nouveau。
sudo vim /etc/modprobe.d/blacklist.conf
blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off
lsmod | grep nouveau

显卡驱动的安装比较简单,直接到官网进行对应的驱动的下载。点我下载
注意在驱动的下载那里,操作系统的选择直接选择LInux-xbit即可,这个是可以搜索得到的,如果选择ubuntu16等搜不到。亲测直接搜索Linux 64-bit安装有效可用!
产品系列和家族依需要选择



将下载好的显卡驱动上传到服务器进行安装。


sudo ./NVIDIA-Linux-x86_64-430.34.run


安装CUDA

cuda



这是我自己下载的版本。将下载的版本也上传到服务器上进行安装。

  1. 安装命令:
sudo sh cuda_10.0.130_410.48_linux.run
  1. nvidia accelerated graphics driver :n 。因为我们已经安装过。
  2. 其他的都选yes。
  3. 软连接的建立。注意还有一个选项是软连接的建立,会在/usr/local/下面建立一个软连接cuda该软连接连接到安装的真正的cuda-10.0的地址。软连接的建立可以用于多个版本的cuda的管理。



如图所示的,黄色的cuda是一个软连接,红色的是多个安装好的cuda修改软连接就可以修改cuda的版本。

  1. 安装完成

这是安装完成之后的内容。

nvcc -Vsudo vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 export PATH=$PATH:/usr/local/cuda/bin export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
nvcc -V


  1. 多版本的CUDA管理。

其实很简单,就是那个软连接的管理,例如我需要其他版本的cuda,由于我的环境比变量直接指向的是一个软连接,因此我可以删除旧的软连接再建立新的软连接的方式来实现不同版本的cuda的切换。

sudo rm -rf cuda # 删除旧版本的软连接 sudo ln -s /usr/local/cuda-9.1 /usr/local/cuda # 建立新版本的软连接,前面的路径是需要的版本的cuda的安装路径。


安装cudnn

进去之后花花绿绿的什么鬼一大堆,如果采用安装的方式的话,需要每个版本的操作系统需要下载3个deb文件,就很烦。因此我们直接下载箭头对应的版本。



注册NVIDIA账号

这里下载需要注册NVIDIA账号,我做完注册了一晚上都遇到【Validator failed to load, please check your browser settings, such as ad blockers.】的错误提示,真是一个大坑,快要崩溃了。
解决方法:
注册界面左下角的语言选择切换到【简易中文】,即可解决。不关浏览器的问题。
就算原来页面上已经显示语言为简易中文,也要再重新选择一次!
很白痴的bug,问题解决了之后我都笑了。。。

  1. 改文件的后缀是cudnn-10.0-linux-x64-v7.3.0.29.solitairetheme8这种也是也是tgz。将下载来的文件进行解压即可。 cp cudnn-10.0-linux-x64-v7.3.0.29.solitairetheme8 cudnn-10.0-linux-x64-v7.3.0.29.tgz # 换后缀 tar -xvf cudnn-8.0-linux-x64-v5.1.tgz # 解压


解压出错

这里,又遇到了一个让我解决了2个小时的蠢问题。。
【 gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now】


这里有一个一般大众的解决方法参考,解压错误的情况一般有三种:
a. 去掉z
b. 解压缩的文件格式不对
c. 下载的是网页格式
我用file打印出来发现我对应的是第3中错误情况,但是利用copy重命名的方式无法解决,最后,我找到了我的出错原因和解决方法:
出错原因:
使用IE浏览器下载文件有错
解决方法:
使用google浏览器重新下载文件到本地后在上传到linux中,然后在重新按照上面的步骤2进行。

  1. 解压之后得到一个 cuda文件夹。采用如下的操作进行cudnn的安装。(这时候的cudnn要直接安装到对应的版本的cuda的真实的安装路径中。这样建立软连接的时候才会读到cudnn文件) sudo cp cuda/include/cudnn.h /usr/local/cuda-xx.x/include # 填写对应的版本的cuda路径 sudo cp cuda/lib64/libcudnn /usr/local/cuda-xx.x/lib64 # 填写对应的版本的cuda路径 sudo chmod a+r /usr/local/cuda-xx.xx/include/cudnn.h /usr/local/cuda-xx.xx/lib64/libcudnn

如果喜欢采用deb的安装方式的,参见
以上流程如果走下来还是出错的话,建议重新卸载显卡驱动再来一次。


安装Anaconda

采用Anaconda进行python环境的管理是一个很高效的解决方案。从仓库下载对应版本的软件进行安装。点我下载。(箭头是我选择的版本)


bash Anaconda3-5.0.1-Linux-x86_64.shbashshsource ~/.bashrc
conda create-n your_name python=your_versionsource activate your_name

conda: command not found解决办法


安装Pytorch

到pytorch官网下载对应版本的pytorch 即可。下载官网


根据【Run this Command】复制生产命令进行安装。
安装完成之后测试:

python # 进入python 环境 import torch # 导入安装的pytorch包 torch.cuda.is_available() # 检查cuda是否可以使用
torch.cuda.is_available()