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自体が立ち上がらなくなるため,ダウングレードする必要があるようです。
ここにあるように
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の言い間違いかなって言っていた自分がここまでできるようになるとは思いもよらなかったです。
誤りなどあればおっしゃってください。すぐに訂正いたしますので。