임시 블로그 이름

Windows에서 (최소한의 노력으로) pyCaffe 빌드 하기 본문

엔지니어링

Windows에서 (최소한의 노력으로) pyCaffe 빌드 하기

paeton 2016. 8. 25. 14:22

Microsoft쪽에서 운영하고 있는 windows branch를 이용한다


https://github.com/BVLC/caffe/tree/windows





준비물:

1) Visual Studio 2013

2) Python2.7 (Miniconda2)

    - 원래 caffe는 python 3+ 버전을 지원하지만,

    - 일단 저 branch에서는 python 2.7을 사용하도록 되어있다. (이게 설명에 나와있지 않다!!!!)

    - boost library를 nuget package를 통해서 받고 설치하게 되어있는데, nuget에 올라와 있는 boost-python package가 2.7만 지원하는 버전만 올라와 있기 때문이다.

3) CUDA 7.5 (GPU 가속을 쓰고 싶으면 필요하고 아니면 없어도 됨)

4) cuDNN v3 또는 v4 (Deep Neural Network를 CUDA로 구현한 라이브러리, 사용해도 되고 안해도 됨)

5) 윈도우

    - 한글 윈도우라면 언어 설정을 변경하거나, 빌드 옵션을 변경해야 한다.







스텝:

1) Visual Studio 2013 설치

 - 기본 visual studio 2013으로 솔루션이 구성되어있는 것으로 보인다.

 - visual studio 2015가 최신이지만, cuda를 지원하지 않는다. (물론 엄청 노가다를 하면 되게 만들수 있다고는 하지만 귀찮다)

 - 개인이라면 visual studio community edition을 사용하자. (불법 크랙버전을 쓰는건 권장하지 않는다)


2) CUDA/cuDNN 설치 (선택)

 - NVIDIA GPU가 없거나, GPU 가속을 쓰지 않을 것이라면 필요 없다.

 - NVIDIA 홈페이지에 가서 CUDA 7.5와 cuDNN v3 또는 v4를 받는다.

 - cuDNN은 v3 또는 v4만 지원한다고 되어있다. (최신 버전은 v5는 지원하지 않는것 같다. 귀찮아서 실험 안해봤다.)


3) 시스템 로켈 언어 변경 또는 빌드 옵션 변경 하기

 - caffe의 소스코드는 utf8 인코딩을 사용하는데, 보통 한글 윈도우는 euc-kr을 사용하게 되어있다. 이런 경우 euc-kr에서 표현할 수 없는 문자가 소스코드에 들어있으면 warning 메시지를 띄운다. 그런데 caffe의 build 환경이 treat warning as error로 되어있으므로 빌드 에러가 나게 된다.

 - Project 속성에서 'treat warning as error' 옵션을 꺼도 되고,

 - 그게 귀찮으면, 제어판 -> 국가 및 언어 -> 관리자 옵션 -> 유니코드를 지원하지 않는 프로그램용 언어 에서 '시스템 로캘 변경' 탭을 클릭하고, 거기에서 '영어(미국)'을 선택하면 된다.


4) Python 설치

 - 저 branch의 설명을 보면 miniconda를 설치하라고 나오는데, 이건 꼭 이걸 설치해야 한다기 보다는 파이썬을 깔아야한다는 것이고, pycaffe의 dependency package 또한 같이 설치해야 된다는 이야기다.

 - 나는 miniconda 대신에 winpython 설치 했고, 나중에 경로만 잘 설정해 주면 아무 문제 없다.


5) 필요한 Python package 설치

 - conda 또는 pip를 이용해서 설치한다.

 - 위에서 말한 miniconda를 쓸 예정이라면 다음 명령어를 치자

     >> conda install --yes numpy scipy matplotlib scikit-image pip

     >> pip install protobuf

 - winpython의 경우 이미 다 포함되서 배포되는거니까 굳이 신경 쓸 필요 없는데, 아마 protobuf는 따로 설치가 필요할 것이다. 그러니까 똑같이 pip install protobuf 해서 설치하자



6) 빌드 옵션 설정

 - caffe\windows\ 폴더 안에 보면 CommonSettings.props.example 이라는 파일이 있는데 이걸 하나 복사해서 CommonSettings.props 파일을 하나 만들자.

 - 이 파일은 빌드 설정이 정의되어있는 xml 파일이므로, notepad++같은 텍스트 에디터로 편집하거나, 아니면 비주얼 스튜디오에서 열면 잘 열린다.

 - 주로 건드려야 할 옵션은 다음과 같다

  <CpuOnlyBuild>false</CpuOnlyBuild> <- CPU버전만 빌드할 거면 true, GPU 가속도 가능한 버전을 빌드하고 싶으면 false라고 하면 된다. 단, false라고 할거면 cuda가 설치되어있어야 한다.

  <UseCuDNN>true</UseCuDNN>  <- GPU 가속에서 cuDNN 라이브러리를 사용할 것인지 설정한다.

 <PythonSupport>true</PythonSupport>  <- pycaffe를 빌드할것인지에 대한 설정이다. pycaffe를 쓰려면 당연히 true라고 해야 된다.

 <CudaArchitecture>compute_30,sm_30;</CudaArchitecture>  <- cuda architecture version을 정의하는 부분인데, 자신의 그래픽카드를 보고 설정하면 된다. 범용으로 쓰이는 버전을 빌드하고 싶다면 그냥 낮은 버전을 쓰는게 좋다. compute_20, sm_20; 정도면 되지 않을까 싶다.

 <PythonDir>D:\DevSW\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\</PythonDir> <- 파이썬이 설치되어있는 경로이다. 기본은 아마 C:\Miniconda2 일텐데 자신의 컴퓨터에 설치된 경로를 알려주면 된다.



7) 빌드

 - caffe에 contribution하는 개발자가 아니라면 그냥 release 모드로 빌드 하자.

 - 처음 빌드할때 nuget package manager를 통해서 필요한 라이브러리들을 다운로드하므로 시간이 많이 걸린다.

 - 또 바로 gpu 가속 빌드를 하면, 시간이 너무 많이 걸리므로, cpu only로 빌드해서 잘 되면 gpu로 하는걸 추천한다. cuda가 원래 빌드하는데 시간이 마이 걸린다.



8) 즐겁게 사용

 - 사용법은 써보고 나중에 올려보겠음

Comments