背景
最近导师安排了一个论文模型复现的工作,奈何硬件条件不够,只能到处搜罗免费的GPU资源,过上了白嫖百家GPU资源的日子,这时候刚好遇见了腾讯的GPU云服务器体验活动,可谓是久旱逢甘霖。作为一名零基础小白,现将自己使用GPU云服务器(以Windows系统为例)搭建自己的深度学习环境的过程记录下来,方便大家参考。
一、环境选择
1.1 系统初始化环境
- 机型:GN8.LARGE56
- OS:Windows Server 2019 数据中心版 64位 中文版
- CPU:Intel(R) Xeon(R) CPU E5-2680 v4 @2.40GHz 2.40GHz * 6vCPUs
- RAM:56GB
- GPU:Tesla P40 * 1
在系统的选择上,我选了自己使用比较顺手的Windows,选择Windows系统可以将服务器作为自己的第二台电脑,操作方便。如果对Linux比较熟悉可以选择Ubuntu或者Centos,不同于Windows系统需要自己配置各种深度学习所需的环境,Linux系统可以在市场镜像里面直接选择各种已配置好的免费镜像,可以直接使用,免去了安装的烦恼。
1.2 重装系统
如果想更换系统,服务器也提供了重装系统的选择,在个人实例界面点击操作栏处的更多,就会出现重装系统的选择,如下图所示。
点击重装系统,注意重装系统后数据将会被清除,大家注意保存。在重装配置界面可以点击公共镜像或者市场镜像选择自己想要的配置,市场镜像里面部分是需要收费的,大家在选择的时候注意区分。
二、CUDA、cuDNN、Pytorch、TensorFlow、Python的版本对应关系
在安装各种驱动之前,我们需要对CUDA、cuDNN、Pytorch、TensorFlow、Python的版本对应关系有一个大致了解,根据自己的配置,选择合适的适配版本,以免后续使用出现版本不匹配的问题。
2.1 CUDA驱动版本选择
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
在选择CUDA驱动版本时,我们首先需要了解显卡的算力,查询地址:https://developer.nvidia.com/zh-cn/cuda-gpus,根据官方提供的信息,Tesla P40显卡的算力在6.1。更多详细介绍可查看CUDA文档:
https://docs.nvidia.com/cuda/ampere-compatibility-guide/index.html#building-ampere-compatible-apps-using-cuda-10-0
根据CUDA版本与显卡算力的对应关系,我们应该选择8.0以上的CUDA版本
2.2 显卡驱动版本选择
确定了CUDA版本,然后再选择显卡驱动版本,下图所示为CUDA和驱动的对应关系,更新更多以及更详细的内容可参考官方介绍: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
2.3 cuDNN版本选择
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。想要在CUDA上运行深度神经网络,就要安装cuDNN,这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
下图所示为部分cuDNN版本与CUDA版本的对应关系,更多更详细的内容请参考官方网站:https://developer.nvidia.com/rdp/cudnn-download
2.4 Pytorch、CUDA版本匹配关系
此部分内容是实时更新的,最新的匹配版本请直接查询官方网站:https://pytorch.org/get-started/previous-versions ,官方给出了明确的安装信息,这里也要注意,Pytorch、CUDA版本并不是越新越好,因为新版本往往会出现匹配问题,所以建议大家先浏览一下当前已经满足的匹配关系,选定要用的版本后,再安装各种驱动。
2.5 TensorFlow、Python、CUDA、cuDNN版本匹配
Tensorflow较Pytorch稍微复杂一点,因为它还需要Python、编译器的版本支持,CPU、GPU版本与Python、CUDA、cuDNN的版本对应关系如下所示。
基于CPU版本的TensorFlow版本:TensorFlow-CPU
版本 | Python 版本 | 编译器 | 构建工具 |
---|---|---|---|
tensorflow-2.6.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 |
tensorflow-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 |
tensorflow-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 |
tensorflow-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 |
tensorflow-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
tensorflow-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
tensorflow-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
基于GPU版本的TensorFlow:TensorFlow-GPU
代码语言:javascript复制如需支持 GPU,请将 CUDA 和 cuDNN bin 目录添加到$PATH中:
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"
版本 | Python 版本 | 编译器 | 构建工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.6.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7.2 | 9.0 |
tensorflow_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
结合以上内容,并根据自己目前的使用习惯,最终决定安装CUDA10.2 Python3.7 Pytorch 1.8.1 Tensorflow_gpu_2.2.0,接下来为大家介绍安装过程。
三、安装过程介绍
3.1 显卡驱动安装
前往英伟达官网:Official Drivers | NVIDIA 选择该显卡的驱动版本,在CUDA Toolkit的下拉菜单中,我们可以看到该显卡所支持的所有驱动版本,这里我们选择10.2的版本。
点击SEARCH,进入驱动程序下载界面,点击下载,然后安装即可。这里我们直接通过云服务器的浏览器下载安装,你也可以在本地下载好,然后通过FTP工具上传到云服务器再进行安装,可根据个人需要进行选择。
3.2 CUDA安装
3.2.1 CUDA下载
首先进入官网https://developer.nvidia.com/cuda-toolkit-archive ,选择需要下载的版本即可,这里我们下载10.2的版本。
然后选择对应的系统配置,点击download即可下载。
3.2.2 CUDA安装
下载完成后,运行,弹出如下提示,该提示是暂时存放地址,不用修改,保持默认就好,点击ok。
同意并继续。
这里选择自定义。
可根据个人需求选择,这里的Nsight我不怎么用,所以没有安装。
然后点击下一步,直到安装完成即可,注意安装路径不要修改,直接默认即可。
3.2.3 配置环境变量
右键我的电脑>>>属性>>>高级系统设置>>>环境变量,选中系统变量中的Path变量,点击编辑,将如下几个路径添加进去,添加完成后点击确定即可。
代码语言:javascript复制C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2bin
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2libnvvp
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2libx64
C:Program FilesNVIDIA CorporationNVSMI
3.2.4 检查显卡驱动及CUDA安装是否成功
在cmd窗口中输入nvidia-smi
,显示下图内容说明显卡驱动安装成功(下图为正在运行中的GPU,在GPU运行时,在cmd窗口输入该命令可查看GPU的使用情况)。
在cmd窗口中输入nvcc -V
(V一定要大写),显示下图内容说明CUDA安装成功
3.3 cuDNN安装
3.3.1 cuDNN下载
进入官网:https://developer.nvidia.com/rdp/cudnn-download,下载载对应版本的cuDNN,该网站需要注册/登录后下载,按照提示注册即可。
点击Archived cuDNN Releases
,查看更多版本,选择自己所需的。然后下载。
3.3.2 cuDNN安装
cuDNN的安装比较简单,先将下载的压缩包解压会得到如下三个文件:
将上述三个文件夹里面的文件分别复制到CUDA安装的根目录C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2
下对应的文件夹里面即完成cuDNN安装。
到这里我们就完成了显卡驱动、CUDA、cuDNN的安装,接下来我们安装Tensorflow_gpu和Pytorch这两个常用的深度学习库。
四、Pytorch和Tensorflow安装
在上文的版本对应介绍中,我们选择了Python3.7 Pytorch 1.8.1 Tensorflow_gpu_2.2.0这三个版本,大家可根据自己的需求,参照版本对照关系,选择适合自己的版本。
Pytorch和Tensorflow的安装建议通过Anaconda创建的虚拟环境。Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项,它的安装过程简单,能高性能使用Python和R语言,有免费的社区支持。
4.1 Anaconda 安装
首先进入Anaconda官网:https://www.anaconda.com/distribution/,下拉到页面最下方,选择合适的版本点击下载 ,页面展示的Python版本如果不是自己需要的,可以点击下图中的archive
,选择以往的版本。
点击archive
,这里我们选择下载 Anaconda3-2019.03-Windows-x86_64
,它搭载的是Python 3.7,符合需求。
下载完成后,双击运行,依次点击Next>>I Agree>>Next。
这里的安装路径建议修改,因为C盘中的ProgramData文件夹是一个隐藏文件夹,为了方便管理,建议安装在其它文件夹。
这里第一个是将Anaconda的安装路径添加到环境变量,第二个是将Python3.7作为默认解释器,这里我两个都勾选了,然后点击Install就开始安装了,等待安装成功就可以了。
4.2 配置环境
安装完成后,点击Windows,多了Anaconda3的文件夹,打开Anaconda Prompt,进入命令行窗口,在这个界面可以创建自己的虚拟环境,安装各种依赖包。
输入conda create -n xxx_env python=3.7
然后回车就开始创建自己的虚拟环境,注意xxx_env为环境名,可根据自己的喜好设置, python=3.7为Python版本,可根据自己的需要修改。
创建成功如下图所示。
代码语言:javascript复制#激活命令
conda activate xxx_env
#退出命令
conda deactivate
进入自己创建的虚拟环境,就可以按需求安装想要的包了。
4.3 安装Pytorch 1.8.1 Tensorflow_gpu_2.2.0
打开pytorch官网:https://pytorch.org/get-started/previous-versions/,使用官网推荐的安装代码,安装的CUDA版本为10.2,所以我这里选择的是torch==1.8.1 cu102,可以选择conda或者pip安装,我这里选择的是pip安装方式。
代码语言:javascript复制# CUDA 10.2
pip install torch==1.8.1 cu102 torchvision==0.9.1 cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
这里推荐使用清华源的安装方式,可以加快下载速度,使用方法:
代码语言:javascript复制pip install some-package -i https://pypi.tuna.tsinghua.edu.cn/simple
所以上面的命令修改为:
代码语言:javascript复制# CUDA 10.2
pip install torch==1.8.1 cu102 torchvision==0.9.1 cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple
安装Tensorflow_gpu_2.2.0方法类似:
代码语言:javascript复制pip install tensorflow-gpu==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装keras方法类似:
代码语言:javascript复制pip install keras -i https://pypi.tuna.tsinghua.edu.cn/simple
这样,一些基本的深度学习库我们就安装好了,后续大家可以参照上述方法安装自己需要的包,大家可以利用Anaconda自带的jupyter notebook、Spyder工具或者安装PyCharm等工具开始代码学习啦!