うまい寿司が食いたい。

うまい寿司が遠慮なく食べれるようになるまで,進捗とか垂れ流すブログ

CUDAのインストール〜Jupyter Notebookへのリモートアクセスまで

本稿は記憶の定着のための覚え書きです。

GPUが入っているUbuntuマシンが与えられたため,リモートでアクセスして機械学習を行う環境を構築しようとしています。
dockerで構築することも考えたのですが,とりあえずはLinuxの環境に慣れるために一度はマシン上に環境を作ってみようとしたので,その際に役立ったサイトなどをまとめておきます。
何番煎じになるのかわかりませんが,ググりながらしたことをまとめておくので,どこかの誰かの役に立てばいいなと思います。
仕事で作業をしたため,画面の図はありません。参考にしたサイトを見てください。

スペック

リモートマシン
OS : Ubuntu 18.04.01 LTS
GPU : Geforce GTX 1080

ローカルマシン
OS : windows 10
ローカルからリモートへのssh接続:putty

CUDAのインストールまで

CUDAがインストールできない!といろんなところで聞きますが,思ったよりあっさりインストールができました。

nvidia-smiまで

参考にしたサイト: https://www.server-world.info/query?os=Ubuntu_18.04&p=nvidiawww.server-world.info

この記事に従ってデフォルトで入っているnvidiaのドライバnouveauを消去し,Nvidiaサイトから必要なドライバのバージョンを見つけて,インストールします。

現段階で入力したのは

apt -y install nvidia-driver-390

でした。この-yは,すべてYesで返すというoptionだそうです(知らんかった)

インストールが終われば,nvidia-smiコマンドが使えるようになりました。

CUDAのインストール

参考にしたサイト: https://www.server-world.info/query?os=Ubuntu_18.04&p=cudawww.server-world.info

上の記事の続きです。(このサイトubuntuでやりたいことが一通りまとまっていて大変便利です)

apt -y install nvidia-cuda-toolkit

を入力するだけでインストールが終わりました。かなりあっさりしたインストールでした。

Pythonの環境構築

pyenv + anacondaで環境を構築しました。
pyenv経由でanacondaを入れる理由は,こちらに書かれています。
linuxだとanacondaはシステムのPATHを上書きしてOSのコンポーネントをシャドーイングしちゃうという凶悪仕様であるそうなので,ほぼ必須のようにここでは書かれています。(記事は2017/10月のもの)
私は「動けばよい」ぐらいにしか考えていませんので,現在も同じようになっているのかまでは確認できていません。

pyenv + anacondaの設定で参考にしたサイト

http://blog.algolab.jp/post/2016/08/21/pyenv-anaconda-ubuntu/blog.algolab.jp

少し古い記事(2016/8月)ですが,上のサイトを参考に環境を構築しました。
最新のanacondaを

pyenv install anaconda3-5.X.X

で入れました。細かい事項は上のリンクを参考にしてください

インストールまではできたのですが,

pyenv global hogehoge

をしてもanacondaの設定が反映されず,ターミナルのshellを実行しても機械学習用のライブラリがimportできませんでした。
これに関しては,例えば,このQiitaの記事にあるように,

pyenv shell anaconda3-5.X.X

とすることで,解決できました。

Jupyter Notebookにローカルマシンのブラウザでアクセス

参考にしたサイト starpentagon.net

jupyter notebook --generate-config

を実行すれば,jupyter_notebook_config.pyができるので,設定を変えればリモートからアクセスできました。
サイトに書いてある通りなのですが,

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False

コメントアウトを外して書き換えればオッケーです。

ただ,現在(2018/10月)のNotebookのバージョンでは,この設定を行うとNotebook自体が立ち上がらなくなるため,ダウングレードする必要があるようです。

qiita.com

ここにあるように

conda install notebook==5.6.0

でダウングレードできるので,これでNotebookが立ち上がり,ローカルマシンのブラウザからアクセスできるようになります。

Notebookが立ち上がるけど,権限の問題で.ipynbが作れなかったので,画面上に出たエラーをそのままググると解答がありました。

sudo chown user:user ~/.local/share/jupyter 

でローカルマシンのブラウザからNotebookを作成することができるようになりました。
参考:https://stackoverflow.com/questions/46272880/cannot-open-new-jupyter-notebook-permission-denied

 まとめ

昨年までGPUはCPUの言い間違いかなって言っていた自分がここまでできるようになるとは思いもよらなかったです。
誤りなどあればおっしゃってください。すぐに訂正いたしますので。