Windows版PyCaffe-GPU编译流程(续)

0. 声明

当前版本C1.0(仅做参考)。

作者联系方式:E-mail: WindForest@yeah.net

首先将本文使用到的各工具版本列出如下:

编译/目标操作系统Windows 10 20H2 x64
本文使用的VS版本Virtual Studio 2015 (VC14)
本文操作步骤支持的CUDA版本CUDA8.0
本文配合使用的cuDNN版本cuDNN7.1.3
Python版本Anaconda Python3.5.4
Caffe源https://github.com/BVLC/caffe/tree/windows
本机CPU信息Intel® Core™ i7-5500U CPU @ 2.40GHz
本机GPU信息NVIDIA GeForce 940M算力5.0

[建议]

所有的程序或环境最好使用其默认目录,以避免不必要地在环境配置上浪费时间。如果你的电脑C盘没有足够的空间,不如换一块大容量的SSD。

1. VS和CUDA的版本选择

Caffe框架以源码提供,因此首先需要安装 Virtual Studio 2015(VC14) ,按照网上一些资料所述,VS2013(VC12)也可以编译Caffe1.x,但是考虑到目标项目提供的示例程序是基于VC14创建的,这里选择VS2015版本。

若需编译Caffe的GPU版本,则CUDA和cuDNN也需要安装。高版本CUDA/cuDNN中有一些API变动,因此考虑到源码说明文件中给出的建议,使用CUDA8.0版本。

VS的安装应该在CUDA之前,以便于CUDA安装过程中增加对VS的支持,安装时需要英文语言包支持、Python Tools支持以及Windows SDK支持。而后将cuDNN解压,将其中的文件复制到CUDA安装目录的同名文件夹下,并将CUDA安装目录中的 .\lib\x64 目录添加进系统环境变量。

2. Python环境配置

安装Anaconda3,查找相关资料更换镜像源以加快下载速度。在Anaconda .Navigator中新建环境或在Anaconda Powershell Prompt中执行以下语句新建环境:

conda create --name caffe-python3 python=3.5.4

[注意]

如果在图形界面中创建Python3.5的环境,默认安装的版本为Python3.5.6。

考虑到项目适配,我使用的是Python3.5.4,其它小版本或许也行,但是本人没进行过尝试。

在Anaconda .Navigator中进入该环境的命令提示符界面或在Anaconda Powershell Prompt中执行以下语句激活环境:

conda activate caffe-python3

使用以下命令安装依赖包:

pip install numpy scipy protobuf scikit-image matplotlib pandas

[注意]

这些环境必须使用pip安装而非conda,否则可能出现import caffe后python无报错退出的情况。

如果安装速度过慢,可参考相关资料为pip更换国内镜像源。

3. Caffe的适配和编译

下载Caffe-Windows-BVLC工程,修改 ./scripts/build_win.cmd 文件:

  1. 修改编译开关

    ...
        :: Change the settings here to match your setup
        :: Change MSVC_VERSION to 12 to use VS 2013
        if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14                  --使用VS2015
        :: Change to 1 to use Ninja generator (builds much faster)
        if NOT DEFINED WITH_NINJA set WITH_NINJA=0                       --不使用Ninja编译器
        :: Change to 1 to build caffe without CUDA support
        if NOT DEFINED CPU_ONLY set CPU_ONLY=0                           --关闭CPU版本编译
        :: Change to generate CUDA code for one of the following GPU architectures
        :: [Fermi  Kepler  Maxwell  Pascal  All]
        if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto            --自动匹配CUDA
        :: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs
        if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release             --编译Release版本
        :: Set to 1 to use NCCL
        if NOT DEFINED USE_NCCL set USE_NCCL=1
        :: Change to 1 to build a caffe.dll
        if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0
        :: Change to 3 if using python 3.5 (only 2.7 and 3.5 are supported)
        if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3               --使用Python3
        :: Change these options for your needs.
        if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1                   --编译PyCaffe
        if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1
        if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=0
        :: If python is on your path leave this alone
        if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python
        :: Run the tests
        if NOT DEFINED RUN_TESTS set RUN_TESTS=0
        :: Run lint
        if NOT DEFINED RUN_LINT set RUN_LINT=0
        :: Build the install target
        if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0
    ...
    

    [注意]

    若不启用NCCL,可能导致编译成功、导入包成功,但无法进行GPU训练的情况。

  2. 全局搜索 cmake -G ,增加CUDNN路径:

    ...
    cmake -G"!CMAKE_GENERATOR!" ^
          -DBLAS=Open ^
          -DCMAKE_BUILD_TYPE:STRING=%CMAKE_CONFIG% ^
          -DBUILD_SHARED_LIBS:BOOL=%CMAKE_BUILD_SHARED_LIBS% ^
          -DBUILD_python:BOOL=%BUILD_PYTHON% ^
          -DBUILD_python_layer:BOOL=%BUILD_PYTHON_LAYER% ^
          -DBUILD_matlab:BOOL=%BUILD_MATLAB% ^
          -DCPU_ONLY:BOOL=%CPU_ONLY% ^
          -DCOPY_PREREQUISITES:BOOL=1 ^
          -DINSTALL_PREREQUISITES:BOOL=1 ^
          -DUSE_NCCL:BOOL=!USE_NCCL! ^
          -DCUDA_ARCH_NAME:STRING=%CUDA_ARCH_NAME% ^
    ++    -DCUDNN_ROOT=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 ^
          "%~dp0\.."
    ...
    
  3. 全局搜索 CONDA_ROOT ,在对应Python版本处增加Python安装路径:

    ...
        :: Set python 3.5 with conda as the default python
        if !PYTHON_VERSION! EQU 3 (
            set CONDA_ROOT=C:\Users\Hello\anaconda3\envs\caffe-python3
        )
    ...
    

开始编译之前,首先需要安装CMake,CMake没有版本限制,直接安装最新版即可。而后执行该脚本生成VS工程,生成过程中若出现 libraries_v140_x64_py35_1.1.0.tar.bz2 下载过慢的情况,可手动下载该文件后复制到目标目录再次运行脚本。

[注意]

执行编译脚本应当在Anaconda终端中对应的环境下进行,否则可能识别到Anaconda之外的Python环境。

使用VS2015打开 ./scripts/build/Caffe.sln 工程并在 Release x64 模式下生成解决方案,此时 ./python/caffe 目录下的内容即为最终的PyCaffe。

4. PyCaffe安装和测试

./python/caffe 目录拷贝到 C:\Users\用户名\anaconda3\envs\caffe-python3\Lib\site-packages 即可完成安装,在 caffe-python3 的conda-python环境下执行import caffe没有报错。

使用PyCaffe自带的mnist手写数字识别的示例进行验证的过程参见 参考2:Caffe的运行mnist手写数字识别

参考

  1. Caffe+VS2015+python3的安装(基于windows)
  2. Caffe的运行mnist手写数字识别

————2021-4-8@燕卫博————

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值