LITTLEGEAR i310にchainerとTensorflowを入れて Jupyter Notebookで開くようにした時の作業メモ

<font color="Red">2016年くらいにやった時のメモなので、今ならもっと簡単に出来るはず…
ドライバとかライブラリのバージョンも古いので注意</font>

TitanXを積んだLITTLEGEAR i310をGPGPU用のマシンにするべく、
ubuntu14.04.4入れて、TensorflowとchainerをGPU動作させて、 Jupyter Notebookで開けるようにした時のメモ

#UbuntuのOSを入れる

1. http://www.ubuntu.com/download/desktop 焼く
2. ブート優先度を変える。 Securebootをother osにかえる
3. （真っ黒な画面で止まってしまうので）選択画面の Try Ubuntu without installing上で eを押す。 quiet splash を nomodeset に変更 F10でブート。（何もせずにそのまま10分待つだけで良いという話もある。試してないが）
http://qiita.com/kunihikot/items/588f39b4b11024ae0c41 http://askubuntu.com/questions/712575/ignoring-bgrt-invalid-status-0-expected-1

4. そして真っ暗になっても辛抱強く待つ

5. そうするとOSが起動するので インストールする
   マウントして、PC名、ユーザー名、パスワードを登録する

6. ブート優先度を戻すとHDDからの起動時にも紫色の画面で止まってしまったので、 F6キーを押して、ブート選択画面を表示。一番上でeキーを押す。 quiet splash を nomodeset に変更 F10でブート

7. Ubuntuが起動したら、 /etc/default/grubをデスクトップに移してgeditで書き換える
http://christina04.blog.fc2.com/blog-entry-162.html

```bash

vi使うときは
:set nocompatible
とうつ

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0  
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
GRUB_CMDLINE_LINUX=""
のように編集したgrubを

ls /home/ubuntu/Desktop
sudo su
cp /home/ubuntu/Desktop/grub .
で元の場所に移す

update-grub
を実行
```

参考：http://qiita.com/bohemian916/items/8c7f0c4b3d3ea0958559


#CUDAを入れて、2つのvirtualenv環境にそれぞれtensorflowとchainerを入れる
参考その1 https://www.tensorflow.org/versions/r0.8/get_started/os_setup.html
参考その２（ほぼこれの通り） http://qiita.com/naomi7325/items/789b256a2c61dbe8ed00

