让你手中的煤气灶疯狂输出!

1 前言

笔者经过两个月的学习,总算是对机器学习的知识框架以及应用领域有了大体的了解,研读文献也渐入佳境。

“纸上得来终觉浅,绝知此事要躬行。”笔者准备开始用实践检验真理,奈何没有趁手的电脑,之前的Coding计划被多次推延。

今天发现偶然发现古董笔记本的显卡居然支持CUDA。于是一番捣腾,踩过无数坑之后终究还是修成正果。

笔者的笔记本电脑信息如下:

  • 型号:Thinkpad E540
  • 系统:Windows 10
  • 显卡:NVIDIA GeForce 840M
  • 内存:8 GB

安装后的环境如下:

  • Python 3.6.6
  • CUDA Toolkit v9.0
  • cuDNN v7.3
  • TensorFlow 1.11.0
  • PyTorch 0.4.1

2 准备工作

2.1 显卡是否支持CUDA?

可浏览CUDA官网查看显卡是否达到所需的算力(Compute Capability)要求。

2.2 Python环境

根据TensorFlow官网给出的支持信息选择可支持的Python版本。笔者使用的是Python3.6.6版本。

安装Python的两种方法:

  1. 直接下载并安装Python对应版本。
  2. 安装Anaconda“全家桶”,创建Python对应版本的虚拟环境。

Windows系统下笔者推荐后者。原因如下:

  • Anacondabase环境集成了多种常用库,省去了自行安装的繁琐过程。
  • conda可以创建多个独立的虚拟环境,并且能管理使用pip安装的库。

尽管如此在安装TensorFlow-GPU库的时候笔者还是推荐使用pip。笔者曾尝试使用conda进行安装,结果出现了错误。毕竟conda只是由社区维护的,没有受到TensorFlow官方团队的关注。而原生的pip相较之下就属于“亲儿子”了。

3 配置流程

3.1 安装CUDA Toolkit和cuDNN

首先根据TensorFlow官网给出的支持信息查看目前TensorFlow支持的CUDA ToolkitcuDNN的版本。笔者使用的是CUDA Toolkit v9.0以及cuDNN v7.3版本。

  1. 下载CUDA Toolkit安装包。安装时注意:
    • 选择自定义安装模式,并勾选所有选项。因为CUDA Toolkit安装包内含有与之相匹配的显卡驱动程序。
  2. 下载对应的cuDNN压缩包。将解压的三个文件夹合并到CUDA Toolkit的根目录的三个同名文件夹下。笔者路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0

3.2 安装TensorFlow-GPU

  1. 安装好Anaconda后,创建一个新的虚拟环境。打开Anaconda Prompt并输入:
     conda create -n py36 python=3.6
    
    其中py36为虚拟环境名,python=3.6为指定的版本。
    当系统询问是否安装时输入y
  2. 激活新的虚拟环境。输入:
     conda activate py36
    
    命令行的(base)变成了(py36)
  3. 在新的虚拟环境中使用pip安装TensorFlow-GPU库。输入:
     pip install --ignore-installed --upgrade tensorflow-gpu
    
  4. 等待安装完成之后,进行测试。输入python以打开解释器,并输入以下:
     import tensorflow as tf
     tf.test.gpu_device_name()
    
  5. 返回结果的最后一行代码如下:
     physical_device_desc: "device: 0, name: GeForce 840M, pci bus id: 0000:01:00.0, compute capability: 5.0"
    
  6. Tips
    使用Anaconda的用户在创建好新环境之后会遇到一个问题——Anaconda自带的Jupyter NotebookJupyter Lab并没有把新环境添加到Kernel中去。当然,可以在每个新建的环境中都安装Jupyter,可行但是不优雅。那么解决方法如下:

    • Anacodna Prompt中激活创建的环境py36:
        conda activate py36
      
    • 安装插件ipykernel
        pip install ipykernel
      
    • 添加内核:

        python -m ipykernel install --name py36 --display-name "py36"
      

      --name参数后的py36是内核名称,用于系统保存。而--display-name参数后的 “Py36” 是在Jupyter Notebook网页中选择或切换内核时所显示的。建议二者设置为一样的,方便以后删除Kernel

      如果非要设置一个--display-name,然而一段时间后又忘了当时--name是什么了。那么查看所有Kernel,可在CMD中输入:

        jupyter kernelspec list
      
    • 删除内核时,可在CMD中输入:
        jupyter kernelspec remove py36
      

4 后记

2018年10月23日更新!

笔者最近在又学习使用PyTorchTensorFlow还没玩好,逃~)。根据已经安装的CUDA Toolkit v9.0,在Pytorch官网可找到对应的pip的安装方法,同前文描述一样,先创建新的虚拟环境,然后安装PyTorch,最后可以添加Kernel

进行测试:

cuda = t.cuda.is_available()
print(cuda)

返回结果为True则成功。

最新的PyTorch 1.0预览版已经发布啦,然而Windows系统暂时还不能玩,有点遗憾。笔者安装的是PyTorch 0.4.1版本。