ちょっと話題の記事

Amazon SageMakerでChainerのMNISTをさっそく試してみた #AWSSummit

2018.06.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Summit Tokyo 2018。Day3の基調講演で、Amazon SageMakerが東京リージョン対応したことと、Chainerをサポート発表されました。

[速報] Amazon SageMakerが東京リージョンで提供開始!いますぐ機械学習をはじめよう!

Chainerがどんな感じでSageMakerで使えるのか、さっそく試してみました。

やってみる

マネージメントコンソールを開いて、サービス一覧からAmazon SageMakerをクリックします。リージョンは東京になっていますね。

ノートブックインスタンスを作成

まずはノートブックインスタンスを作成します。

フォームが現れますので必要事項を入力します。

  • インスタンス名を適当に入力
  • インスタンスタイプを選択
  • IAMロールを作成

インスタンスサイズは、とりあえず最小のものを選びました。インスタンスは、通常のCPUインスタンス(t2, m4)のほか、GPUインスタンス(p2, p3)も選ぶことができるようです。インスタンスサイズの選択肢はこんな感じです。

IAMロールを作成します。S3バケットにアクセスできる権限を付与します。テストですので、とりあえず任意のバケットにアクセスできるようにしました。

VPCなど他はデフォルトのままでOKです。

インスタンス作成すると、ステータスがPending(起動中)となります。

数分後、準備が完了するとIn Serviceとなり、オープンのリンクが現れます。

ノートブックを開く

オープンのリンクをクリックすると、別タブが開き、Jupyter Notebookの画面が表示されます。

いくつかタブがあり、デフォルトのFilesタブは空ですが、SageMaker Examplesのタブを開くと、サンプルがたくさん入っています。

カテゴリがいくつかに別れていますが、SageMaker Python SDKを開くと、各フレームワークのサンプルが入っています。

Chainerのサンプルもこちらにはいっています。ファイル名を見ると分散学習に対応したChainerMNのサンプルもあるようです。Previewボタンをクリックすると、ファイルをコピーして開く前に、中身を参照することができます(地味に便利です)。

どれを試してみるか迷うところですが、ここはやはり機械学習のHelloWorldである、MNISTをやってみます。chainer_mnist_local_mode.ipynbを開きます。

そうすると、サンプル解説付きのノートブックが開きます。

実行してみる

Jupyter Notebookですので、上のセルから順次実行していきます。まずはセルを一つ一つCtrl-Enterで実行していきます。何をしているのか、解説が付いていますのでわかりやすいですね(英文ですが)。

セットアップ用シェルスクリプトが用意されており、これもノートブック内で実行します。

MNISTの学習用データはChainerでダウンロードできるようになっていますので、この機能でダウンロードが行われます。

ここで表示されるソースコードがS3バケットに作成されるようです。

S3を確認してみると、バケットが作成され、ソースコードがアップロードされています。

つづいて、Chainer用のestimatorというオブジェクトを生成しています。コードを見るとGPUがあればそれを使うようになっているようです。その他のパラメータとして、学習用のインスタンスの数などを設定しているようです。

トレーニングを実行してみます。CPUなのでさすがに遅く、20分程度かかりました。時間は、インスタンスの種類やサイズによって前後すると思われます。

トレーニングが終わったら、学習結果をグラフで確認することができます。回数は少ないですが、accuracyが上がって、lossが減っているのがわかります。

文字認識をためす

Jupyter Notebookに、四角い枠が用意されています。このエリアには、マウスカーソルで手書きすることができます。ここに書いた字を文字認識して試すためのもののようです。

適当に数字を描いて、すぐ下のセルを実行すると、推論結果が表示されます。手書きの3がちゃんと認識されました。

何度でも繰り返し試せます。この場合は成功しましたが、何度か試すと認識結果はいまいちでした。Epoch回数を増やせば精度は上がるはずです。

Chainerのバージョン

ちなみにChainerのバージョンは、最新の4.1.0でした。

(追記)ChainerMNのバージョンについても確認してみたところ1.2.0でした。最新は1.3.0ですので、一つ古いようです。

さいごに

Amazon SageMakerを東京リージョンで試してみました。Chainerのサンプルも入っており、すぐに試せます。ChainerはAWSで使いにくいなんて思われがちだったようですが、これからは標準環境に入ったということで、使いやすくなりそうですね。

こちらからは以上です。