```bash

SSHの設定
sudo su

apt-get install ssh
vi /etc/ssh/sshd_config
　PasswordAuthentication yes
　#RSAAuthentication yes
　#PubkeyAuthentication yes
　に変える
　
service ssh restart
でssh ユーザー名@PC名 でつながるようになった(ユーザー名は小文字じゃないといけない)

参考：http://webkaru.net/linux/ssh-password-auth-prohibit/
###################################################################

FTPの設定
apt-get install vsftpd
vi /etc/vsftpd.conf
 write_enable=YES
 にする
service vsftpd restart

これでCyberduck(MacのFTPクライアントで)
PC名とユーザー名を入力して平文のパスワード入力で繋がる。
http://www.server-world.info/query?os=Ubuntu_14.04&p=ftp

###################################################################

pythonの設定

pyenvの導入　http://qiita.com/Kodaira_/items/feadfef9add468e3a85b

sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

exit
でユーザーを一般ユーザーに戻してから
cd /home/ユーザ名
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
sudo chown -R グループ名:ユーザー名 ~/.pyenv


vi ~/.profile 
:set nocompatible
と打って
------------------------------------------------------------------------------------------------------------
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
------------------------------------------------------------------------------------------------------------
を末尾に入れる。SSH接続しなおす

pyenvを入れる
pyenv install --list
pyenv install 2.7.11
pyenv global 2.7.11
pyenv rehash
pyenv versions

cuda7.0を入れる
sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb
sudo apt-get update
sudo apt-get install cuda-7-0

CuDNN6.5をいれる
tar xvf cudnn-6.5-linux-x64-v2.tar  
sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include
sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

#一旦再起動
reboot
ssh ユーザー名@PC名
#インストール
sudo apt-get install python-pip python-dev python-virtualenv
#コンテナ作成
virtualenv --system-site-packages ~/tensorflow-GPU
#virtualenvでつないだときにCUDAのPATHを貼る設定
vi ~/tensorflow-GPU/bin/activate
------------------------------------------------------------------------------------------------------------
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
------------------------------------------------------------------------------------------------------------
を末尾に追記

git clone --recurse-submodules https://github.com/tensorflow/tensorflow
cd ~/tensorflow
chmod +x ./configure
sudo apt-get install swig

pip install numpy

cd ~/tensorflow
./configure
Pythonのパス /home/ユーザー名/.pyenv/versions/3.4.4/bin/python3.4　ではなくデフォルト
gpuサポート y
gccの場所　デフォルト
CUDA SDK version　7.0
CUDA toolkitの場所　/usr/local/cuda-7.0
Cudnn version　6.5
cuDNNの場所　デフォルト

#Tensorflow コンテナを用意
cd ~/tensorflow-GPU
source bin/activate
#コンテナにTensorflowを入れる
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl

#cuda 7.5も必要らしいのでいれる
#deactivate
#sudo apt-get install cuda
#やっぱりいらなかったっぽい
#sudo apt-get remove cuda

#チュートリアルのコードでテスト
cd ~/tensorflow-GPU
source bin/activate
cd ~
mkdir workspace
cd workspace
mkdir mnisttest
cd ~/workspace/mnisttest
wget https://github.com/tensorflow/tensorflow/raw/r0.8/tensorflow/examples/tutorials/mnist/mnist.py
wget https://github.com/tensorflow/tensorflow/raw/r0.8/tensorflow/examples/tutorials/mnist/input_data.py
wget https://github.com/tensorflow/tensorflow/raw/r0.8/tensorflow/examples/tutorials/mnist/fully_connected_feed.py
python fully_connected_feed.py
deactivate

結果
Step 0: loss = 2.31 (0.570 sec)
Step 100: loss = 2.13 (0.001 sec)
Step 200: loss = 1.86 (0.001 sec)
Step 300: loss = 1.53 (0.001 sec)
Step 400: loss = 1.32 (0.001 sec)
Step 500: loss = 0.89 (0.001 sec)
Step 600: loss = 0.78 (0.001 sec)
Step 700: loss = 0.65 (0.001 sec)
Step 800: loss = 0.68 (0.001 sec)
Step 900: loss = 0.59 (0.001 sec)
Training Data Eval:
  Num examples: 55000  Num correct: 47460  Precision @ 1: 0.8629
Validation Data Eval:
  Num examples: 5000  Num correct: 4348  Precision @ 1: 0.8696
Test Data Eval:
  Num examples: 10000  Num correct: 8697  Precision @ 1: 0.8697
Step 1000: loss = 0.65 (0.001 sec)
Step 1100: loss = 0.49 (0.027 sec)
Step 1200: loss = 0.44 (0.001 sec)
Step 1300: loss = 0.42 (0.001 sec)
Step 1400: loss = 0.31 (0.001 sec)
Step 1500: loss = 0.44 (0.001 sec)
Step 1600: loss = 0.61 (0.001 sec)
Step 1700: loss = 0.42 (0.001 sec)
Step 1800: loss = 0.29 (0.001 sec)
Step 1900: loss = 0.37 (0.001 sec)

#CPU環境を用意
virtualenv --system-site-packages ~/tensorflow-CPU
#してこちらでもテスト
cd ~/tensorflow-CPU
source bin/activate
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
cd ~/workspace/mnisttest
python fully_connected_feed.py
deactivate

#chainer用の環境を用意
virtualenv --system-site-packages ~/chainer-GPU
cd ~/chainer-GPU
source bin/activate
#環境変数を定義して
vi ~/chainer-GPU/bin/activate
------------------------------------------------------------------------------------------------------------
export CUDA_PATH=/usr/local/cuda-7.0
export PATH=/usr/local/cuda-7.0/bin:$PATH
------------------------------------------------------------------------------------------------------------
を末尾に追記
deactivate
source ~/chainer-GPU/bin/activate
echo $CUDA_PATH
pip install chainer

export CUDA_PATH=/usr/local/cuda-7.0
CUDA_PATH=/usr/local/cuda-7.0 pip install chainer

#test
mkdir tmp
cd tmp
wget https://github.com/pfnet/chainer/raw/master/examples/mnist/data.py
wget https://github.com/pfnet/chainer/raw/master/examples/mnist/net.py
wget https://github.com/pfnet/chainer/raw/master/examples/mnist/train_mnist.py
python train_mnist.py
python train_mnist.py --gpu=0
deactivate

#Jupyterを入れる(それぞれのvirtual envで。)
pip install jupyter
#jupyter notebookで立ち上がるようになる

#コンフィグ
jupyter notebook --generate-config
vi ~/.jupyter/jupyter_notebook_config.py
----------------------------------------------------------------
c = get_config()

# all ip is ok
c.NotebookApp.ip = '*'
#c.NotebookApp.password = u'hogefoobar'
# dont start browser
c.NotebookApp.open_browser = False

# set port
c.NotebookApp.port = 8888
----------------------------------------------------------------
http://PC名:8888/ がJupiter NotebookのURLになる。

#起動tensorflow
deactivate
cd ~/tensorflow-GPU
source bin/activate
jupyter notebook

#起動chainer
deactivate
cd ~/chainer-GPU
source bin/activate
jupyter notebook

#chainer環境にpip installしたいときは
#http://mars:8888/terminals/1　にアクセスしてもできない
deactivate
cd ~/chainer-GPU
source bin/activate
pip install matplotlib

#tensorflow環境にpip installlしたいときは
deactivate
cd ~/tensorflow-GPU
source bin/activate
pip install matplotlib

#sudo apt-get install libpng
#sudo apt-get install libfreetype6-dev

#pending　virutualenvで参照するpythonのバージョンがsystemになっている
#pyenv vritualenv {pyenvで作ったpythonのバージョン} {pyenv環境名}　でやればいい
#http://qiita.com/Kodaira_/items/feadfef9add468e3a85b
```