让你手中的煤气灶疯狂输出!
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.6
py36
为虚拟环境名,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
版本。