Deep Learning AMI で機械学習の参考書のサンプルコードをほぼ完遂する

記事タイトルとURLをコピーする

はじめに

技術1課の白鳥です。
「今流行りの機械学習を、実際に動かしながら勉強してみたいけど、実行環境を構築するだけでもきつい」
「せっかく参考書を買ったのに、掲載されているコードが正常に実行できない」
という悩みを持つ人は多いと思います。私もそんな感じです。 そこでこの記事では、AWSの Deep Learning AMI で実行環境を構築し、 参考書 Python機械学習プログラミング に掲載されているコードを実行してみます。 私が検証した条件では、第13章まである中で、第12章まではサンプルコードを正常に実行できました。 この記事では、バージニア北部リージョン(us-east-1)に環境を構築しますが、Deep Learning AMIは最近東京リージョン(ap-northeast-1)でも利用できるようになったので、今なら東京リージョンで同じことができるはずです。

インフラ構築

今回構築する環境は、以下のような構成になります。 VPC内にDeep Learning AMIからEC2を起動します。 参考書のサンプルコードの実行には Jupyter を使いますが、Deep Learning AMIには初めからインストールされています。 EC2でJupyterを起動したら、そこにローカルのブラウザからアクセスします。

では実際に環境を構築してみます。 私は以下の内容でEC2をlaunchしました。

項目 設定値
Region us-east-1
AMI Deep Learning AMI Ubuntu Linux - 1.2 (ami-9548e783)
Instance Type p2.xlarge
VPC Default
Subnet Default

AMIの選択時には、AWS Marketplaceを選択し、"Deep Learning AMI"で検索すると、最新のDeep Learning AMIがヒットします。 Deep Learning AMIには Ubuntu VersionAmazon Linux Version がありますが、私はUbuntu Versionを使用しました。 (Amazon Linux Versionだと、参考書中の描画系の処理の一部が実行できませんでした)P2系のインスタンスは利用料が高めですので、使用後の止め忘れにご注意ください。

Security Groupは以下のように設定します。

Ports Protocol Source
22 TCP My IP
8888 TCP My IP

Launchできたら、EC2へSSHで接続します。 こんな感じの画面が表示されるかと思います。

ファイルとパッケージの準備

ここから、EC2でコマンドを実行してサンプルコードを用意します。 また、サンプルコードを実行する上でいくつかパッケージが必要なため、追加でインストールします。 まずは以下を実行して、参考書のサンプルコードをcloneします。

$ git clone https://github.com/rasbt/python-machine-learning-book.git

Cloneできたら、以下のコマンドを実行していくつかパッケージをインストールします。

$ sudo python3 -m pip install watermark
$ sudo python3 -m pip install -U scikit-learn
$ sudo python3 -m pip install pydotplus
$ sudo python3 -m pip install -U nltk
$ sudo python3 -m pip install pyprind

Jupyterの起動と利用

ここまでで環境の準備は整ったので、Jupyterを起動してサンプルコードを実行していきます。 まずは以下のコマンドでJupyterを起動します。

$ jupyter notebook --ip=0.0.0.0

すると、以下のように、トークン入りのURLが発行されます。 このURLの 0.0.0.0 の部分をインスタンスのグローバルIPに置き換えて、ローカルのブラウザのアドレスバーに入力します。
すると、以下のようなJupyterのUIが表示されるはずです。 先ほどcloneしたディレクトリ "python-machine-learning-book" があるはずです。 その下の "code" というディレクトリ内に、参考書の各章のサンプルコードがあります。 例えば、第3章のディレクトリはこんな感じです。
GitHubからCloneされたファイル "ch03.ipynb" を開いて実行してもよいのですが、私はせっかくなので "ch03_self.ipynb" を新規作成しました。 ipynbファイルは、右上の "New" をクリックして新規作成できます。 今回の参考書のサンプルコードはPython3系で書かれているので、Python 3を選択します。 コードを入力できる欄が表示されるので、ここにサンプルコードをコピペして実行していきます。 私は ここ からコピーして実行してみました。 Jupyter Notebookを使うと、グラフなどを画像として出力した場合でも、コードの実行結果として表示されるので便利です。 第4章以降もサンプルコードを実行してみた結果、第12章までは正常に実行できることを確認できました。 第13章は、おそらく cuDNN のバージョンが新しすぎることにより、完了できませんでした。 ダウングレードさせるのも手間なので、「ほぼ」完遂ということでご容赦ください。

おわりに

この記事では、 Deep Learning AMI を使い、 参考書 に沿って機械学習を学べる環境を構築しました。 今後は参考書の内容をよく読みつつ、サンプルコードを少し変えながら実行してみるなどして、機械学習に対する理解を深めようと思います。