Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Caffeのインストールについて
Preferred Networks Inc. ⼤大野健太
oono@preferred.jp
2015/7/9
⽇日本神経回路路学会主催セミナー
「Deep Learningを使ってみよう!」
更更新履履歴
• 2015/7/6:公開
• 2015/7/9:GPU版Caffeのインストール⽅方法を加筆、CUDAインストールの症状例例を更更新
誤字・脱字報告、ご感想などありましたらご連
絡いただけると幸いです。可能な範囲で対応し
ます。...
この資料料について
• 本資料料は2015年年9⽉月1⽇日開催予定の⽇日本神経回路路学会主催セミナー「Deep Learningを使ってみ
よう!」の事前準備のためのものです(http://www.jnns.org/DeepSeminar2/h...
バージョンに関する注意
• インストール環境
• 基本的にOS:Ubuntu14.04 + CUDA7.0の環境を想定しています
• Caffe
• 7⽉月2⽇日現在での最新バージョン(7d3a8e9)を利利⽤用します
4
免責事項
• インストール⼿手順に関する免責事項
• 本資料料で提⽰示した⼿手順により利利⽤用者に不不利利益が⽣生じても責任は負いません
• 環境の違いなどの原因で、ここで提⽰示した⽅方法でインストールできない可能性があります
• インストール...
インストール全般に関するアドバイス
• 公式の⼿手順を⼀一読し、全体像を把握してから作業にとりかかると良良いです
• 発⽣生したエラーメッセージのインターネット検索索は有効な原因追跡⽅方法です
• 質問サイトで対処⽅方法が議論論されている場合が...
CPU Only版のインストール
インストールスクリプト
• Ubuntu14.04へのCPU Only版Caffeのインス
トールスクリプト( AWS・Ubuntu14.04インス
タンスで確認)
• https://github.com/delta2323/JNNS2015...
インストール概要
• ドキュメント
• 公式:http://caffe.berkeleyvision.org/installation.html
• Wiki (⾮非公式) :https://github.com/BVLC/caffe/wiki...
1. 依存ライブラリのインストール
• 必要なライブラリ
• apt-getで⼊入るライブラリ群(インストールスクリプトのapt-get installの引数を参照)
• それでは⼊入らないライブラリ群(glog, gflags)
• 理理想的...
2. Makefile.configの作成
• Makefile.config:Caffeのビルドをカスタマイズするための設定ファイル、Makefileが利利⽤用する
• Makefile.config.exampleとしてテンプレートが提供さ...
2. Makefile.configの作成
Caffeの⼊入⼿手
$ cd X # X is the path to directory Caffe is installed
$ git clone https://github.com/BVL...
補⾜足:Makefile, Makefile.config内の変数
• CXX/NVCC:コンパイラとして使⽤用するC++, NVCCを指定
• 特にMac10.9以降降でコンパイルする場合、CXXを変更更する必要があるかもしれない(後述)
•...
補⾜足:Makefile, Makefile.config内の変数
• BLAS:利利⽤用するBLAS(線形代数ライブラリ)を指定する
• デフォルトではATLASというライブラリを利利⽤用する
• CUDA_DIR:CUDA関係のライブラリが...
3. Caffeのインストール
$ cd $CAFFE_ROOT
$ make all
15
example(MNIST)の実⾏行行
• ⼿手順の詳細・exampleの解説は公式
ドキュメントを参照
• http://caffe.berkeleyvision.org/
gathered/examples/mnist.html
データセッ...
Mac OS 10.9以降降でのCaffeのインストール
Q. Mac OS 10.9以降降上でCaffeを簡単にインストールする⽅方法はないか?
A. GPUを使わないならば10.8とほぼ同等の⽅方法でできます
公式サイトのインストール⼿手順...
Caffe(GPU版)のインストール
概要
• GPU版のインストールの⽅方法として本資料料では2通りを紹介します
• AWSのGPUインスタンス上でCaffeコミュニティーが提供するAMIを利利⽤用する
• GPUインスタンスを利利⽤用できるなら、この⽅方法が楽かつ確実
• ⾃自...
CaffeコミュニティーのAMIを利利⽤用する
• AMI ID : ami-763a311e
• GPUインスタンス(g2.2xlarge or g2.8xlarge)での利利⽤用が仮定されています
• GPUインスタンスはAWSの無料料利利...
⾃自前のマシンへの⼿手動インストール
• 公式ドキュメント:http://caffe.berkeleyvision.org/installation.html
• インストール⼿手順
1. CUDAのインストール ← GPU版だけの作業、ここが...
インストールスクリプト
• Caffeコミュニティーで2通りのコマンドレベルでのインストール⼿手順が紹介されています
• パッケージマネージャー(次スライド参照)を利利⽤用する⽅方法
• https://github.com/BVLC/caff...
CUDAのインストールに関して
• パッケージマネージャーでのインストールがうまくいくならばそれに越したことはありません
• CUDA Toolkit Documentation 3章に該当
• https://docs.nvidia.com/...
CUDAのインストールで発⽣生するエラー
• マシン・バージョン・デバイス依存が強く、エラーは網羅羅できない
• ⼤大雑把にはエラーは以下の3種類に分類できる
• CUDAのインストールに失敗する
• 明⽰示的なエラーが起こる場合と、⼀一⾒見見...
症状例例1:nvidia-uvmが⾒見見つからない
• (対処法1)modprobeによる⼿手動ロードでの解決例例が報告されています
• $ sudo modprobe <path/to/nvidia-uvm>
• nvidia-346-uvm...
付録:インストール時に知っておくと便便利利な知識識
環境変数関係
• LIBRARY_PATH / LD_LIBRARY_PATH:ライブラリの検索索パス
• LIBRARY_PATH:gccが(静的or共有)ライブラリをリンクする際の検索索パス
• LD_LIBRARY_PATH:実⾏行行時の...
共有ライブラリ関係
• ldd/ldconfig:共有ライブラリの依存関係を管理理するコマンド群
• ldd : プログラムが依存している共有ライブラリを表⽰示
• ldd /usr/bin/lsをしてみると何やっているかわかる
• ldcon...
エラー対処例例
• プログラム実⾏行行時にプログラム(A)が共有ライブラリ(B)を⾒見見つけられないというエラー
A: error while loading shared libraries: libB.so.X: cannot open s...
Python関連⽤用語
• モジュール:特定の機能を実装したPythonのライブラリ
• Pythonのプログラム内で、importして⾃自分のプログラムで利利⽤用する
• pip:Pythonのパッケージ管理理ツール or そのツールで提供さ...
GPU関連⽤用語
• CUDA:NVIDIAが提供の、GPU向けのライブラリやコンパイラの総称
• NVCC:CUDAのC++コンパイラ
• cuBLAS, cuDNN:CUDAのライブラリ(⾏行行列列演算, 深層学習)
• Host/Devi...
Upcoming SlideShare
Loading in …5
×

Caffeインストール

Caffeインストール

  1. 1. Caffeのインストールについて Preferred Networks Inc. ⼤大野健太 oono@preferred.jp 2015/7/9 ⽇日本神経回路路学会主催セミナー 「Deep Learningを使ってみよう!」
  2. 2. 更更新履履歴 • 2015/7/6:公開 • 2015/7/9:GPU版Caffeのインストール⽅方法を加筆、CUDAインストールの症状例例を更更新 誤字・脱字報告、ご感想などありましたらご連 絡いただけると幸いです。可能な範囲で対応し ます。 2
  3. 3. この資料料について • 本資料料は2015年年9⽉月1⽇日開催予定の⽇日本神経回路路学会主催セミナー「Deep Learningを使ってみ よう!」の事前準備のためのものです(http://www.jnns.org/DeepSeminar2/home.html) 内容 • CPU Only版Caffeのインストール • GPU版Caffeのインストール • 付録:インストールに関する知識識 以下では $ ls など、$が先頭についているものはコ マンド実⾏行行を表します 3
  4. 4. バージョンに関する注意 • インストール環境 • 基本的にOS:Ubuntu14.04 + CUDA7.0の環境を想定しています • Caffe • 7⽉月2⽇日現在での最新バージョン(7d3a8e9)を利利⽤用します 4
  5. 5. 免責事項 • インストール⼿手順に関する免責事項 • 本資料料で提⽰示した⼿手順により利利⽤用者に不不利利益が⽣生じても責任は負いません • 環境の違いなどの原因で、ここで提⽰示した⽅方法でインストールできない可能性があります • インストールの失敗などにより、構築環境が破壊される可能性があります 5
  6. 6. インストール全般に関するアドバイス • 公式の⼿手順を⼀一読し、全体像を把握してから作業にとりかかると良良いです • 発⽣生したエラーメッセージのインターネット検索索は有効な原因追跡⽅方法です • 質問サイトで対処⽅方法が議論論されている場合があります • バージョン違いや根本原因が異異なるなどの理理由で、回答の⼿手順で解決しない場合も多いです • できるだけクリーンな環境を⽤用意すると余計なエラーに悩まされなくなります • 公式の⼿手順を読みましょう 6
  7. 7. CPU Only版のインストール
  8. 8. インストールスクリプト • Ubuntu14.04へのCPU Only版Caffeのインス トールスクリプト( AWS・Ubuntu14.04インス タンスで確認) • https://github.com/delta2323/JNNS2015- tutorial/blob/master/caffe/cpu/install.sh • 上記スクリプトをubuntuユーザーのホームディ レクトリに置き、以下のコマンド実⾏行行すると、 caffeユーザー(パスワードはユーザー名と同 ⼀一)を作成し、/opt/caffeにCaffeをcaffeユー ザーでインストールします • 注意:既存の環境を破壊する可能性があります。 クリーンな環境で実⾏行行してください。 インストール $ cd $ sudo bash ./install.sh exampleの実⾏行行 $ su – caffe #  caffeユーザーの変更更 その後「example(MNIST)の実⾏行行」を実⾏行行の コマンドで実⾏行行 8
  9. 9. インストール概要 • ドキュメント • 公式:http://caffe.berkeleyvision.org/installation.html • Wiki (⾮非公式) :https://github.com/BVLC/caffe/wiki • Wikiの⽅方が嬉しい情報が多い(AWS/AMIの利利⽤用⽅方法など)が、公式ではないので注意 • インストールのステップ(前述のスクリプトには1-4が含まれています) 1. Caffeの依存ライブラリのインストール 2. Makefile.configの作成(CPU_ONLY := 1追加の修正が必要) 3. Caffeのインストール 4. PythonからCaffeを利利⽤用するための作業 ← スクリプト参照 9
  10. 10. 1. 依存ライブラリのインストール • 必要なライブラリ • apt-getで⼊入るライブラリ群(インストールスクリプトのapt-get installの引数を参照) • それでは⼊入らないライブラリ群(glog, gflags) • 理理想的には、「依存ライブラリのインストール」→「Caffeのインストール」ですが、実際には Caffeのインストール中に⾜足りないライブラリに気づいて後からライブラリを追加でインストー ルすることになると思います(環境やバージョンによってデフォルトで⼊入っているライブラリが 異異なるため)。 • 「ライブラリが⾒見見つからないというエラーが発⽣生」→「ライブラリ名(⼤大抵はlibXXX.soという名 前)でインターネット検索索してapt-getの引数YYYを⾒見見つける」→ 「sudo apt-get install YYYを 実⾏行行」解決する場合が多いです 10
  11. 11. 2. Makefile.configの作成 • Makefile.config:Caffeのビルドをカスタマイズするための設定ファイル、Makefileが利利⽤用する • Makefile.config.exampleとしてテンプレートが提供されている • 基本はテンプレートをそのまま利利⽤用できるが、以下のような時には変更更が必要 • GPUを使⽤用せず、CPUのみでCaffeを利利⽤用したい ← 今回はこれに該当 • Caffeインストール時の使⽤用コンパイラ/ライブラリを変更更したい 11
  12. 12. 2. Makefile.configの作成 Caffeの⼊入⼿手 $ cd X # X is the path to directory Caffe is installed $ git clone https://github.com/BVLC/caffe.git Makefile.configの作成 $ cd X/caffe $ cp Makefile.config.example Makefile.config Makefile.config内の以下のコメント⾏行行を有効化する # CPU_ONLY := 1 → CPU_ONLY := 1 12
  13. 13. 補⾜足:Makefile, Makefile.config内の変数 • CXX/NVCC:コンパイラとして使⽤用するC++, NVCCを指定 • 特にMac10.9以降降でコンパイルする場合、CXXを変更更する必要があるかもしれない(後述) • CXXFLAGS/NVCCFLAGS:C++, NVCC実⾏行行時に与えるオプション • CPU_ONLY:この値を1にすると、GPU関係のモジュールをインストールしない • USE_CUDNN:この値を1にすると、cuDNNライブラリを使⽤用する 13
  14. 14. 補⾜足:Makefile, Makefile.config内の変数 • BLAS:利利⽤用するBLAS(線形代数ライブラリ)を指定する • デフォルトではATLASというライブラリを利利⽤用する • CUDA_DIR:CUDA関係のライブラリがインストールされたディレクトリへのパス • 多くのケースでCUDAは/usr/local/cuda-X.Yにインストールされる (X, Yはバージョン)、環境 変数として設定するのがベター • (補⾜足)CAFFE_ROOT:Caffeのインストールディレクトリ • Makefileでは利利⽤用されておらず、インストールしても設定はされないが、公式のチュートリ アルで設定されているので環境変数として設定しておくとベター 14
  15. 15. 3. Caffeのインストール $ cd $CAFFE_ROOT $ make all 15
  16. 16. example(MNIST)の実⾏行行 • ⼿手順の詳細・exampleの解説は公式 ドキュメントを参照 • http://caffe.berkeleyvision.org/ gathered/examples/mnist.html データセットの準備 $ cd $CAFFE_ROOT $ ./data/mnist/get_mnist.sh $ ./examples/mnist/create_mnist.sh CPUでの実⾏行行に変更更 examples/mnist/lenet_solver.prototxtの以下の⾏行行を変更更 solver_mode: GPU → solver_mode: CPU 実⾏行行 $ ./examples/mnist/train_lenet.sh 16
  17. 17. Mac OS 10.9以降降でのCaffeのインストール Q. Mac OS 10.9以降降上でCaffeを簡単にインストールする⽅方法はないか? A. GPUを使わないならば10.8とほぼ同等の⽅方法でできます 公式サイトのインストール⼿手順にある通り、Mac OS 10.9以降降でのインストール⽅方法は10.8以前とは異異なります。 その原因の⼀一つがデフォルトで使⽤用するC++ライブラリです。Mac OS 10.9ではデフォルトC++コンパイラである Clang++はlibc++をデフォルトで⽤用いています。しかし、NVIDIAのCUDAはlibstdc++でコンパイルしたライブラリと しかリンクできません。 回避策は⼤大きく分けて2通りあります。 1. ⼀一つ⽬目はClang++のコンパイラをlibc++からlibstdc++に変更更する⽅方法(本家サイトで紹介されている⽅方法)。 2. (GPUを使⽤用しない場合) 10.8以前の⽅方法にいくつか⼿手順を加える⽅方法。make allを⾏行行う前にMakefile.configを2箇所 修正します( (1)--libstdc++の削除(2)コメントアウトされたCPU_ONLY:=1の有効化) 。NVIDIAのライブラリを使わない のでデフォルトのライブラリがlibc++でも問題なくCaffeをビルドできます。 17
  18. 18. Caffe(GPU版)のインストール
  19. 19. 概要 • GPU版のインストールの⽅方法として本資料料では2通りを紹介します • AWSのGPUインスタンス上でCaffeコミュニティーが提供するAMIを利利⽤用する • GPUインスタンスを利利⽤用できるなら、この⽅方法が楽かつ確実 • ⾃自前でマシンを⽤用意し、⼿手動でGPU版Caffeをインストールする • インストールしたいマシンが既にある場合 • インストール⼿手順を体験したい場合 • いずれの場合もUbuntu 14.04 + Cuda 7.0を仮定しています AWS:Amazon WebService クラウド上でコンピュータリソースを必要な分だけ借りられるサービス AMI:Amazon Machine Image AWS構築環境をパッケージ化したもの。誰かが環境を作成し、AMIとし て公開していれば、そのAMIを利利⽤用して同じ環境を構築できる
  20. 20. CaffeコミュニティーのAMIを利利⽤用する • AMI ID : ami-763a311e • GPUインスタンス(g2.2xlarge or g2.8xlarge)での利利⽤用が仮定されています • GPUインスタンスはAWSの無料料利利⽤用枠では利利⽤用できないので注意 • 参考:https://github.com/BVLC/caffe/wiki/Caffe-on-EC2-Ubuntu-14.04-Cuda-7 20
  21. 21. ⾃自前のマシンへの⼿手動インストール • 公式ドキュメント:http://caffe.berkeleyvision.org/installation.html • インストール⼿手順 1. CUDAのインストール ← GPU版だけの作業、ここが超⻤⿁鬼⾨門 2. Caffeの依存ライブラリのインストール 3. Makefile.configの作成 ← CPU_ONLYの変更更は必要なし 4. Caffeのインストール 21
  22. 22. インストールスクリプト • Caffeコミュニティーで2通りのコマンドレベルでのインストール⼿手順が紹介されています • パッケージマネージャー(次スライド参照)を利利⽤用する⽅方法 • https://github.com/BVLC/caffe/wiki/Caffe-on-EC2-Ubuntu-14.04-Cuda-7 • この⽅方法で前述のCaffeコミュニティー版のAMIは作成されています • runtime file(次スライド参照)を利利⽤用する⽅方法 • https://github.com/BVLC/caffe/wiki/Install-Caffe-on-EC2-from-scratch-(Ubuntu,- CUDA-7,-cuDNN) • 前スライドの1-4の全⼿手順が含まれています。 • どちらもcuDNNを利利⽤用します。cuDNNの⼊入⼿手にはNVIDIA Developer Zoneへの登録が必要です • AWSのGPUインスタンス上で検証されているようなので、⾃自前で⽤用意したマシンで成功するかは 試してみないとわかりません。 22
  23. 23. CUDAのインストールに関して • パッケージマネージャーでのインストールがうまくいくならばそれに越したことはありません • CUDA Toolkit Documentation 3章に該当 • https://docs.nvidia.com/cuda/cuda-getting-started-guide-for- linux/index.html#package-manager-installation • パッケージマネージャーで失敗した場合、runtime fileを⽤用いてインストールを試します • CUDA Toolkit Documentation 4章に該当 • https://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#runfile パッケージマネージャー Ubuntuでいうaptitude、CentOSでいう yum、MacOSでいうhomebrewのこと23
  24. 24. CUDAのインストールで発⽣生するエラー • マシン・バージョン・デバイス依存が強く、エラーは網羅羅できない • ⼤大雑把にはエラーは以下の3種類に分類できる • CUDAのインストールに失敗する • 明⽰示的なエラーが起こる場合と、⼀一⾒見見成功するが必要なコマンドが打てない場合がある • CUDAインストールには成功するが、OSがGPUを認識識できない • nvidia-smiコマンドが成功すれば⼤大丈夫な事が多い • OSがGPUを認識識するが、CaffeからGPUを利利⽤用できない • Caffeの適当なexampleを実⾏行行して動けばOKなことが多い nvidia-smi:NVIDIAのGPUを管理理するツール or そのツールで提供されているコマンドのこと https://developer.nvidia.com/nvidia-system- management-interface24
  25. 25. 症状例例1:nvidia-uvmが⾒見見つからない • (対処法1)modprobeによる⼿手動ロードでの解決例例が報告されています • $ sudo modprobe <path/to/nvidia-uvm> • nvidia-346-uvmのように、間にドライバーのバージョンが⼊入っている場合があります • (対処法2)deviceQueryを実⾏行行すると現れることがあるようです(バッドノウハウ?) • 参考:http://blog.alpaca.ai/how-to-use-caffe-model-generated-by-labellio-on-your- machineaws/ 症状例例に関しては随時更更新 していきます 25
  26. 26. 付録:インストール時に知っておくと便便利利な知識識
  27. 27. 環境変数関係 • LIBRARY_PATH / LD_LIBRARY_PATH:ライブラリの検索索パス • LIBRARY_PATH:gccが(静的or共有)ライブラリをリンクする際の検索索パス • LD_LIBRARY_PATH:実⾏行行時の共有ライブラリ(.so)の検索索パス • LD_LIBRARY_PATHとLIBRARY_PATHの違い • http://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path • ⼤大雑把な指針 • コンパイル時にライブラリが⾒見見つからないエラー → LIBRARY_PATHが怪しい • 実⾏行行時にライブラリが⾒見見つからないエラー → LD_LIBRARY_PATHが怪しい 27
  28. 28. 共有ライブラリ関係 • ldd/ldconfig:共有ライブラリの依存関係を管理理するコマンド群 • ldd : プログラムが依存している共有ライブラリを表⽰示 • ldd /usr/bin/lsをしてみると何やっているかわかる • ldconfig : 共有ライブラリの依存関係を解決する • 引数なし実⾏行行で/etc/ld.so.confで指定されたディレクトリ、 /lib、/usr/libから必要な共 有ライブラリを検索索し、結果を/etc/ld.so.cacheにキャッシュする • キャッシュしているので、リストが更更新されたらキャッシュを再⽣生成が必要 • 共有ライブラリ関係をいじってうまく動かなかったらとりあえず実⾏行行してみるとよい • ライブラリに関するチュートリアル • http://www.linuxmaster.jp/linux_skill/2011/03/22linux.html28
  29. 29. エラー対処例例 • プログラム実⾏行行時にプログラム(A)が共有ライブラリ(B)を⾒見見つけられないというエラー A: error while loading shared libraries: libB.so.X: cannot open shared object file: No such file or directory 0. lddコマンドでプログラムAが依存している共有ライブラリを調べ、確かに共有ライブラリBが⾒見見 つかっていないことを確認する 1. /etc/ld.so.cacheが更更新されていない可能性があるのでldconfigコマンドで更更新する 2. 共有ライブラリBが存在するディレクトリ(C)を調べる 以下のどちらかで対処(2-1は全ユーザーに影響を及ぼすので、まずは2-2を試すべき) 3-1. LD_LIBRARY_PATHにディレクトリへのパスCを追加する 3-2. /etc/ld.so.confにディレクトリへのパスCを追加し、ldconfigコマンドで検索索パスを更更新する 29
  30. 30. Python関連⽤用語 • モジュール:特定の機能を実装したPythonのライブラリ • Pythonのプログラム内で、importして⾃自分のプログラムで利利⽤用する • pip:Pythonのパッケージ管理理ツール or そのツールで提供されているコマンド名 • モジュールがPyPI(Perlで⾔言うCPANのようなもの)に登録されていれば pip install < モジュール名>でインストールできる • pip⾃自体もモジュールなので、pip install -U pip とできる(-Uはアップデートオプ ション) • PYTHONPATH:Pythonでimportするモジュールの検索索パスを指定する環境変数 • http://docs.python.jp/2/tutorial/modules.html#tut-searchpath 30
  31. 31. GPU関連⽤用語 • CUDA:NVIDIAが提供の、GPU向けのライブラリやコンパイラの総称 • NVCC:CUDAのC++コンパイラ • cuBLAS, cuDNN:CUDAのライブラリ(⾏行行列列演算, 深層学習) • Host/Device • GPUプログラミングの⽂文脈ではHost = CPU, Device = GPU 31

×