博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow on Android(10): 在GPU上进行训练
阅读量:4148 次
发布时间:2019-05-25

本文共 2271 字,大约阅读时间需要 7 分钟。

一般来说我们会在笔记本或者PC上面编写模型和训练代码,准备一些数据,配置训练之后会在笔记本或者PC上面做一个简单验证,如果这些代码数据都OK的话, 然后真正的训练放在计算力更强的的计算机上面执行,一般来说至少有一块或者多块CPU, 有相当的显存和内存,接下来我们就这样实验一下。

选择一个支持TensorFlow GPU的计算机

当务之急是找到一块可以用于TensorFlow的显卡,TensorFlow只支持在NVIDIA的部分高端显卡上面进行GPU加速, 在可以找到支持的显卡列表,确保你的显卡在这个列表之内。

一般来说有两个选择, 第一你可以自己购买配置一个专门用于机器学习/深度学习的服务器,这样初期的投入比较高。 第二可以租用云服务器,目前各大云服务商都有专门的GPU计算实例,可以按照小时计费,这样对于学习来说成本还是可以接受的。

其实的我的Macbook Pro上面有一块N卡, 但是从TensorFlow 1.2开始, 官方已经不再支持Mac上的GPU计算了。 虽然可以通过一些hack使Tensorflow的Mac版本继续支持GPU,但是笔记本上的显卡计算能力还是比较弱,我也不想训练到一半把这块显卡烧了,所以我选择从云服务商那里租用一台GPU计算实例。

由于暂时没有人付我广告费,所以在这里就不透露我选择的是哪家云服务商的产品了 _, 总之我租用了一台装有NVIDIA K80的,安装Ubuntu 16.04.1 LTS的主机,综合的费用的话大概不到5块人民币一小时。接下来在这台主机上面继续训练。

安装CUDA

CUDA是一种由NVIDIA推出的通用并行计算架构, 只能应用于NVIDIA的系列显卡, 目前主流的深度学习框架包括TensorFlow都是使用CUDA来进行GPU加速的(可以把CUDA当做是一种驱动程序, TensorFlow通过这个驱动程序来使用显卡),所以我们必须先安装CUDA。

首先我们先检查一下显卡信息,确保没有租错主机_, 在终端上运行:

lspci | grep -i nvidia

你要确保列出的显卡在NVIDIA支持CUDA的里面。

在我租用的主机上,显示如下:

enter image description here

显卡没有问题,接下安装CUDA(本系列文章使用CUDA 8):

在下载相应的deb包。

enter image description here

下载完成以后运行:

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debsudo apt-get updatesudo apt-get install cuda

如果不出意外,安装完成之后在终端运行:

nvcc --version

会输出CUDA的版本信息

enter image description here

安装cuDNN

我们还需要安装一个叫做cuDNN的深度卷积神经网络的加速库:

在下载安装包,这需要你注册一个账号。

注意:选择cuDNN6的版本, 这样才和CUDA8兼容

下载完成后运行:

sudo tar -zxf cudnn-8.0-linux-x64-v6.0.tgz cd cudasudo cp lib64/* /usr/local/cuda/lib64/sudo cp include/cudnn.h /usr/local/cuda/include/

然后编辑~/.bashrc, 在最后面加入:

export CUDA_HOME=/usr/local/cudaexport PATH=${CUDA_HOME}/bin/:$PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64:$CUDA_HOME/extras/CUPTI/lib64

然后source ~/.bashrc, 安装完成。

安装TensorFlow GPU版

为了在GPU上进行训练,我们还要安装TensorFlow的GPU版本(之前我们在笔记本上面安装的而是CPU版):

sudo pip install tensorflow-gpu==1.3.0

安装完成以后,运行Python:

python>>> from tensorflow.python.client import device_lib>>> print device_lib.list_local_devices()

如果输出信息里面有/gpu:0的信息, 那么说明整个安装就成功完成了。

继续训练

前面化了一点时间来配置GPU的环境,现在是时候继续我们的训练了。

当然我们还是需要在这台机器上面根据上一课时的内容完成Object Detection API的安装和配置;下载Pre-trained 模型, 然后把我们本地的训练目录打包上传, 然后根据具体的路径修改pipeline.config中的相应项; 然后运行训练脚本,这次的输出是这样的:

enter image description here

每一步的时间被缩短到1秒左右, 那么执行完200000步大概需要2天多一点时间, 对于实际应用,其实是可以接受的。

我在运行到20000多步的时候终止了学习(大概6个多小时), 然后将训练目录拷贝到了本地:

enter image description here

model/train目录下就是这20000多步的学习输出, 如果你在这个目录上继续运行训练脚本的话,它会从之前的学习进度开始,继续学习。

我将训练好的模型导入到《》中的Android App中体验了一下效果:

enter image description here

效果还不错!


一个训练的流程就跑完了,我们配置好了深度学习的软硬件环境,接下来我们开始准备数据,训练自己的模型吧。

转载地址:http://psiti.baihongyu.com/

你可能感兴趣的文章
python循环语句与C语言的区别
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>