4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

NVCaffe 0.15をWindowsでビルド(GPU対応)

NVIDIA主催のAI講習でAI開発の手ほどきを受けてウキウキの会社員のみなさんがいきなりぶち当たる壁「Linux機」の手配。おじさんはそんな辛い気持ちよくわかります。

そんな事情はわかりつつ、NVIDIA DIGITS 6.0をWindowsで使う! - 夜間飛行ではwindows版BVLC/CaffeでDIGITSを動かしたのですが、オリジナルがビルドできないのって気になります。

cmakeの扱いやCIツールのお勉強、WindowsとLinuxの差異へのさらなる習熟を目指してNVIDIAのNVCaffe 0.15をWindows機向けにbuildしましたのでご報告です。

とりあえずバイナリ欲しい人向け

この辺にリンク貼っておいたんで… Prebuild binariesから持っていってくだされ。
caffe/README.md at caffe-0.15-win · Chachay/caffe

(Appveyorの都合から2019年1月まで有効だと思います)

環境

  • Windows 7 / Windows 10 - 64 bit
  • Anaconda/ Miniconda
  • Microsoft Visual C++ Compiler for Python 2.7
  • Visual C++ 2015 Build Tools
  • CUDA8 / CuDNN7
  • VCPKG

VCPKGは以降のDependancyを固定するため、https://github.com/Microsoft/vcpkg/tree/47f362db993e31588f72f08e2982b04ae924430c を使うこと前提です。

Python環境の準備

NVIDIA DIGITS 6.0をWindowsで使う! - 夜間飛行で準じる環境をお願いします。そのあと

pip install protobuf==3.6

でprotobufをアップグレード(たぶん3.5でいい)

VCPKGでライブラリの準備

必要なライブラリをざざっと作ります。

vcpkg install glog gflags lmdb leveldb snappy protobuf hdf5 opencv openblas zlib libjpeg-turbo ^
                    boost-system boost-thread boost-filesystem boost-regex ^
                    --triplet x64-windows

boost-pythonの設定

vcpkgで作るboost-pythonがpython3版なのでport設定を変更します

/ports/boost-python/profile.cmake
# Find Python. Can't use find_package here, but we already know where everything is
set(PYTHON_PATH "D:/Anaconda3/envs/DIGITS/python.exe")
file(GLOB PYTHON_INCLUDE_PATH "D:/Anaconda3/envs/DIGITS/include")
set(PYTHONLIBS_RELEASE  "D:/Anaconda3/envs/DIGITS/libs")
set(PYTHONLIBS_VERSION "27")
include(${CURRENT_INSTALLED_DIR}/share/boost-build/boost-modular-build.cmake)
boost_modular_build(SOURCE_PATH ${SOURCE_PATH})
include(${CURRENT_INSTALLED_DIR}/share/boost-vcpkg-helpers/boost-modular-headers.cmake)
boost_modular_headers(SOURCE_PATH ${SOURCE_PATH})

あとはCONTROLからpython3を抜いておくと余計なPython.exeはビルドしなくなります。そして、boost-buildをこちょこちょ。

/installed/x64-windows/share/boost-build/user-config.jam
if "@PORT@" = "boost-python"
{
    using python : @PYTHON_VERSION@ : "@PYTHON_PATH@" : "@PYTHON_INCLUDE_PATH@" : "@PYTHONLIBS_RELEASE@" ;
    using python : @PYTHON_VERSION@ : "@PYTHON_PATH@" : "@PYTHON_INCLUDE_PATH@" : "@PYTHONLIBS_DEBUG@" : <python-debugging>on ;
}

boost-pythonのビルド

vcpkg install boost-python --triplet x64-windows

できたライブラリのバージョン

  • Boost 1.67 (本当は1.5Xがよかった)
  • Protobuf 3.5.1 (本当は3.1.Xがよかった)
  • HDF 1.10.1
  • lmdb 0.9.70
  • LevelDB 1.20
  • OpenCV 3.4.1

Caffeのビルド

このレポ使います Chachay/caffe: Caffe: a fast open framework for deep learning.

git clone https://github.com/Chachay/caffe/

build_windows.cmdの編集

みなさんの環境に合わせて[root]/script/build_windows.cmdを編集します

  • VCPKG_DIRへのパスに従って、このあたり
if NOT DEFINED VCPKG_DIR set VCPKG_DIR=C:\tools\vcpkg\installed\x64-windows
SET VCPKG_CMAKE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake
SET HDF5_ROOT=C:\tools\%VCPKG_PBUILD_NAME%\installed\%VCPKG_TRIPLET%
SET HDF5_ROOT_DIR_HINT=C:\tools\%VCPKG_PBUILD_NAME%\installed\%VCPKG_TRIPLET%\share\hdf5
  • CMakeOutput.log/CMakeError.logの表示削除 消し忘れてしまいましたすみません。227行目から4行削除.
echo --------------CMakeOutput.log---------------------
cat "C:/project/caffe/build/CMakeFiles/CMakeOutput.log"
echo --------------CMakeError.log---------------------
cat "C:/project/caffe/build/CMakeFiles/CMakeError.log"

ビルド

cd caffe
script\build_windows.cmd

こんなログが出るはず → caffe 0.15.15.1.18 - AppVeyor

変更点の解説

あとで書く

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?