環境
- Ubuntu Server 14.04
CUDAのインストール
CUDAとはNVIDIAが提供するGPU向けのC言語の統合開発環境とのこと。
Ubuntu側が提供しているバージョンはウンコなのでCUDA公式サイトよりdebパッケージをダウンロード。(バージョン変化が激しい)
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb
このパッケージはapt/sources.list.d/cuda.listにレポジトリを追加するだけのやつなので
sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb sudo apt-get update sudo apt-get install cuda
パスを通してインストールできているか確認 バージョンは適宜合わせること
export PATH=/usr/local/cuda-7.0/bin:$PATH nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2015 NVIDIA Corporation Built on Mon_Feb_16_22:59:02_CST_2015 Cuda compilation tools, release 7.0, V7.0.27
Caffeのコンパイル
まずは依存ライブラリのインストール
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler git libopenblas-dev
大きいので--depth 1
付けると吉。 以下ホームディレクトリ上で実行したものとする
git clone --depth 1 https://github.com/BVLC/caffe.git cd caffe
Makefile.configの設定を行う cp Makefile.config.example Makefile.config
を行い、以下変更
# GPUを使わない場合はコメントアウト CPU_ONLY := 1 # Caffeではデフォルトの行列計算用ライブラリが「ATLAS」である # CPUで作動するなら「OpenBLAS」のほうがマルチコア対応で早くなる #BLAS := atlas BLAS := open
make all -j4 make test make runtest
CaffeをPythonで使えるように
依存ライブラリのインストール
sudo apt-get install python-pip gfortran python-dev python-numpy python-skimage sudo pip install -r ~/caffe/python/requirements.txt
make pycaffe
パスを通す .bashrcに以下追記 & source ~/.bashrc
export PYTHONPATH=~/caffe/python/:$PYTHONPATH
確認
python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import caffe >>>
サンプル
有名な手書き数字のやつ(MNIST)をやってみる
cd /path/to/caffe ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh ./examples/mnist/train_lenet.sh
- get_mnist.sh MNISTデータをcaffe/data/mnist/にダウンロードして展開
- create_mnist.sh データをLMDB形式に変換(CaffeはLevelDBかLMDB形式でないと読み込めない模様)
- example/mnistにmnist_train_lmdbとmnist_test_lmdbが生成される
- train_lenet.sh lenet_train_test.prototxtとlent_solver.prototxtを読み込んで学習
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
と同義- CPU_ONLYの場合はexamples/mnist/lenet_solver.prototxt内の
solver_mode: GPU
をCPU
に書き換えること
最終的にlenet_iter_10000.caffemodelが