AWS SageMakerをコンソールから試したらハマったのでメモ

はじめに

先週のRe:Invent2017でリリースされたAWS SageMakerを早速試してみました。
AWSのドキュメントでは
ノートブックインスタンスを作成し、コマンドでその後の手順を実行していますが、
今回はコンソールから試してみました。けっこうハマったのでメモです。

使用データ

今回はモデルデータとしてirisのデータセットを使用。
こちらから生データを入手しました。

やってみる

SageMakerでは、

  1. ノートブックインスタンスの作成
  2. ジョブの作成
  3. モデルの作成
  4. エンドポイントの作成

の順で実施していけばいいらしい。

sagemaker1.png

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

設定項目をいい感じで入力すると、jupyter notebookのインスタンスが作成される。
この中でデータの整形だったりの前準備をするといいらしい。

今回はpythonを書いて行うような前処理もないので、ここは割愛。

ジョブの作成

早速、ハマる。

今回、K-Meansを試してみる。
この他にも全10種類ほどのアルゴリズムが用意されている。
また、自前のDockerイメージを使えば、独自のアルゴリズムを搭載することもできる。

設定をポチポチ入力していく。

sagemaker8.png

アルゴリズムの調整パラメータもポチポチ入力していく。
ここは選択したアルゴリズムによって変わる。

sagemaker9.png

で、次がハマりポイント。
コンテンツタイプをtest/csvみたいに誤字ったり
S3の場所設定をミスったりすると、
わけの分からないエラーがでる。
(新しいサービスだからエラーメッセージが追いついてない...?)

ちゃんと入力するとこんな感じです。

sagemaker10.png

モデルの作成

ここでもちょいハマり。
ジョブの作成時に結果としてS3に格納されるのは、
学習結果のパラメータ(アーティファクト)のみなので、
トレーニングに用いた推論の本体部分イメージが別途必要となる。

なので、
先ほど作成したジョブの詳細から、トレーニングイメージのアドレスをコピーして、
sagemaker13.png

モデルの設定画面に入力する。
(私は空のECRレポジトリのアドレスを入力し続けてハマりました。。)
sagemaker14.png

エンドポイントの作成

最後にエンドポイント設定の作成、エンドポイントの作成を行う。
エンドポイントの作成が完了すると、以下のようにAPIが作成され、
テストデータをPOSTすることで、結果を得ることができる。
sagemaker21.png

エンドポイントがInServiceの間は課金が続くが、
現状、エンドポイント停止の操作ができないので、
使用しなくなったら一旦エンドポイントを消去し、
使うときに再び、エンドポイント設定からエンドポイントを作成するのが良さそう...?

おわりに

今回はAWS SageMakerを試してみました。
機械学習をちょっと導入してみたい方にはとてもおすすめなサービスだと思います。

また、Lambdaにデフォルトで導入されているboto3は
まだSageMakerに対応していないので、
Lambdaを使ってPOSTするときは、最新のboto3を自分で導入する必要があります。

次は自前Dockerイメージからの作成を試してみたいと思います。では。