Paperspaceは、クラウドGPU環境を提供しています。深層学習を実装する人にとって、AWSの代替サービスの1つです。GPUの時間単価が$0.51と安めであることや、マシン(AWSでいうインスタンス)の作成やオンオフの切り替えなどの手順がわかりやすいことが利点だと思います。
2018年8月現在、Paperspace上でGPUによる計算を行うには、主に次の3つがあるようです。
- ノートブックを開いて、作業する
- Jobという機能でスクリプトを実行する
- 仮想マシンを作成し、その上で作業する
1, 2は、すでに主要なライブラリの揃った状態の環境がいきなり立ち上がるなので、手軽です。
3にしても、機械学習向けの設定済みのテンプレートが存在して、それを使えば設定に苦労はないようです(ただし仕様意図を伝えて承認を得るまでは使えないようです)。最後に、空のUbuntu16.04サーバーの仮想マシンを作成する方法があります。その場合、分析環境の構築はすべて自前になります。この記事は、このマシンで、KerasとPytorchでGPUを用いた分析を行うまでの手順の記録です。Paperspace以外のUbuntu環境でもうまくいく可能性も高いと思われます。
NVIDIAのドライバーのインストール
私はこの手順をはじめ省略してしまった結果、libcuda.so.1
が見つからないというエラーがでました。
下記のコマンドでインストールすると解消しました。こちらのブログのコピーです。
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-375
なお、このあと再起動が必要なようです。再起動後に、次のコマンドを打って状態を確認できます。
cat /proc/driver/nvidia/version
NVRM Version...
というような出力がでるようです。
Minicondaとライブラリのインストール
ドライバさえ入れてしまえば、あとは慣れ親しんだMinicondaで行えます(Anacondaでも可)。かつては苦労したNVIDIAの関連ソフトのインストールも今やCondaが行ってくれるようです。
wget -v https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -u
echo 'export PATH="/home/paperspace/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
途中の-b
はバッチモードオプションで、途中のプロンプトやライセンスへの同意を「Yes」とみなしてスキップします。-u
はアップデートの意味です。
3行目はログイン時にcondaの実行ファイルの場所をPATHに追加する設定を行い、最終行でその設定を読み込んでいます。
今回はKerasとpytorchの実験なので、下記の最小構成で用意します。切り替えのため仮想環境を作っています。
conda create -n testenv keras-gpu
source activate testenv
conda install pytorch torchvision -c pytorch
実験
Keras, Pytorchの実行確認のため、それぞれサンプルファイルをダウンロードします。公式のGitレポジトリから持ってくるのが簡単です。
なお、下記のようにtestディレクトリを作ってそこで実行しているのは、pytorchのスクリプトが親ディレクトリにdata/
を作っており、それがPermissionエラーを起こしたためです。
# make test dir and move to it
mkdir test && cd test
# keras test
wget -v https://raw.githubusercontent.com/keras-team/keras/master/examples/mnist_cnn.py
python mnist_cnn.py
# pytorch test
wget -v https://raw.githubusercontent.com/pytorch/examples/master/mnist/main.py
python main.py
うまく行っていれば、どちらのスクリプトもMNISTを用いたCNNモデルを高速で学習します。
時間課金なので、実行後は忘れずにマシンを停止させます。