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

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

はじめに

技術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します。

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

Jupyterの起動と利用

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

すると、以下のように、トークン入りの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 を使い、 参考書 に沿って機械学習を学べる環境を構築しました。
今後は参考書の内容をよく読みつつ、サンプルコードを少し変えながら実行してみるなどして、機械学習に対する理解を深めようと思います。

AWS運用自動化サービス「Cloud Automator」