[[ノート>ノート/ノート]]

#contents

*1. Titan CentOS install (2014-12-05〜)   [#nabd51eb]

**2014-12-05 [#gc8a6f9e]
ダウンロード・ISOイメージ

-CentOS-7 x86_64 DVD iosファイルをダウンロード http://dev.centos.org/centos/6/upg/x86_64/Packages/
−−>Winへ
-Win上に、[[Win32 Disk Imager:http://sourceforge.net/projects/win32diskimager/?source=typ_redirect]] をインストール
-Win32 Disk Imagerを使って、isoイメージをUSBメモリにコピー

OSインストール

-TitanにUSB装着。ブートシーケンス書換え(USBに回るように)。起動。
-インストール先選択画面で、既存のパーティションを消去、再度パーティションを設定。
開発サーバーを指定。ネットIPv4を指定。

-いろいろと情報を探す
--[Ubuntu14.04にCUDAインストール:http://wiki.ruka-f.net/index.php?cmd=read&page=CUDA&word=CUDA]]
--[[Scientific Linux 6.3インストールログ2:NVidia GEForce GTX 660 & 750Tiを挿す:http://d.hatena.ne.jp/lilylila/20131024/1382604190]]~
--[[Scientific Linux 6.2にNVIDIAドライバーをインストールする:http://d.hatena.ne.jp/hrnstrawb/20120208/1328683690]]

**NVIDIA ドライバが動かない件 [#l5bc9312]
 $ ./deviceQuery
 ./deviceQuery Starting...
 
  CUDA Device Query (Runtime API) version (CUDART static linking)
 
 cudaGetDeviceCount returned 38
 -> no CUDA-capable device is detected
 Result = FAIL

-いろいろ情報を探す
--[[CUDA™ 4.0 開発環境をインストールする (Linux版):http://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cuda40_install.html]]
--[[cuda 6.0をubuntu serverに導入する:http://akiomik.hatenablog.jp/entry/2014/04/14/051843]]
--[[CentOS 5.8 に CUDA 開発環境を導入する:http://crisis-tk.github.io/blog/2012/12/18/centos58-cuda-setup/]]
--[[自宅サーバのcuda環境を3.2→4.0にバージョンアップ:http://waysaku.hatenablog.com/entries/2011/08/18]]

-結局、messagesを見る  参考 [[NVIDIAの新しいドライバを入れたらXが起動しなくなった:http://d.hatena.ne.jp/aki-yam/20100501/1272736440]]
 Dec 15 10:10:24 mint kernel: NVRM: API mismatch: the client has the version 340.29, but
 Dec 15 10:10:24 mint kernel: NVRM: this kernel module has the version 343.36.  Please
 Dec 15 10:10:24 mint kernel: NVRM: make sure that this kernel module and all NVIDIA driver
 Dec 15 10:10:24 mint kernel: NVRM: components have the same version.
 Dec 15 10:10:24 mint kernel: NVRM: nvidia_frontend_ioctl: minor 255, module->ioctl failed, error -22


-ハード的にスロットが正しいか?

-init 3でX Windowなしで立ち上げる。~
立上げ時にX Windowが起動されて、そのためにnouveauカーネルモジュールが導入される
おそれあり。最初からinit 3で立ち上げてみる。

-デバイスが存在するか~
/dev/nvidia0や1が無いなら、作るしかない。ブート時毎回必要かも知れない。自動的に作ってくれるという話もアリ~
[[作り方はここページ参照:http://waysaku.hatenablog.com/entries/2011/08/18]]


-カーネルモジュールのバージョン確認
--まずlsmodでカーネルモジュールの確認~
nvidiaとnouveauと両方あり
 $ lsmod | grep -i nvidia
  nvidia              11049298  0
  i2c_core               31276  5 i2c_i801,nvidia,nouveau,drm_kms_helper,drm

--modprobeでカーネルモジュールの確認
 $ modprobe -l | grep nvidia
  kernel/drivers/video/backlight/mbp_nvidia_bl.ko
  kernel/drivers/video/nvidia/nvidiafb.ko
  extra/nvidia-uvm.ko
  extra/nvidia.ko

--modinfoで、nvidiaモジュールのバージョンを確認
 $modinfo nvidia
 filename:       /lib/modules/2.6.32-279.el6.x86_64/extra/nvidia.ko
 alias:          char-major-195-*
 version:        343.36
 supported:      external
 license:        NVIDIA
 alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
 alias:          pci:v000010DEd00000AA3sv*sd*bc0Bsc40i00*
 alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
 alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
 depends:        i2c-core
 vermagic:       2.6.32-279.el6.x86_64 SMP mod_unload modversions
 parm:           NVreg_Mobile:int
 以下略

--問題はversion mismatchなのだから、入れ替える。~
カーネルモジュールの側を、sh .NVIDIA...run -f でやってみる。参考 [[Geforce ビデオカードドライバ インストール:http://centos86config.web.fc2.com/geforce-driver-installation.html]]~
なぜか、無事に340がダウンロードされて、インストールされた。~
これでいいはず?
 
 $ modinfo nvidia
 filename:       /lib/modules/2.6.32-279.el6.x86_64/extra/nvidia.ko
 alias:          char-major-195-*
 version:        340.65
 supported:      external
 license:        NVIDIA
 alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
 alias:          pci:v000010DEd00000AA3sv*sd*bc0Bsc40i00*
 alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
 alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
 depends:        i2c-core
 vermagic:       2.6.32-279.el6.x86_64 SMP mod_unload modversions
 parm:           NVreg_Mobile:int
 parm:           NVreg_ResmanDebugLevel:int
 
カーネル側のバージョンが340になった。

--改めてdeviceQuery
 $ ./deviceQuery
 ./deviceQuery Starting...
 
  CUDA Device Query (Runtime API) version (CUDART static linking)
 
 Detected 2 CUDA Capable device(s)
 
 Device 0: "GeForce GTX TITAN Z"
   CUDA Driver Version / Runtime Version          6.5 / 6.5
   CUDA Capability Major/Minor version number:    3.5
   Total amount of global memory:                 6143 MBytes (6441730048 bytes)
   (15) Multiprocessors, (192) CUDA Cores/MP:     2880 CUDA Cores
   GPU Clock rate:                                876 MHz (0.88 GHz)
   Memory Clock rate:                             3505 Mhz
   Memory Bus Width:                              384-bit
   L2 Cache Size:                                 1572864 bytes
   Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
   Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
   Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
   Total amount of constant memory:               65536 bytes
   Total amount of shared memory per block:       49152 bytes
   Total number of registers available per block: 65536
   Warp size:                                     32
   Maximum number of threads per multiprocessor:  2048
   Maximum number of threads per block:           1024
   Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
   Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
   Maximum memory pitch:                          2147483647 bytes
   Texture alignment:                             512 bytes
   Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
   Run time limit on kernels:                     No
   Integrated GPU sharing Host Memory:            No
   Support host page-locked memory mapping:       Yes
   Alignment requirement for Surfaces:            Yes
   Device has ECC support:                        Disabled
   Device supports Unified Addressing (UVA):      Yes
   Device PCI Bus ID / PCI location ID:           6 / 0
   Compute Mode:
      < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
 
 Device 1: "GeForce GTX TITAN Z"
   CUDA Driver Version / Runtime Version          6.5 / 6.5
   CUDA Capability Major/Minor version number:    3.5
   Total amount of global memory:                 6144 MBytes (6442254336 bytes)
   (15) Multiprocessors, (192) CUDA Cores/MP:     2880 CUDA Cores
   GPU Clock rate:                                876 MHz (0.88 GHz)
   Memory Clock rate:                             3505 Mhz
   Memory Bus Width:                              384-bit
   L2 Cache Size:                                 1572864 bytes
   Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
   Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
   Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
   Total amount of constant memory:               65536 bytes
   Total amount of shared memory per block:       49152 bytes
   Total number of registers available per block: 65536
   Warp size:                                     32
   Maximum number of threads per multiprocessor:  2048
   Maximum number of threads per block:           1024
   Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
   Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
   Maximum memory pitch:                          2147483647 bytes
   Texture alignment:                             512 bytes
   Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
   Run time limit on kernels:                     No
   Integrated GPU sharing Host Memory:            No
   Support host page-locked memory mapping:       Yes
   Alignment requirement for Surfaces:            Yes
   Device has ECC support:                        Disabled
   Device supports Unified Addressing (UVA):      Yes
   Device PCI Bus ID / PCI location ID:           7 / 0
   Compute Mode:
      < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
 > Peer access from GeForce GTX TITAN Z (GPU0) -> GeForce GTX TITAN Z (GPU1) : Yes
 > Peer access from GeForce GTX TITAN Z (GPU1) -> GeForce GTX TITAN Z (GPU0) : Yes
 
 deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 2, Device0 = GeForce GTX TITAN Z, Device1 = GeForce GTX TITAN Z
 Result = PASS
 
動いたっぽい。~
~
カーネルのアップデートがかかると、毎度起こる可能性があるらしい。要チェックだ。

**いよいよCaffeインストール [#n9a763b4]

-参考情報
--[[Caffeインストール:http://wiki.ruka-f.net/index.php?Caffe%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB]]
--[[Ubuntu 14.04 上での Caffe の導入手順メモ:http://www.nal.ics.es.osaka-u.ac.jp/personal/k-yamanishi/CaffeUbuntu.html]]

-エラーになった。
 [  FAILED  ] 6 tests, listed below:
 [  FAILED  ] PowerLayerTest/0.TestPowerGradientShiftZero, where TypeParam = caffe::FloatCPU
 [  FAILED  ] PowerLayerTest/1.TestPowerGradientShiftZero, where TypeParam = caffe::DoubleCPU
 [  FAILED  ] PowerLayerTest/1.TestPowerGradient, where TypeParam = caffe::DoubleCPU
 [  FAILED  ] PowerLayerTest/2.TestPowerGradientShiftZero, where TypeParam = caffe::FloatGPU
 [  FAILED  ] PowerLayerTest/3.TestPowerGradientShiftZero, where TypeParam = caffe::DoubleGPU
 [  FAILED  ] PowerLayerTest/3.TestPowerGradient, where TypeParam = caffe::DoubleGPU

ここを見ると、boostのバージョンとか、BLASのバージョン(atlasかopenblasか)がリンク先と合わないとか?
--[[DeepLearningライブラリ「Caffe」の実行環境をOSX10.9で作る:http://reiji1020.hatenablog.com/entry/2014/11/27/175140]]~
~
boostのバージョンは、1.56で、アウト。1.55以下にすべきらしい。どうせダウンロード・コンパイルしているのだから、元サイトから1.55のソースを持ってくる。~
詳しくは、 [[boostライブラリのビルド法:https://sites.google.com/site/boostjp/howtobuild]]~
~
BLASTはATLASのはずなのだが。yumでatlasをインストールしてあるが、一時的に抜くということが、他のパッケージの依存性があるので難しい。
--


**NVIDIAデバイスドライバーがnouveauがあるためにインストールできない(エラー)件(2016-02-13) [#i16b4adb]

カーネルイメージ自体に含まれてしまっている(少なくとも依存性があって、インストールしてしまう)らしい。いくらmodprobeでblacklistに入れても、lsmod | grep nouveau で見ると排除できていない。

[[ここの記述参照:http://blog.livedoor.jp/rootan2007/archives/52090548.html]]。

これに従って、まずブートイメージをセーブ
 mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
nouveauドライバをロードしない起動イメージファイルを作成
 dracut --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)
ほかのモジュールとの依存関係によってnouveauがロードされてしまう可能性があるので、下記2つのファイルを作成してmodprobe時にblacklist
 vi /etc/modprobe.d/modprobe.conf
 #
 # /etc/modprobe.d/modprobe.conf (to omit nouveau driver)
 #
 blacklist nouveau
 
 vi /etc/modprobe.d/nouveau_blacklist.conf
 blacklist nouveau

再起動後,確認
 lsmod | grep nouveau

----------------------------------
----------------------------------

*2. Ginger CentOS install (2016-1-29〜)   [#nabd51eb]

**GingerにCentOS, Caffeをインストールする (2016-2-12〜17) [#gc8a6f9e]
***DVDから普通にインストール [#odc2d99e]

***CUDAをインストール [#n1350a59]
今までと若干変更

***Anaconda2(Python2.7用)をインストール [#l0d6fe25]
Caffeインストールの準備としてAnacondaパッケージをインストールする。これによってCaffeに必要な幾つかの環境(ライブラリ等)が即時にインストールされるか、さもなければcondaコマンドでインストールできる。

condaコマンドを使ってインストールする理由は、Caffeの要求するライブラリが多いからだが、特に幾つかのライブラリはソースからコンパイルすると更に依存性があって、他のライブラリの依存性に抵触したりするようだ。本当はyumで入れれば、CentOS(Fedora)の統一した環境になるのだが、yumのレポジトリはCaffeなどの要求するバージョンより古くて不可な場合が散見される(結構多い)。condaの方が大分新しい。

ところが、Anacondaをインストールして、実行時の(動的)ライブラリ検索パスにanaconda/libを含めると、liblzmaのバージョンが書いていない、というエラーがselinuxから出る。selinuxから出るので、Caffeの標準環境であるubuntuでは出ないと想像できる。

このliblzmaのエラーは影響が大きくて、たとえばLD_LIBRARY_PATH環境変数で、/usr/lib64より前にanaconda/libを指定すると、OS起動時にエラーを検出して、起動できなくなる。その場合は、やむなくCentOSインストールCDで起動してレスキュー用シェルを起動し、HDDを適宜マウントしたのちに、anacondaをインストールしたディレクトリ全体を消去(=anacondaのアンインストール)して対応した。また、ld.so.conf.dにanaconda参照を組み込む(ファイルanaconda.confなどを作る)と、同様に起動不能になる。

このエラーは、動的ライブラリの参照パスが先にanacondaの中のliblzma.so.5...を参照していると起こるようで、起動時だけではなくて、anacondaインストール+動的ライブラリ参照パス設定直後から、コマンド実行時にも警告メッセージが出るようになるので、起こっていることが分かる。なので、インストール+パス設定の直後にこのメッセージが出る場合は、急いでインストールを外しておく方がよさそうだ。(さもないと、次に何かの加減で起動してしまったときにエラーが出て起動不能になって、えらい目にあうことを繰り返すことになる)

正しい対応策はよく分からないが、とにかくAnacondaが欲しいのであるから、Anacondaを入れないという選択肢はない。それで、Anacondaをインストールしたのち、元々/usr/lib64/liblzma***のsoファイル(liblzma.so, liblzma.so.5.0.99, liblzma.so.5)を、anaconda/lib/の下にコピーして入れ替えてしまうことで、対応した。マイナーバージョン番号は違ってしまっているが、一応動いている。

動的ライブラリのパスは、anacondaを全ユーザに共通に有効化するにはld.configに含めるのが良いと思うが、この件が怖いので、ld.configからは外し、それぞれのユーザが環境変数LD_LIBRARY_PATHでanacondaを含める(かどうか、順序をどうするかを決める)ことにした。


***Caffeのインストール [#q2679d19]

Anacondaで勝手に入ってくるライブラリでは足りないものがあるので、いくつか追加する。

***Caffeで遊ぶ [#n67957f8]

といっても、学習フェーズは大変なので、最初に、既存の学習済みモデルを使って分類がうまくできることで遊ぶ。

詳細は[[Caffeで手軽に画像分類 - Yahoo! JAPAN Tech Blog:http://techblog.yahoo.co.jp/programming/caffe-intro/]]にあるが、
get_caffe_reference_imagenet_model.shが無いのでreadme.mdの中から対象のファイルをダウンロードしなければならない( [[Caffe - RupyWiki:http://wiki.ruka-f.net/index.php?Caffe]]参照)。

更に、classify.pyで呼び出されるio.pyで失敗するが、 [[PythonからCaffeを使う & ImageNetをリファレンスモデルとして使う(認識と特徴抽出) - Keep In Mind:http://yusuke-manabe.hatenablog.com/entry/2015/07/21/042729]]や  [[OSX10.10でCaffeをインストール、リファレンスモデルで画像を分類 - Qiita:http://qiita.com/Bonnnou_108/items/41e6dadeff1310b4eb5d]]の方法で治るが、こういう指摘[[Caffe, Pylearn2をまとめて試す - Qiita:http://qiita.com/CORDEA/items/9fad27ae024928b6a7b1]]もある(試してない)。

また、参考として
- [[OpenCV 備忘録: CaffeのImageNetモデルを使用した分類の説明を訳してみた:http://iwaki2009.blogspot.jp/2014/12/caffeimagenet.html]]
- [[ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換) - Over&Out その後:http://d.hatena.ne.jp/shu223/20160105/1451952796]]
- [[CaffeでDeep Learning つまずきやすいところを中心に - Qiita:http://qiita.com/uchihashi_k/items/8333f80529bb3498e32f]]


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS