让你手中的煤气灶疯狂输出!
                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的两种方法:
- 直接下载并安装
Python对应版本。 - 安装
Anaconda“全家桶”,创建Python对应版本的虚拟环境。 
在Windows系统下笔者推荐后者。原因如下:
Anaconda的base环境集成了多种常用库,省去了自行安装的繁琐过程。conda可以创建多个独立的虚拟环境,并且能管理使用pip安装的库。
尽管如此在安装TensorFlow-GPU库的时候笔者还是推荐使用pip。笔者曾尝试使用conda进行安装,结果出现了错误。毕竟conda只是由社区维护的,没有受到TensorFlow官方团队的关注。而原生的pip相较之下就属于“亲儿子”了。
3 配置流程
3.1 安装CUDA Toolkit和cuDNN
首先根据TensorFlow官网给出的支持信息查看目前TensorFlow支持的CUDA Toolkit与cuDNN的版本。笔者使用的是CUDA Toolkit v9.0以及cuDNN v7.3版本。
- 下载
CUDA Toolkit安装包。安装时注意:- 选择自定义安装模式,并勾选所有选项。因为
CUDA Toolkit安装包内含有与之相匹配的显卡驱动程序。 
 - 选择自定义安装模式,并勾选所有选项。因为
 - 下载对应的
cuDNN压缩包。将解压的三个文件夹合并到CUDA Toolkit的根目录的三个同名文件夹下。笔者路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 
3.2 安装TensorFlow-GPU
- 安装好
Anaconda后,创建一个新的虚拟环境。打开Anaconda Prompt并输入:
其中conda create -n py36 python=3.6py36为虚拟环境名,python=3.6为指定的版本。
当系统询问是否安装时输入y。 - 激活新的虚拟环境。输入:
命令行的conda activate py36(base)变成了(py36)。 - 在新的虚拟环境中使用
pip安装TensorFlow-GPU库。输入:pip install --ignore-installed --upgrade tensorflow-gpu - 等待安装完成之后,进行测试。输入
python以打开解释器,并输入以下:import tensorflow as tf tf.test.gpu_device_name() - 返回结果的最后一行代码如下:
physical_device_desc: "device: 0, name: GeForce 840M, pci bus id: 0000:01:00.0, compute capability: 5.0" Tips
使用Anaconda的用户在创建好新环境之后会遇到一个问题——Anaconda自带的Jupyter Notebook或Jupyter 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日更新!
笔者最近在又学习使用PyTorch(TensorFlow还没玩好,逃~)。根据已经安装的CUDA Toolkit v9.0,在Pytorch官网可找到对应的pip的安装方法,同前文描述一样,先创建新的虚拟环境,然后安装PyTorch,最后可以添加Kernel。
进行测试:
cuda = t.cuda.is_available()
print(cuda)
返回结果为True则成功。
最新的PyTorch 1.0预览版已经发布啦,然而Windows系统暂时还不能玩,有点遗憾。笔者安装的是PyTorch 0.4.1版本。