R
CUDA
環境構築
Keras
TensorFlow

普段はMacbookProを使っているけどディープラーニングするためにNVIDIAGPU搭載OSなしPCを別途買ってきた人が初期設定してRでKerasをリモートで動かす

こんな人にとって参考になる記事だと思います

  • 普段はMacBookProで機械学習をしているが、GPUが非搭載でディープラーニングをするには非現実的なので、別途GPUありのPC(Linuxを使うためにOSなしのもの)を買ってきたものの、そのPCはメインで使わずにディープラーニングするときだけ使いたいのでディスプレイをつなげず、MacからSSHリモート接続でGPU計算サーバーとして使用したい人。
  • なお、この記事はPythonではなくRでディープラーニングをする人向けの記事です。
  • GPUはCUDA Compute Capability 3.0以上のものを選びましょう。

Ubuntu16.04LTSをインストールする

  • インストールまでは割愛するが、自動的にログインするようにしておくこと。
  • 立ち上がったら、無線LANを繋いでインターネットをできるようにする。
  • そしてctrl shift tでターミナル起動。

SSHをインストール

sudo apt install ssh

上記で「一時的に解決できませんでした」などと言われインストールがうまくいかない場合は以下の通り対処

  • 以下でPCのIPアドレスと接続先のルーターのIPアドレスを取得。inetというのがPCのIPアドレス、末尾を1に読み替えるとルーターのIPアドレス。(私の環境の例ですが、一般的にはこの理解で問題ないと思われる)
ifconfig
  • /etc/network/interfacesをnanoで編集。
sudo nano /etc/network/interfaces
  • 開いたら、以下を追記。
dns-servers ルータのIPアドレス
  • 次に、/etc/host.confをnanoで編集。
sudo nano /etc/host.conf
  • 開いたら、orderのところをみて、host,hoge,,,等となっていてdnsがない場合、以下のように変更。
order host,dns,hoge,,,
  • 以上でうまくいくと思われる。あらためてsshをインストール。ここまでの作業が終わったらPCからディスプレイ、キーボード、マウスは取り外してOK。(以降は使わないので)
  • 使いたいときに、電源を入れて立ち上がった頃合いをみてmacからssh接続で使う運用となる。

MacからSSHでPCに接続

  • 以下の通り。最初はmacと接続先PCが共有する鍵のようなものが発行されるだけで繋がらず、2回同じコマンドを入力する(と記憶している)
ssh 接続先PCで使っているユーザー名@接続先PCのIPアドレス(上記inetと同一)

SSHの設定

  • SSHはすぐ切断されてしまうので、切れにくくするため、/etc/ssh/sshd_configをnanoで編集。
sudo nano /etc/ssh/sshd_config
  • 開いたら、以下を追記。
ClientAliveInterval 300
  • 追記したら、以下を実行。
service sshd restart

Ubuntuのアップデート

  • 以下を実行。
sudo apt update
sudo apt upgrade

Rのインストール

cat /etc/lsb-release
  • apt installでRcranからRをダウンロードしてインストールしてもらうため、/etc/apt/sources.listをnanoで編集。
sudo nano /etc/apt/sources.list
  • 開いたら、以下を追記。ここで、(DISTRIB_CODENAME)のところは上記で確認したDISTRIB_CODENAMEとする。例えば、xenialだったら、https://cran.ism.ac.jp/bin/linux/ubuntu xenial/となる。
deb https://cran.ism.ac.jp/bin/linux/ubuntu (DISTRIB_CODENAME)/
  • sources.listを更新したので、aptをアップデート。
sudo apt update
  • Rをインストール
sudo apt install r-base
  • インストールしたら、以下でRを起動。大文字である必要があるので注意。
R
  • Rのバージョンを確認し、古いバージョンが入った場合、Rを終了して、以下を実行していってRをアップデートし最新にする。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
sudo apt update
sudo apt upgrade
  • この先Kerasを入れるが、そのためにpipやvirtualenvを入れないといけないので、以下を実行。
sudo apt install python-pip python-virtualenv

GPU版KerasとTensorflowのインストール

install.packages("keras")
library(keras)
install_keras(tensorflow = "gpu")

CUDA(CUDAtoolkit9.0とcuDNNv7.0.5(Dec 5,2017)とCUDA profiletools)をインストール

  • GPU版Kerasを入れてもCUDAtoolkitとcuDNNとCUDA profiletoolsが入っていないのでまだ動かない。もくもくとインストールしていく。基本的にはhttps://tensorflow.rstudio.com/tools/local_gpu.html の通り進める。
  • Rは終了し、まずはターミナルで以下を実行してCUDAtoolkitを入れる。最後のコマンド以外は、aptでCUDAをインストールできるようにするための設定となっている。なお、CUDAtoolkitのバージョンは9.0とすること。
sudo apt-get install linux-headers-$(uname -r)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-9-0
  • 次に、cuDNNを入れる。これは、debパッケージをサイトからダウンロードして、dpkgでそれを展開することでインストールする。ここで、今はSSH経由で自作PCをCUIでいじっているので、ブラウザがそもそも使えない。よって、debパッケージはmacでダウンロードする。一旦、ssh接続を以下を実行して解除する。
exit
  • macで、https://developer.nvidia.com/cudnn にアクセスし、ユーザー登録を行ってから、Downloadをポチる。ポチると色々ダウンロードできるファイルがあるが、「Download cuDNN v7.0.5(Dec 5,2017),for CUDA9.0」を選択、この中の「cuDNN v7.0.5 Runtime Library for Ubuntu16.04(Deb)」をダウンロード。
  • ダウンロードしたら、それをscpでPCに送信する。以下を実行。送信先はカレントディレクトリ。(/home/ユーザー名)
scp (ダウンロードしたものがあるフォルダパス)/libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb 接続先PCで使っているユーザー名@接続先PCのIPアドレス:/home/ユーザー名
  • 送信が完了したら、再度ssh接続して、接続先のターミナルで以下を実行。これでcuDNNはインストール完了。
sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
  • CUDA profiletoolsをインストール。以下を実行。
sudo apt-get install libcupti-dev
  • 最後に、~/.profileをnanoで開き、以下を追記。
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64 
PATH=${CUDA_HOME}/bin:${PATH} 
export PATH
  • これでCUDA周りのインストールは全て完了。

  • RでGPU版Kerasを使えるようになったか確認するため、https://tensorflow.rstudio.com/keras/ のPREPARING THE DATA以下のプログラムをRで実行し動くことを確認。無事に動いたら全ての作業が完了です。お疲れ様でした。