#はじめに
先週のRe:Invent2017でリリースされたAWS SageMakerを早速試してみました。
AWSのドキュメントでは
ノートブックインスタンスを作成し、コマンドでその後の手順を実行していますが、
今回はコンソールから試してみました。けっこうハマったのでメモです。
#使用データ
今回はモデルデータとしてirisのデータセットを使用。
こちらから生データを入手しました。
#やってみる
SageMakerでは、
- ノートブックインスタンスの作成
- ジョブの作成
- モデルの作成
- エンドポイントの作成
の順で実施していけばいいらしい。
##ノートブックインスタンスの作成
設定項目をいい感じで入力すると、jupyter notebookのインスタンスが作成される。
この中でデータの整形だったりの前準備をするといいらしい。
今回はpythonを書いて行うような前処理もないので、ここは割愛。
##ジョブの作成
早速、ハマる。
今回、K-Meansを試してみる。
この他にも全10種類ほどのアルゴリズムが用意されている。
また、自前のDockerイメージを使えば、独自のアルゴリズムを搭載することもできる。
設定をポチポチ入力していく。
アルゴリズムの調整パラメータもポチポチ入力していく。
ここは選択したアルゴリズムによって変わる。
で、次がハマりポイント。
コンテンツタイプをtest/csvみたいに誤字ったり
S3の場所設定をミスったりすると、
わけの分からないエラーがでる。
(新しいサービスだからエラーメッセージが追いついてない...?)
ちゃんと入力するとこんな感じです。
##モデルの作成
ここでもちょいハマり。
ジョブの作成時に結果としてS3に格納されるのは、
学習結果のパラメータ(アーティファクト)のみなので、
トレーニングに用いた推論の本体部分イメージが別途必要となる。
なので、
先ほど作成したジョブの詳細から、トレーニングイメージのアドレスをコピーして、
モデルの設定画面に入力する。
(私は空のECRレポジトリのアドレスを入力し続けてハマりました。。)
##エンドポイントの作成
最後にエンドポイント設定の作成、エンドポイントの作成を行う。
エンドポイントの作成が完了すると、以下のようにAPIが作成され、
テストデータをPOSTすることで、結果を得ることができる。
エンドポイントがInServiceの間は課金が続くが、
現状、エンドポイント停止の操作ができないので、
使用しなくなったら一旦エンドポイントを消去し、
使うときに再び、エンドポイント設定からエンドポイントを作成するのが良さそう...?
#おわりに
今回はAWS SageMakerを試してみました。
機械学習をちょっと導入してみたい方にはとてもおすすめなサービスだと思います。
また、Lambdaにデフォルトで導入されているboto3は
まだSageMakerに対応していないので、
Lambdaを使ってPOSTするときは、最新のboto3を自分で導入する必要があります。
次は自前Dockerイメージからの作成を試してみたいと思います。では。