前言
本来这篇文章是可以不用写的,如果NVIDIA给linux设计了RTX20系列notebook驱动的话,但可惜没有(现在有了,233),所以新买的笔记本无法使用caffe和TensorFlow的gpu版本。如果用cpu版本,i7还比不上MX150显卡,所以,有必要研究一下如何在现有的win10系统上安装AI的相关框架和驱动等配套程序(事实证明这也折腾了两三天,主要是caffe折腾的,这货在windows下一点也不比在linux下好安装)。
相关的软件包大部分可见如下百度云盘:
链接:https://pan.baidu.com/s/1b7fKLZZQB2pP4CGFm-BIQg
提取码:0pb8
硬件基础
win10系统
RTX2060笔记本显卡(已经自带驱动)
没有任何python环境及相关框架、包。
任务按先后顺序依次为:
查看笔记本显卡型号、安装显卡驱动、安装cuda9.0、安装cudnn、安装anaconda3-4.2.0、python2.7(anaconda3下安装)、numpy、matplotlib、opencv、TensorFlow-GPU(1.9.0)(仅支持python3.5)、vs2013、caffe(仅支持python2.7)
Table of Contents
10 TensorFlow-GPU(1.9.0)(仅支持python3.5)
12.1 选择Microsoft版本并选择python2.7的原因
1 查看笔记本显卡型号
步骤:
打开“我的电脑”
右键“此电脑”
点击“属性”
点击“设备管理器”
点开“显示适配器”
查看NVIDIA显卡型号
效果如图
可以看到这台电脑是RTX2060显卡,有两条路可以安装NVIDIA显卡驱动。
2 安装显卡驱动
2.1 上官网查询(我没有走通)
网址 https://www.geforce.cn/drivers
按照提示,相应输入自己电脑的硬件情况即可
点击下载exe,再安装即可。
2.2 通过 GeForce Experience 安装
网址 https://www.geforce.cn/geforce-experience/download 如图
点击下载,再安装。之后打开 GeForce Experience,菜单栏上方进入“驱动程序”,进行安装即可,后期也可以对驱动程序进行升级,如图
3 安装cuda9.0
3.1选择cuda9.0的原因:
首先,这是一个稳定的版本
其次,TensorFlow-GPU最高支持cuda9,所以装cuda10就是作死
如果装了其他版本cuda的请先卸载掉,再安装cuda9.0,卸载方式
win10“在这里输入你要搜索的内容”输入控制面板,回车
点击“卸载程序”
点击“名称”排序
将NVIDIA CUDA *** X.X样式的其他版本的cuda组件删除。
3.2 安装步骤
先进入官网 https://developer.nvidia.com/cuda-90-download-archive
根据电脑的硬件配置选择,如图
点击Download下载,再进行安装。
3.3 配置环境变量
win10搜索"path"
"环境变量"
系统变量新建"CUDA_PATH_V9_0"和"CUDA_PATH",均为之前安装的同一目录
以我为例,为"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0"
3.4 命令行中进行检查
win+R,输入cmd,回车
则cuda9.0已经正确安装。
4 安装cudnn
4.1 下载
进入官网,https://developer.nvidia.com/cudnn
选择 Download cuDNN ,之后将其解压,得到大目录下的三个子目录,再对应放在cuda的不同目录下,例如(根据自己的来)
4.2 配置环境变量
接着再添加环境变量(根据自己的来)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
到此,cuDNN安装完成。
5 安装anaconda3-4.2.0
5.1 选择anaconda3-4.2.0的原因
这个版本的anaconda3是基于python3.5的
caffe 仅支持Python2.7和Python3.5两个版本
安装了3.5以上版本的Python必须要卸载或者另装python3.5,所以多一事不如少一事
anaconda集成了python很多科学计算的库,方便安装、配置和管理python的不同版本
由于官网下载速度过慢,因此选择清华的镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
ctrl+f搜索
Anaconda3-4.2.0-Windows-x86_64.exe
5.2 安装
进行下载,然后安装,我放在了c盘目录下
C:\Anaconda3
5.3 环境变量配置
C:\Anaconda3
C:\Anaconda3\Scripts
C:\Anaconda3\Library\bin
6 python2.7(anaconda3下安装)
在开始菜单中打开 anaconda prompt
6.1 创建
基于 python2.7 创建一个名为python2 的环境(期间会进行一些常用包的安装)
conda create --name python2 python=2.7
6.2 激活
激活 python2环境(windows)
activate python2
linux/mac下为
source activate python2
6.3 退出
退出python2(进入默认的python3.5)
deactivate python2
以上命令在普通命令行仍然适用。
7 numpy
通过激活和退出的方式分别安装python2.7和python3.5的相关包。
python2.7、3.5安装命令均为
pip install numpy
8 matplotlib
通过激活和退出的方式分别安装python2.7和python3.5的相关包。
8.1 python2.7
由于python2.7对于matplotlib的支持有一定问题,因此我们只能选择一个较低的版本进行安装,但不影响功能。
pip install matplotlib==1.5.0
8.2 python 3.5
对python3没有影响,正常安装(不指定版本号则默认安装最新版本)
pip install matplotlib
9 opencv
9.1 下载
进入官网 https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
选择使用python2.7和python3.5的对应版本
搜索
opencv_python‑3.4.5+contrib‑cp35‑cp35m‑win_amd64.whl
和
opencv_python‑2.4.13.7‑cp27‑cp27m‑win_amd64.whl
9.2 安装
之后进入下载目录进行安装(增加 --user 参数使用管理员权限)
通过激活和退出的方式分别选择python2.7和python3.5的pip
python3.5
pip install --user opencv_python‑3.4.5+contrib‑cp35‑cp35m‑win_amd64.whl
python2.7
pip install --user opencv_python‑2.4.13.7‑cp27‑cp27m‑win_amd64.whl
10 TensorFlow-GPU(1.9.0)(仅支持python3.5)
10.1 选择1.9.0版本的原因
我在使TensorFlow-GPU进行编程的时候,由于是较新的1.12.0,好像是因为board还是其他什么由于版本过新,出了bug
1.9.0较新,也较为稳定
一些框架的源码要求tensorflow1.9.0以上版本
10.2 安装
pip install tensorflow-gpu==1.9.0
由于win10系统不在支持python2.7的TensorFlow(CPU及GPU)版本,所以只能作罢。
11 visual studio 2013
11.1 选择vs2013原因
网上的案例教程大都为2013(少数为2015)的visual studio版本
其实主要是因为caffe包是用windows 8 SDK编译的,若用2017的windows 10 SDK编译会出很多各种各样的问题
11.2 资源
见开头的百度云盘(最稳定)
正常安装即可,如果安装了vs2017的话,建议将2013安装在另外的磁盘上,以免可能的冲突。
12 caffe(仅支持python2.7)
12.1 选择Microsoft版本并选择python2.7的原因
对windows系统更好的支持,少出bug
python3.5安装理论可行,但是安装中的bug千奇百怪,且和打地鼠一样越改bug越多而
python2.7安装一遍跑通
12.2 下载
先去github下载下来caffe,并解压(我放在了c盘上,固态速度快)
github地址 https://github.com/Microsoft/caffe
12.3 更改CommonSettings.props
接着,打开caffe下的Windows文件夹,找到一个名为CommonSettings.props.example的文件,并copy一份放在Windows文件下,更改附件名为CommonSettings.props,并对其进行修改配置(我用的是vscode)
xml项目 修改为 原因 CpuOnlyBuild
false 不止用cpu,还要用gpu UseCuDNN
true
要使用cudnn CudaVersion
9.0 之前安装的是cuda9.0 PythonSupport
true 支持python MatlabSupport
true 支持MATLAB CuDnnPath
C:\cudnn-9.0-windows10-x64-v7
之前解压的cuDNN文件夹,cuda的上一级 PythonDir
C:\Anaconda3\envs\python2\
anaconda下的python2.7虚拟环境 MatlabDir
C:\Program Files\MATLAB\R2016a
自己的MATLAB安装地址 第55行 IncludePath 加入$(MatlabDir)\toolbox\distcomp\gpu\extern\include
微软更新(否则编译时mxGPUArray.h找不到)
最终的全文如下
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BuildDir>$(SolutionDir)..\Build</BuildDir>
<!--NOTE: CpuOnlyBuild and UseCuDNN flags can't be set at the same time.-->
<CpuOnlyBuild>false</CpuOnlyBuild>
<UseCuDNN>true</UseCuDNN>
<CudaVersion>9.0</CudaVersion>
<!-- NOTE: If Python support is enabled, PythonDir (below) needs to be
set to the root of your Python installation. If your Python installation
does not contain debug libraries, debug build will not work. -->
<PythonSupport>true</PythonSupport>
<!-- NOTE: If Matlab support is enabled, MatlabDir (below) needs to be
set to the root of your Matlab installation. -->
<MatlabSupport>true</MatlabSupport>
<CudaDependencies></CudaDependencies>
<!-- Set CUDA architecture suitable for your GPU.
Setting proper architecture is important to mimize your run and compile time. -->
<CudaArchitecture>compute_35,sm_35;compute_52,sm_52</CudaArchitecture>
<!-- CuDNN 4 and 5 are supported -->
<CuDnnPath>C:\cudnn-9.0-windows10-x64-v7</CuDnnPath>
<ScriptsDir>$(SolutionDir)\scripts</ScriptsDir>
</PropertyGroup>
<PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
<CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.lib</CudaDependencies>
</PropertyGroup>
<PropertyGroup Condition="'$(UseCuDNN)'=='true'">
<CudaDependencies>cudnn.lib;$(CudaDependencies)</CudaDependencies>
</PropertyGroup>
<PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
<LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)</LibraryPath>
<IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup>
<OutDir>$(BuildDir)\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup>
<LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)</LibraryPath>
<IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(PythonSupport)'=='true'">
<PythonDir>C:\Anaconda3\envs\python2\</PythonDir>
<LibraryPath>$(PythonDir)\libs;$(LibraryPath)</LibraryPath>
<IncludePath>$(PythonDir)\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(MatlabSupport)'=='true'">
<MatlabDir>C:\Program Files\MATLAB\R2016a</MatlabDir>
<LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)</LibraryPath>
<IncludePath>$(MatlabDir)\extern\include;$(MatlabDir)\toolbox\distcomp\gpu\extern\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(CpuOnlyBuild)'=='true'">
<ClCompile>
<PreprocessorDefinitions>CPU_ONLY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(UseCuDNN)'=='true'">
<ClCompile>
<PreprocessorDefinitions>USE_CUDNN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<CudaCompile>
<Defines>USE_CUDNN</Defines>
</CudaCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(PythonSupport)'=='true'">
<ClCompile>
<PreprocessorDefinitions>WITH_PYTHON_LAYER;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(MatlabSupport)'=='true'">
<ClCompile>
<PreprocessorDefinitions>MATLAB_MEX_FILE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<ClCompile>
<MinimalRebuild>false</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;USE_OPENCV;USE_LEVELDB;USE_LMDB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<Optimization>Full</Optimization>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<GenerateDebugInformation>true</GenerateDebugInformation>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
</Project>
12.4 vs2013 编译
接着,用vs2013的管理员模式(否则错误也是千奇百怪)打开caffe.sln(C:\caffe-master\windows\Caffe.sln)文件
12.4.1 首先设置libcaffe的属性
12.4.2 右键libcaffe,生成
大约10分钟之后,编译成功,这时caffe-matter文件夹所在的目录中,便多出了NugetPackages文件(第三方库文件)(嫌慢的去开头的百度云找,在安装过去)
12.4.3 编译其他文件
之后依次编译caffe,matcaffe,pycaffe。为了保险,又右键解决方案,生成解决方案
12.5 配置环境
此时caffe编译成功,但是要想使用,需要配置接口环境
12.5.1 MATLAB:
(1)将上步release生成的matcaffe文件夹加入matlab的路径中
其次还要将D:\caffe\caffe-master\Build\x64\Release加入path环境变量之中
重启MATLAB,输入测试代码:caffe.reset_all
12.5.2 python配置:
编译python支持库后,你还需要执行如下之一才能在python里使用:
设置环境变量 PythonPath,值为 <caffe_root>\Build\x64\Release\pycaffe,或者
复制目录 <caffe_root>\Build\x64\Release\pycaffe\caffe 到 <python_root>\lib\site-packages 目录
python测试,打开Windows的dos窗口
输出python,试着引用caffe :import caffe
会出现
ImportError: No module named google.protobuf.internal
则需要安装protobuf,使用pip进行安装,在dos窗口输入(注意:不要使用conda的命令,未安装成功)
pip install protobuf
如果又有
ImportError: No module named yaml
就
pip install pyyaml
安装成功后,在打开python试着引用caffe
恭喜你,装完了。