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