0. 前言

由于深度学习现在非常的火,笔者也想跟风学习一下相关的知识,但是苦于没有高大上的电脑配置,当前有的只是一台小笔记本电脑(不敢说它破旧,毕竟已经用了四年了,但很担心它突然有了小脾气就不工作,然后。。。。就没有然后了),同时也没有精力去学习linux那套复杂的操作系统,笔者认为学习的最佳方法是以自己熟悉的操作环境来接纳新知识。刚好笔者习惯了matlab的编程模式,而matlab在2012以后的版本中开始带有GPU加速的工具箱,因此想利用一下这台笔记本的余热(GPU)基于matlab来学习一下深度学习。

1. 安装GPU驱动

1.1 基本环境

软件:MATLAB 2018a  (当前最新的matlab版本,提供了很多关于深度学习(常见的卷积神经网络和循环神经网络)的接口)

硬件:NVIDIA GeForce GT 730M  (这个显卡比较老了...)

据说matlab现在只支持NVIDIA系列的显卡,由于笔者身边也没有其它类型的显卡,所以也无法验证其真实性。(希望有基础的博友能尝试一下)

matlab 2018a Neural Network Toolbox关于深度神经网络在GPU上的加速计算有以下要求:

Using a GPU requires a CUDA® enabled NVIDIA® GPU with compute capability 3.0 or higher.

即需要一个计算能力在3.0以上的带CUDA驱动的NVIDIA系列GPU才能实现GPU加速,但是这应该是最新版本的工具箱对深度神经网络加速的要求,如果是单纯地手动把数据送到GPU内进行加速则不需要GPU满足此条件。话说回来,笔者的笔记本都满足此条件,还有什么是不可能的呢?

1.2 查看GPU的计算能力

官方网站查看相应显卡对应的计算能力(compute capability)

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_MATLAB

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_GPU_02

刚好,笔者的显卡的计算能力是3.0,满足了最低要求。

1.3 查看matlab是否能调用GPU

在matlab命令行窗口内通过‘gpuDevice’查看显卡是否具备加速功能,笔者在测试时出现了如下错误:

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_GPU_03

错误显示,笔者的显卡驱动版本为6,而该版本的matlab要求的最低驱动版本为9。虽然,错误显示是CUDA版本较低,但我们不需要去下载CUDA,因为在windows操作系统下,如果要安装CUDA需要先安装visual studio。因此,笔者选择安装显卡驱动,而不是CUDA。

1.4 下载最新的显卡驱动并安装

官方网站下载与显卡和操作系统对应的显卡驱动程序(大概430M):

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_GPU_04

提取文件的路径可以自定义,不必选在C盘,推荐“推荐”安装(小笔记本的“优势”此时就显现了,但也只花了4分钟左右)

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_CUDA_05

安装完之后,可以在任务栏看到NVIDIA的特色图标。

重启matlab再运行‘gpuDevice’,如果驱动安装正常则会得到如下输出信息:

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_MATLAB_06

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_MATLAB_07

2. 显卡测试

关于GPU的基本信息和基本测试流程在这里可以找到,本篇博客的目的主要是如何实现GPU对深度神经网络训练过程的加速计算。为实现GPU的加速过程,不同版本的matlab对GPU的计算能力有不同的要求

CUDA-enabled NVIDIA GPUs with compute capability 3.0 or higher. For releases 17b and earlier, compute capability 2.0 is sufficient. For releases 14a and earlier, compute capability 1.3 is sufficient.

Create Simple Deep Learning Network for Classification示例程序为例,展示GPU对网络的加速训练过程:

示例程序以CPU进行网络训练的过程如下图所示,费时1 min 2 sec

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_GPU_08

笔者以GPU进行加速训练的过程如下图所示,费时36 sec

MATLAB使用GPU跑深度学习网络 matlab怎么用gpu跑_MATLAB_09

优势还是比较明显的,尤其是相对于笔者之前只用这台小笔记本的cpu进行训练而言。

至此,基本任务完成,欢迎有不同意见的小伙伴前来交流学习。