深度学习环境搭建

Posted by Hsz on March 2, 2018

深度学习环境搭建

在前面几年的时候python下深度学习的主流环境还是google主导的tensortflow+keras高低搭配环境,而在前年起,由facebook主导的torch从lua单平台port出了pytorch,同时又和微软合作,组成了caffe2+pytorch的高低搭配环境,成为了一种新的选择.在今年pytorch发布了1.0版本,而且抛开caffe提供了单独的c++版本,现在更加不可忽视.而tf一边则推出了利用webgl的tfjs,这让前端现在也可以使用tf训练的模型了,大大提高了其在工业上的应用场景.

但无论是哪种技术,最大的赢家都是英伟达,现在的主流深度学习框架都是基于cuda的,而对opencl的支持,各家都说在做,但即便支持最好的theano也没有做到完全可用的程度.

本文的是去年同名文章的删改版.本文旨在提供一个配置流程的参考,并不涉及具体算法和应用.配置的平台是window10.

windows对于深度学习环境并不友好,但毕竟不是人人都有条件买台电脑装linux,除了做深度学习什么别的都不干, 所以并不建议大多数人为了这个环境而换操作系统.本人之前也是为了深度学习环境装了双系统,但最终还是把linux卸了, 现在的主要开发环境还是windows系统.windows下的配置方式其实差不太多,各种框架也都总有办法支持windows. windows下执行效率也还好,至少对于我这样用来做做小项目的来说够用了.

硬件

  • CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
  • GUP: NVIDIA Corporation GP104 [GeForce GTX 1080]
  • memory: 16 GB 2400 MHz x2

软件

  • vs2015(全部更新包)
  • cuda10.0
  • cudnn 7.5 for cuda 10.0
  • ananconda
  • tensorflow 1.13.1
  • pytorch

接下来是具体配置方法

Cuda配置

  1. 安装vs

    微软官方下载vs2015社区版下载并安装,注意这需要有微软帐号,没有就注册一个,只需要安装其中C/C++相关的工具和包即可.vs非常大,你需要一个好网速和一个大硬盘.

  2. 下载CUDA并安装

    和linux上类似我们需要安装一下cuda环境,包括显卡驱动和cuda工具包,具体的可以看英伟达官方的说明,同样cuda也需要注册一个英伟达的帐号,注册一个就是了. 注意不要安装最新的版本,因为各种框架不会第一时间跟进.主要需要关注的是tensorflow的需求,现在比较通用的是v10.0版本,对应的tensorflow版本为1.13.1.安装好后我们最好一年都别改了

  3. 下载并安装cudnn

    类似cuda的安装,同样参考官方文档,注意不要安装最新的版本,因为各种框架不会第一时间跟进. 现在比较通用的版本是cudnn v7.5版本.

  4. 配置环境变量

在系统变量中将cuda的安装位置放到变量CUDA_PATHCUDA_PATH_V10_0下,将cudnn的位置放到CudaDNN变量下,并且将$CUDA_PATH\bin%CUDA_PATH%\lib\x64加入PATH变量方便使用.win10下编辑界面很友好,我就不截图了.

anaconda环境安装

我们的开发实验环境使用python作为语言,最方便的方式就是使用anaconda环境.这部分不多说,可以看我的这篇文章

  • 我们按照其中的介绍新建一个虚拟环境tf36

      conda create -n tf36 python=3.6
    
  • 创建完成后进入虚拟环境

       activate tf36
    
  • 这之后由于pip的版本过旧,可以使用python -m pip install --upgrade pip更新下
  • 安装下jupyter kernel的依赖pip install jupyter-client ipython ipykernel

tensorflow安装与配置

相对而言,tensorflow就好装的多,它只用anaconda就可以安装了

在linux下安装需要挑选好安装的python是哪个版本,具体支持哪些python版本可以在这个网页查看 ,安装只需要pip install --ignore-installed --upgrade <url>就行,其中的url就是查到的对应版本的地址.

windows下安装目前推荐3.6版本,安装只需要pip3 install --ignore-installed --upgrade tensorflow-gpu即可.

测试安装成功

import tensorflow as tf
with tf.device('/cpu:0'):
    a = tf.constant([1.0,2.0,3.0],shape=[3],name='a')
    b = tf.constant([1.0,2.0,3.0],shape=[3],name='b')
with tf.device('/gpu:1'):
    c = a+b


sess = tf.Session(
        config=tf.ConfigProto(
            allow_soft_placement=True,
            log_device_placement=True
        )
    )
sess.run(tf.global_variables_initializer())
print(sess.run(c))

如果正常输出[2.,4.,6.]那么说明安装成功.如果报错提示找不到dll一般来说是因为安装的时候依赖版本有问题.我目前的配置是没有问题的.

keras

keras是一个纯粹的python包,安装只需要使用pip即可:pip install keras

keras实际上只是一个编程前端,实际的运行是调用后端.后端可以是theano,tensorfolw,推荐使用tf作为后端,目前这个后端支持最为充分. 配置方式是在~/.keras/keras.json(windows下是在个人用户目录下的.keras\keras.json位置)文件中设置.

默认配置如下:

{
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}
  • iamge_data_format

    字符串,”channels_last”或”channels_first”,该选项指定了Keras将要使用的维度顺序,可通过keras.backend.image_data_format()来获取当前的维度顺序。对2D数据来说,”channels_last”假定维度顺序为(rows,cols,channels)而”channels_first”假定维度顺序为(channels, rows, cols)。对3D数据而言,”channels_last”假定(conv_dim1, conv_dim2, conv_dim3, channels),”channels_first”则是(channels, conv_dim1, conv_dim2, conv_dim3)

  • epsilon

    浮点数,防止除0错误的小数字

  • floatx

    字符串,”float16”, “float32”, “float64”之一,为浮点数精度

  • backend

    字符串,所使用的后端,为”tensorflow”或”theano”

测试安装成功

from keras import backend as K

如果有warning提示Using TensorFlow backend.则说明安装成功且使用了tf的后端

pytorch

pytorch安装方式就是使用pip安装.

 pip install https://download.pytorch.org/whl/cu100/torch-1.0.1-cp36-cp36m-win_amd64.whl
 pip3 install torchvision

测试安装成功

import torch
x = torch.rand(5, 3)
print(x)
torch.cuda.is_available()

如果返回True说明已经使用gpu了.

总结

windows下tf的安装比较麻烦,需要严格按照依赖一步一步执行,但官网的依赖说明又并不完善,按这次重装的经验有些依赖是真的没有写出具体版本.我是在工单中找到的tf1.13.1需要cuda10.0的信息.

相对来说pytorch的安装体验要好的多.不过可惜工业上用的真的不多.