Amazon SageMakerでChainerのMNISTをさっそく試してみた #AWSSummit
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で使いにくいなんて思われがちだったようですが、これからは標準環境に入ったということで、使いやすくなりそうですね。
こちらからは以上です。