3.训练模型之在GPU上训练的环境安装

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

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

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

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

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

安装 CUDA

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

首先检查一下显卡信息,确保没有租错主机,在终端上运行:lspci | grep -i nvidia

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

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

显卡没有问题,接下安装 CUDA(本课程使用 CUDA 8)。

在 NVIDIA 开发者中心下载相应的 deb 包。

下载完成以后运行:

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

如果不出意外,安装完成之后在终端运行:nvcc --version,则输出 CUDA 的版本信息:

安装 cuDNN

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

在 NVIDIA 开发者中心下载安装包(注意:选择 cuDNN 6 的版本,这样才和 CUDA 8 兼容。),这需要注册一个账号。

下载完成后运行:

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

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

    export CUDA_HOME=/usr/local/cuda
    export PATH=${CUDA_HOME}/bin/:$PATH
    export 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 中的相应项;最后运行训练脚本,这次的输出是这样的:

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

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

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

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

原文发布于微信公众号 - 人人都是极客(rrgeek)

原文发表时间:2018-02-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

自定义对象检测问题:使用TensorFlow追踪星球大战中的千年隼号宇宙飞船

大多数的大型科技公司(如IBM,谷歌,微软,亚马逊)都有易于使用的视觉识别API。一些规模较小的公司也提供类似的产品,如Clarifai。但没有公司能够提供对象...

4705
来自专栏PPV课数据科学社区

手把手教你用1行代码实现人脸识别 -- Python Face_recognition

环境要求: Ubuntu17.10 Python 2.7.14 环境搭建: 1. 安装 Ubuntu17.10 > 安装步骤在这里 2. 安装 Python2....

4318
来自专栏AI研习社

手写体数字识别该如何选择GPU并实现?DeepLearning4j 实战

在之前的博客中已经用单机、Spark分布式两种训练的方式对深度神经网络进行训练,但其实DeepLearning4j也是支持多GPU训练的。 这篇文章我就总结下用...

3373
来自专栏量化投资与机器学习

机器学习应用区块链系列(一)——如何开发一套自己的智能合约系统

从今天开始 编辑部将带来机器学习应用区块链系列 由于是第一期,我们想解读一些国外已有的文献和研究。故带来了START-Summit-2017-Blockchai...

46010
来自专栏生信技能树

hpv病毒基因研究调研

2015年有一篇文献中提到了hpv的研究现状 As of May 30, 2015, 201 different HPV types had been comp...

3185
来自专栏一棹烟波

CUDA与OpenGL互操作

当处理较大数据量的时候,往往会用GPU进行运算,比如OpenGL或者CUDA。在实际的操作中,往往CUDA实现并行计算会比OpenGL更加方便,而OpenGL在...

28710
来自专栏人工智能LeadAI

毫秒级检测!你见过带GPU加速的树莓派吗?

82010
来自专栏简书专栏

基于xgboost的波士顿房价预测kaggle实战

2018年8月24日笔记 这是作者在波士顿房价预测项目的第3篇文章,在查看此篇文章之前,请确保已经阅读前2篇文章。 第2篇文章链接:https://www....

1.8K3
来自专栏ATYUN订阅号

TensorFlow:使用Cloud TPU在30分钟内训练出实时移动对象检测器

是否能够更快地训练和提供对象检测模型?我们已经听到了这种的反馈,在今天我们很高兴地宣布支持训练Cloud TPU上的对象检测模型,模型量化以及并添加了包括Ret...

2935
来自专栏数据结构与算法

P1433 吃奶酪

题目描述 房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。 输入输出格式 输入格式: 第一行一个数n (...

2906

扫码关注云+社区

领取腾讯云代金券