专栏首页人人都是极客3.训练模型之在GPU上训练的环境安装

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),作者:Peter Liu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 五分钟喝不完一杯咖啡,但五分钟可以带你入门TensorFlow

    本文是《人人都能学人工智能-TensorFlow系列》文章的第一篇,这个系列会对TensorFlow的基础使用,SoftMax,交叉熵,Dropout,CNN,...

    刘盼
  • 第二课:开发机器学习app前的准备工作

    框架的选择 如上一节课所说,随着机器学习的发展,目前已经出现很多不错的学习框架,这里我们做个对比: TensorFlow:深度学习最流行的库之一,它不仅便携、高...

    刘盼
  • Linux内存初始化(上)

    有了armv8架构访问内存的理解,我们来看下linux在内存这块的初始化就更容易理解了。

    刘盼
  • 独家|让你的GPU为深度学习做好准备(附代码)

    本文讲述了使用NVIDIA官方工具搭建基于GPU的TensorFlow平台的教程。

    数据派THU
  • 黄金三镖客之TensorFlow版

    用户1737318
  • 入门大爆炸式发展的深度学习,你先要了解这4个最流行框架

    [ 导读 ]对深度学习做出巨大贡献的Yoshua Bengio,他与Yann Lecun和Geofrey Hinton等人在今年3月获得了图灵奖。近几年,深度学...

    数据派THU
  • 嘀——这一刻 武汉醒了

    ? 4月8日零时,交警拆除离汉高速隔离栏 摄影:无畏 2020年4月8日,春暖花开,武汉“醒”了! 历经2个多月的沉寂,武汉重拾烟火气。 ? 汉街重新开街 ...

    腾讯大讲堂
  • Windows下安装MongoDB

    前言 之前都是使用的线程的mongoDB,这次为了一个小任务,自己安装了一下mongoDB.正好复习一下,直接贴在博客里面。   安装MongoDB很简...

    用户1154259
  • 最近一年语义SLAM有哪些代表性工作?

    目前 Semantic SLAM (注意不是 Semantic Mapping)工作还比较初步,可能很多思路还没有打开,但可以预见未来几年工作会越来越多。语义 ...

    用户1150922
  • 从入门到头秃,2018年机器学习图书TOP10

    导读:无论是2018还是2019,都是属于AI的时代。要想在这个时代里 混口饭吃 改变世界,首先你得玩转机器学习。数据叔整理了2018年出版的机器学习重磅好书,...

    华章科技

扫码关注云+社区

领取腾讯云代金券