GPU が搭載された機械学習環境をCloud9 上に作成する

機械学習の初歩的なところから学ぼうと、「Pythonで機械学習入門: 深層学習から敵対的生成ネットワークまで」を読みましたが、書籍内のコードを実行するための実行環境をCloud9 で作成したので、その時の環境構築メモです。GPU を利用したコードが出てくるため、GPU が利用できる環境を構築します。

勉強目的でCloud9 を利用するメリット

  • ブラウザで完結した環境をお手軽に作成
    • ローカルに設定不要。ブラウザのみでOK。
    • Cloud9 はブラウザ上のIDE であり、Jupyter Notebook 以外でファイルの変更や、ターミナルアクセス、git コマンドなどすべてが単一ブラウザ上で完結
  • 30 分アクセスしないとEC2 インスタンスが自動的に停止
    • GPU インスタンスは金額が大きいので、使っていないのに起動しっぱなしで課金されてしまうのは避けなければならない
    • Cloud9 ではデフォルトで30 分アクセスが無いと自動的にEC2 インスタンスを停止するので安心
  • 自分ですべてコントロールできるので、環境構築含めて学習可能
    • SageMaker を利用すると事前全部入りで提供されるため、構築・設定などの知識を得ることができないがその部分を含めて学習可能
  • 安価なg4dn.xlarge インスタンスタイプでお手軽に学習
    • SageMaker で2020/5/6 現在東京リージョンではg4dn.xlarge 使用できない
  • インターネットに公開されたセキュリティグループを作成しなくて良い
    • SSH やJupyter Notebook にアクセスするためのポートをセキュリティグループでインターネットに公開する必要がないのでセキュリティ的に安心
  • SSH 不要
    • これもセキュリティ的に安心、キーペアも不要

作業概要

  • Cloud9 の起動
  • インスタンスタイプの変更
  • ボリュームの拡張
  • jupyter notebook インストール
  • 機械学習ツール類インストール
  • NVIDIA CUDAおよびCuPy インストール
  • jupyter notebook 実行して動作確認

Cloud9 起動

マネージメントコンソールから起動します。

Cloud9 -> “Create environment”

名前は何でも良いです。

Configure settings 画面にて、Platform を”Ubuntu Server 18.04 LTS” を選択します。

その他はデフォルトで作成します。Cloud9 の画面が正常に表示されればOKです。

ブラウザのCloud9 タブは一旦閉じてください。このあとインスタンスを停止しますが、このタブが開いたままだとインスタンスが自動的に起動してしまいます。

インスタンスタイプの変更

Cloud9 のデフォルトのインスタンスタイプは、t2.micro です。GPU が搭載されたインスタンスタイプに変更します。学習用なので、最も安いg4dn.xlarge に変更します。料金は、EC2 オンデマンドの料金ページを参照してください。

マネージメントコンソールでEC2 サービスにアクセスして、起動中のCloud9 インスタンスを停止します。

停止状態(stopped) になったら、インスタンスタイプを”g4dn.xlarge” に変更します。停止状態にならずに、stopping からrunning になってしまった場合は、Cloud9 タブを閉じているか確認してください。

変更したあとはまだ起動せずに次のボリュームの拡張に進みます。

ボリュームの拡張

Cloud9 のデフォルトでは、ボリュームサイズが10 GB です。必要に応じて拡張してください。

変更したら、Cloud9 サービス画面から、Open IDE でCloud9 を起動します。

jupyter notebook インストール

Cloud9 のターミナルで以下のコマンドを実行します。

sudo pip3 install jupyter

インストールできたら一旦jupyter notebook を起動してアクセスしてみます。次のコマンドをターミナル上で実行します。

jupyter notebook --port 8080 --ip 0.0.0.0

次のように表示されたら、”?token” の後ろの英数字をコピーしておきます。

Cloud9 のメニューの”Preview” -> “Preview Running Application” をクリックします。


Cloud9 画面内に、以下のような画面が表示されますので、右上の”矢印アイコン” をクリックするとブラウザの別タブでJupyter Notebook の画面が表示されます。

“Password or token” に先程コピーしたトークンを貼り付けて”Log in” ボタンをクリックします。

以下のような画面が表示されればOKです。

Cloud9 画面に戻り、Jupyter Notebook は停止しておきます。

機械学習ツール類インストール

これは、利用するものをインストールすればよいですが、先程の書籍の内容を試す場合は、以下のものをインストールしておきます。なお、書籍を読み進めれば適切に案内があります。

sudo pip3 install matplotlib
sudo pip3 install numpy
sudo pip3 install chainer
sudo pip3 install scikit-learn
sudo pip3 install tqdm
sudo pip3 install pillow

NVIDIA CUDAおよびCuPy インストール

以下のコマンドを実行して、NVIDIA CUDA 10.2 をインストールします。多少時間(5分ほど)がかかります。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda

上記コマンドは、以下のURL から参照できます。

CUDA Toolkit 10.2 Download | NVIDIA Developer

インストールできたら、環境変数に以下のような内容をセットします。

echo "export PATH=/usr/local/cuda-10.2/bin:/usr/local/cuda-10.2/NsightCompute-2019.1${PATH:+:${PATH}}" >> ~/.bashrc
source ~/.bashrc 

次に、CuPy をインストールします。こちらも5分ほど時間がかかります。

sudo pip3 install cupy-cuda102
sudo pip3 freeze | grep cupy

CUDA のインストール詳細に関しては、以下のURL を参照してください。

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

CuPy のインストール詳細に関しては、以下のURL を参照してください。

https://docs-cupy.chainer.org/en/stable/install.html

jupyter notebook 実行して動作確認

先程の書籍コードは以下のGitHub 上に公開されていますので、Cloud9 のターミナル上でコードを取得しておきます。

mohzeki222/ohm_princess: 「Pythonで機械学習入門-深層学習から敵対的生成ネットワークまで」(オーム社)サポートページ

git clone https://github.com/mohzeki222/ohm_princess.git

以下のコマンドを実行して、Jupyter notebook を起動します。

jupyter notebook --port 8080 --ip 0.0.0.0

先ほどと同様に、Preview からJupyter Notebook のアクセスします。

ohm_princess -> note 内の、”Chapter4-fashion_mnist.ipynb” にGPU を使った処理が記述されていますので、これを実行してみます。

先頭の以下の記述は不要なので、削除してから実行してください。

from google.colab import files
uploaded = files.upload()

途中で、データのダウンロード処理が実行される箇所がありますが、初回実行時はこの箇所で少し時間がかかります。

最後までエラーなく実行されればOK です。グラフが表示されませんが、無視してください。

これで、GPU を利用した機械学習モデルなどの実行が可能になります。

書籍の紹介

初めて機械学習を学ぶ方で、コードを記述して動かしながら学習したいという方は、以下の書籍がおすすめです。この記事で作成した環境でコードを動かしながら機械学習の学習が可能です。ただし、概要を知るレベルなので、さらに進んでより深い内容を知りたい場合は、その他の書籍をあたってください。

この書籍シリーズには以下のようなものもあります。機械学習初学者の方はまずはこちらを先に読んで概要を掴んでから、上記のPython の書籍のほうに進んだほうが理解が進みやすいと思います。

このシリーズには、もう一つ以下の書籍もありますが、こちらは、最後に読むとよいかと思います。

以上です。