深度学习开发环境配置记录 (tf+torch)

  Tensorflow , 深度学习 , Pytorch , 开发环境 , 记录

Versions

  • CPU: Intel i5-6300HQ (2.30GHz)
  • GPU: NVIDIA GeForce GTX 950M

  • Windows 10 Education

  • Ubuntu 16.04 LTS (VirtualBox 5.2.16)

  • Python

    • Python 3.6.5 (Windows, Anaconda)
    • Python 3.5.2 (Ubuntu)
  • Libraries

    • numpy 1.15.0
    • pandas 0.23.3
    • tensorflow 1.9.0
    • torch 0.4.0
    • requests 2.9.1
    • beautifulsoup4 4.4.1
  • CUDA Toolkit 9.0

  • cuDNN 7.0.5 (Dec 5, 2017), for CUDA 9.0

Details

我的 ubuntu 一直都是配好的,不再赘述。为了便利,我选择使用 Anaconda,安装很容易,只需一路 Next 就行。numpy、pandas、requests 与 bs4 的安装也都很简单,sudo pip3 install 就能直接装上。由于 VBox 不能很好地利用我的显卡,我仅在 Windows 上安装了 GPU 版 Tensorflow,Ubuntu 上只安装了 CPU 版。

安装 Tensorflow-GPU 时遇到了一个问题:Distributed 1.21.8 requires msgpack, which is not installed,谷歌搜到这篇文章,照做即可。不过在真正能够启动 Tensorflow-GPU 前需要安装好 CUDA Toolkit 跟 cuDNN。

Tensorflow 的引导页 所要求的 CUDA Toolkit 版本为 9.0,然而英伟达官网已经发布了 9.2,为了避免兼容问题,我从这里找到了 v9.0,下载并安装之即可,%PATH% 它会自动设置好,但是没加全,还得自己加一条 Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64

cuDNN 也有版本要求。同样,有一个 Archive 页可供下载,选择符合要求的最新版本 v7.0.5 (Dec 5, 2017), for CUDA 9.0,下载后解压,把 cuDNN/bin/ 加到 %PATH% 里(下载需要先注册、登陆),重启 Python 即可。

装上 Tensorflow 后,我把官方提供的例子给克隆了下来,运行时发现数据总是导入失败(失败于 pd.read_csv)。奇怪的是,在 pandas 项目的 issue 页明明能搜到相关的问题,也早就被标记了“Solved”,可是我更新到最新版本(0.23.3)后还是没有解决。这个问题是因为默认路径有包含有中文(也就是我的系统用户名),最后我只能照着这篇文章,把我的系统用户名从中文改为英文。改完重启后,终于顺利跑完 premade_estimator.py

改完用户名后其实有另外一个问题:VBox 找不到我的虚拟机文件了。要解决这个问题,只要在 ~/.VirtualBox 里编辑 VirtualBox.xmlVirtualBox.xml-prev,把相应路径改为新的就行了。

但是,折腾完一跑代码我才发现,跑示例代码的时候,CPU 比 GPU 快多了…打扰了…我也不知道为什么。要用 CPU 跑的话,可以加上 with tf.device('/cpu:0'),但我觉得很麻烦,还得修改代码。其实只需要在跑脚本前敲一行 set CUDA_VISIBLE_DEVICES=-1 设置一下环境变量就行了,或者在脚本开头加上:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'

Pytorch 的安装则直接两行命令搞定:

conda install pytorch cuda90 -c pytorch
pip install torchvision

包比较大(接近 600M),建议科学上网。装完后我试着跑了一下官方给的 MNIST 示例代码,发现跑不起来,在 49 行报了错。随即去看了这个文件的 Blame 页,发现就在我写这篇报告的十二小时前刚有一个新的 commit,改回去就可以了。这段代码跑起来能明显感到 GPU 对训练速度的提升,估计效率比 CPU 高了两倍以上。