完成してないけど、忘れそうなのでメモ。
インスタンスを立てる
# firewallのルールをつくる gcloud compute firewall-rules create default-allow-rstudio --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:8787 --source-ranges=0.0.0.0/0 --target-tags=rstudio-server # Ubuntu 16.04のイメージをつくる gcloud compute instances create keras-test --image-family ubuntu-1804-lts --image-project ubuntu-os-cloud --accelerator=type=nvidia-tesla-k80 --preemptible --tags=rstudio-server
インスタンスにいろいろインストール
Docker
これはあまりにも公式手順通りなので省略。
nvidia-docker
これも公式手順通りにやる。
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update # あとでリブートするのでdockerの再起動はとりあえず不要 sudo apt-get install -y nvidia-docker2
ドライバのインストール
ここは、Tensorflowのページに書かれている手順を参考にやったけど、よくわからなかった。
# レポジトリを追加 sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb sudo apt install ./cuda-repo-ubuntu1804_10.0.130-1_amd64.deb # なぜかディレクトリを掘っておかないと失敗する(これなぜ...?) sudo mkdir /usr/lib/nvidia # ドライバをインストール(どれを選べばいいかわからなかったので最小バージョンの384) sudo apt install nvidia-384
たぶんこれは失敗するので、いちどリブートした後もう一度やるといけるはず。
sudo apt install nvidia-384
Dockerイメージを起動
ここに、nvidia/cuda:9.0-runtime-ubuntu16.04
(9.0-base-ubuntu16.04
でもいいのかも)をベースにしてRStudioとかKerasとかを入れたDockerイメージを走らせればいいはず。
雰囲気にはこんな感じ?
docker run \ --runtime=nvidia \ -p 8787:8787 \ -e PASSWORD=<password> \ --name rstudio \ <Dockerイメージ>
その他メモ
- RockerのイメージはDebianベースだが、Debian用にはCUDAのdebパッケージがない。
- Tensorflow1.11はCUDA 9.0を使うが、Ubuntu 18.04にはCUDA 9.0のdebパッケージがない。CUDA 10.0のdebパッケージはあって、Tensorflow 2.0になるとCUDA 10.0対応するらしい。
- COSへのNVIDIAのドライバのインストールはcos-gpu-installerを使えば簡単にできる。が、そこから先はk8sの話しか出てこなくて、nvidia-docker2のインストール方法がわからない。
- Tensorflowをimportしたときに出る「
libcuda.so.1
がない」という感じのエラーは、CUDAが適切にインストールできていないのではなく、GPUをうまく認識できていない(ドライバをインストールし忘れている、--runtime=nvidia
を付け忘れている)時に出るっぽい気がする。 - Dockerを使わないのも手かも。イメージめっちゃ重くなるし。