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設定を変更します
# 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をこちょこちょ。
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
変更点の解説
あとで書く