AWSの機械学習プラットフォームSageMakerを使ってみた

AWSの新サービスである機械学習プラットフォーム SageMakerを触ってみました。ざっくり言うとデータ処理、学習、作成したモデルをコンテナとしてデプロイするという一連の作業をAWS上で提供されるJupyter Notebookから行うことができるというものです。

aws.amazon.com

SageMakerで作成したJupyter Notebookには最初からいろんなサンプルがついているのでまずはこれらで動きを確かめてみました。

f:id:takezoe:20171206171818p:plain

データなどを準備した後、create_training_job()メソッドに必要なパラメータを渡すと自動的に必要なインスタンスが用意され学習が行われます。サンプルでは学習データはS3に置かれており、生成された予測モデルは指定したS3上のパスに保存されます。ちなみに独自のアルゴリズムを使用したい場合はDockerイメージを用意する必要があるみたいです。

同じくcreate_endpoint()メソッドでHTTPのPOSTメソッドでアクセス可能なエンドポイントができます。パラメータでインスタンス数を指定できるので冗長化はできるようですが、APIリファレンスを見た感じモデルを更新した場合などの再デプロイする場合はエンドポイントを一回削除して作り直すか、別のエンドポイントを作成する必要がありそう。

ダッシュボードにはこんな感じでノートブック、学習ジョブ、モデル、エンドポイントの状態が表示されます。

f:id:takezoe:20171206172133p:plain

これらのワークフローに乗るためにはSageMakerのライブラリの使い方を覚える必要があります。デフォルトで付属しているサンプルや以下の開発者ガイドに目を通しておくとよいと思います。

docs.aws.amazon.com

ただ、必ずしもSageMakerのワークフローに乗らなくてもよいのかもしれません。たとえば入力データをAthenaから持って来たり、SageMakerのジョブを使わずに学習を行うということもできそうです。AWS上のリソースを活用するためのマネージドなJupyter Notebookとして使うのもありかもしれません。