Ubuntu 16.04 LTS GPU deep learning 環境を整備 その2 pythonとDeep learningのpackage周り

全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でインストール

terminal
$ sudo git clone git://github.com/yyuu/pyenv.git ./pyenv

パスを通す

terminal
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> >> ~/.bashrc

ターミナル再起動または

terminal
$ source ~/.bashrc 

でパスが書き込まれたbashrcを読み込む。
続いて、インストールできるpythonのリストを表示する。

terminal
$ source ~/.bashrc 
#ズラーっとインストールできるpythonのverがでる。

インストールとpythonのverの切り替え

terminal
#インストール
$ 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 にイケる

terminal
$ sudo easy_install virtualenv

virtualenvの使い方

突っ込むようのフォルダを適当な場所に作る

terminal
$ mkdir learning_1

virtualenvコマンドを実行

terminal
$ virtualenv --no-site-packages learning_1

大事なのは --no-site-packagesオプションをつけて余計なpackageを引っ張ってこないこと。
フォルダに移動して、魔法を唱えて仮想環境を起動(pythonのverとmoduleを引っ張ってきてglobalに反映する)

terminal
$ cd learning_1
$ source bin/activate

(learning_1)%

とコンソールに表示されたらOK!

仮想環境を終了するには

terminal
(learning_1)% deactivate 

でOK!

tensorflowのインストール

ここまでくればあとはシンプルにpipで入れていくだけ。

terminal
(learning_1)% pip install --upgrade tensorflow-gpu

これだけ

kerasのインストール

terminal
(learning_1)% pip install keras

超easy

chainerの諸々のインストール

先にcupyをインストールし、その後chainerをインストール

terminal
(learning_1)% pip install cupy
(learning_1)% pip install chainer

最後に機械学習諸々に必要そうなやつをインストール

terminal
(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を起動すると。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.