全3回の2回目です。
1回めhttps://qiita.com/s_s_satoc/items/17c5bd35c37f0f39c14c
でNVIDIAドライバー、CUDA ToolkitとcuDNNのインストールまでをやりました。
- その1 NVIDIAドライバー、CUDA ToolkitとcuDNNのインストールまで
- その2 pythonとDeep learningのpackage周り
- その3 APC製のUPSの導入
となっています。今回はpythonとDeep learningのpackage周りの導入ついて軽く述べようと思います。
どこにpythonおよびパッケージをインストールすべきなのか問題
個人的に仮想環境を極力使うべきではないと考えていました。というのも、むやみに仮想環境を作ると、自分自身が何を入れたのか、どのような目的で作ったのかが管理できなくなるからです。こう考え出したのは以前Anacondaで痛い目にあったからです。Anacondaは上手く使えばとても便利なのだと思うのですが、一気に自分の知らないパッケージをインストールする&対応していないパッケージがあることが問題だと思います。これで、自分が認知していないパッケージとpipでinstallしたパッケージが干渉していたりすると、問題解決が一気に難しくなります。これを回避するために、メンドくさくてもpipでインストールし、自分でインストールしたパッケージを把握すべきだと考えています
がpipでは上手くいかなった。
私は主にCSとバイオの間の怪しげな領域で研究をしているので、プログラムそのものを何度も使い回しシステムを回していくとゆうよりも、入れたデータと出力された結果がわかりやすい形で結びついていることが大事です。その意味でjupyter notebookは一つの理想形なわけです。ですので、前回作成したGPU Deep learaning環境がjupyter上で動いてくれないと困るのですが、これがNative pipではうまくて行きませんでした。理由はこのページhttp://pyth0n.hatenablog.com/entry/2016/10/28/jupyterでimport_error
なんかが詳しいのですが、native jupyterでmoduleをインストールした際の参照先が違っていることみたいでした。
というのも、Ubuntu 16.04 LTSではデフォルトでpython2系と3系が両方入っているのですが、native jupyterでmoduleをインストールした際の参照先2系のフォルダになっているっぽいのです(調べた)。上のページのように参照先を変更する方法もあるとは思うのですが、今後追加モジュールを入れる際に面倒なことになりそうだと判断(入れたモジュール本体がどこにあんの&パスが通ってるのか問題)、大人しく仮想環境を使うことにしました。
方針 どうせなら python3.6を使いたい
せっかく仮想環境を構築するならpython3.6系を使いたいと思います。ですので、pyenvでデフォルトでpython3.6.4に変えた上でvirtualenvで仮想環境を作り、そこにTensorflowとchainerを入れます。
pyenvのインストール
gitでインストール
$ sudo git clone git://github.com/yyuu/pyenv.git ./pyenv
パスを通す
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
zsh使い(とか比較的新しい macはこっち)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
ターミナル再起動または
$ source ~/.bashrc
でパスが書き込まれたbashrcを読み込む。
続いて、インストールできるpythonのリストを表示する。
$ source ~/.bashrc
# ズラーっとインストールできるpythonのverがでる。
インストールとpythonのverの切り替え
# インストール
$ pyenv install 3.6.4
# pythonのデフォルトのverの切り替え
pyenv global 3.6.4
# 切り替わったかの確認
$ python --version
Python 3.6.4
とちゃんと表示されたらOK!
virtualenvとはつまり何なのか
ハッカーの多くはちゃんとした方なので正確な表現を好みます。ですので、python仮想環境にも正確な表現が多くて個人的にはザクっとした内容が掴みづらかったです。超初心者的な目線からザクっとvirtualenvについて述べると
1.pythonのverを含んだ色んなmoduleをあるフォルダ内に突っ込んでおくと
2.そのフォルダに行き魔法を唱えることで
3.pythonのverとmoduleを引っ張ってきてglobalに反映できる
という手段なのだと理解しています。
virtualenvのインストール
インストールはeasy にイケる
$ sudo easy_install virtualenv
virtualenvの使い方
突っ込むようのフォルダを適当な場所に作る
$ mkdir learning_1
virtualenvコマンドを実行
$ virtualenv --no-site-packages learning_1
大事なのは --no-site-packagesオプションをつけて余計なpackageを引っ張ってこないこと。
フォルダに移動して、魔法を唱えて仮想環境を起動(pythonのverとmoduleを引っ張ってきてglobalに反映する)
$ cd learning_1
$ source bin/activate
(learning_1)%
とコンソールに表示されたらOK!
仮想環境を終了するには
(learning_1)% deactivate
でOK!
tensorflowのインストール
ここまでくればあとはシンプルにpipで入れていくだけ。
(learning_1)% pip install --upgrade tensorflow-gpu
これだけ
kerasのインストール
(learning_1)% pip install keras
超easy
chainerの諸々のインストール
先にcupyをインストールし、その後chainerをインストール
(learning_1)% pip install cupy
(learning_1)% pip install chainer
最後に機械学習諸々に必要そうなやつをインストール
(learning_1)% pip install scipy
(learning_1)% pip install matplotlib
(learning_1)% pip install scikit-learn
(learning_1)% pip install jupyter
(learning_1)% pip install seaborn
これでOKです。最後にjupyterを起動して適当なスクリプトがきっちり、GPUで走るかを確認してください。その際にjupyterを使うなら、きっちりlearn_1がactiveになっている状態でjupyterを起動すると。