在刚入坑机器学习时,书上所使用的算法(回归、决策树等)及实例较为简单,一般CPU(中央处理器)的计算能力均能胜任,从而快速实现。但若使用keras(一种基于深度学习框架的高级应用接口)进行深度学习,利用海量的数据反复训练神经网络中成百上千万个参数时,CPU显得捉襟见肘,需要GPU(图形处理器)来实现加速训练。
为什么GPU在深度学习中比CPU更快呢?这是由于两者的设计不同,CPU由专为串行处理而优化的几个部件组成,拥有少量的算术逻辑单元,主要针对不同任务的管理与协调;而GPU则拥有数以千计个算术逻辑单元组成的并行计算架构,专为庞杂而繁重的计算任务而设计。
简单的理解,当对一组数据反复执行同一种计算任务时,GPU更合适,而对同一组数据执行多种不同的任务时,CPU更合适。
以本渣渣的实际经验来看,使用GTX970(CUDA1600个)训练2万个样本的卷积神经网络将比A10处理器快20-30倍(视batchsize大小而定)。
1.安装CUDA及cuDNN
GPU加速器于2007年由NVIDIA率先推出,CUDA(Compute Unified Device Architecture)是使GPU能够解决复杂计算问题的并行架构,它包含了CUDA指令集以及并行计算引擎。现在,该架构已应用于GeForce、ION、Quadro以及Tesla等多款产品上,相比AMD而言,支持GPU加速的NVIDIA显卡品种繁多。
因此想要用GPU加速的话基本只要确定显卡是不是NVIDIA品牌的就可以了,当然如果型号过于老旧还是不太确定的话可以前往官网(https://developer.nvidia.com/cuda-gpus)查询,查询列表还能帮助你了解所持显卡的算力,下图仅为部分。
在下载CUDA之前首先需确定所持显卡支持的CUDA版本,可通过NVIDA控制面板中的系统信息进行查看。若无法找到NVIDA控制程序请更新显卡驱动,一般最新的驱动程序都能支持较新的CUDA版本。(当前TensorFlow-GPU-1.14版仅支持CUDA10.0,本渣在安装10.1后运行提示找不到cudart64_100.dll,后期图文中请无视具体版本号)
进入官网(https://developer.nvidia.com/cuda-toolkit-archive),根据操作系统选择下载支持的CUDA版本。(下文仅演示离线安装)
双击下载的可执行程序(cuda_10.0.130_411.31_win10.exe)进入安装引导,经过解压(临时文件可任意存放,会自动删除)及同意许可协议后进入安装选项。安装方式提供'精简'(其实是完整安装,见英文注释'install all')与'自定义'两种。这里推荐'自定义',因为有些组件(比如驱动程序)可能已经安装,且版本更高,以免被覆盖。
如图选择CUDA列表中的Development,Runtime,Documentation,Samples的四个组件,其他组件可按需安装。(本渣在安装Nsight两个组件时碰到重启错误,可能原因是没有关闭受限状态)
记住安装位置(后面设置环境变量需要用到),点击'下一步'至出现'安装程序已完成'。
接着下载cuDNN,其全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络中的基础操作而设计基于GPU的加速库。
下载需要登录账户,注册过程比较简单,一顿操作后即可完成注册(传送门:https://developer.nvidia.com/rdp/cudnn-download)。登录后,选择与CUDA版本及操作系统对应的cuDNN下载,并将下载的文件解压放置在CUDA安装目录其版本号对应的文件夹下。( C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0)
最后,设置相应的环境变量。右键‘我的电脑’>属性>高级系统设置>环境变量,可以看到已经有了CUDA_PATH、CUDA_PATH_V10_1、NVCUDASAMPLES_ROOT、NVCUDASAMPLES10_1_ROOT这几个环境变量。
还需要额外添加如下环境变量:
CUDA_SDK_PATH:C:ProgramDataNVIDIA CorporationCUDA Samplesv10.1
CUDA_LIB_PATH:%CUDA_PATH%libx64
CUDA_BIN_PATH:%CUDA_PATH%bin
CUDA_SDK_BIN_PATH:%CUDA_SDK_PATH%binwin64
CUDA_SDK_LIB_PATH:%CUDA_SDK_PATH%commonlibx64
以及在系统变量PATH下添加:
%CUDA_LIB_PATH%
%CUDA_BIN_PATH%
%CUDA_SDK_LIB_PATH%
%CUDA_SDK_BIN_PATH%;
C:ProgramFilesNVIDIA GPU Computing ToolkitCUDAv10.1libx64
C:ProgramFilesNVIDIA GPU Computing ToolkitCUDAv10.1bin
C:ProgramDataNVIDIACorporationCUDA Samplesv10.1commonlibx64
C:ProgramDataNVIDIACorporationCUDA Samplesv10.1binwin64
配置完成后,我们可以使用CUDA内置的两个程序来检验是否配置生效。启动cmd,cd到安装目录下...CUDAv10.1extrasdemo_suite,分别执行bandwidthTest.exe和deviceQuery.exe,若如图均返回PASS则说明配置生效。
2.创建虚拟环境
虚拟环境可以理解为针对特定的项目而存在的独立开发运行环境,不同的虚拟环境可以有自己不同的依赖项与工具包,互不影响,同一个工具包在不同的虚拟环境中根据项目需要可以存在不同的版本。
使用'conda create –n 虚拟环境名 python=版本号 anaconda'(若命令末端不输入anaconda则环境中只安装python,无其他工具包),稍等片刻后询问是否继续,键入Y并回车,出现'done'则表示创建完成。可用'conda activate 虚拟环境名'来激活(退出环境则用deactivate),若想删除环境则使用'conda remove-n 虚拟环境名--all'。
使用'conda info –envs'可查看当前所有的虚拟环境及其位置。
3.安装TensorFlow_GPU版
由于Keras以tensorflow(Google开发的一种深度学习框架)作为后端运算,因此本质上是需要GPU来执行tensorflow的计算操作,对此tensorflow有专门基于GPU的版本。激活待安装的虚拟环境,使用'pip install --upgrade tensorflow-gpu'进行下载与安装。
途中可能出现依赖项版本过低的情况,请使用'pip install –upgrade 工具包名称' 逐个升级。
安装完后,键入以下命令并运行:
import tensorflow as tf
hello=tf.constant('hello!')
sess=tf.Session()
print(sess.run(hello))
若能成功运行且出现显卡设备信息则表示实现了GPU调用。
最后Keras的安装就很简单了,直接'pip install keras'。
好了,一切准确就绪,快试着让模型飞起来吧!
Ref:
•https://www.nvidia.cn/
•https://blog.csdn.net/qilixuening/article/details/77503631