Amazon SageMakerに触ってみた

AWS運用自動化サービス「Cloud Automator」

SageMakerとは
SageMakerとは、AWSの提供する機械学習のサービスです。
SageMakerのコンソールからノートブックインスタンスを起動して、JupyterNotebookを利用できます。
また、モデルのトレーニング用のコンテナを確保して利用したり、予測モデルホスティングのデプロイ作業を操作したりする機能も備わっています。
2018年6月より、東京リージョンでも利用が可能となっています。

ノートブックインスタンスの起動
SageMakerのコンソールより、「ノートブックインスタンスの作成」をクリックして、インスタンス名を入力するくらいで簡単に起動できます。
このノートブックインスタンスが起動している間は、EC2インスタンスなどと同様に、従量課金が発生します。
利用していない間は、Stoppedのステータスに変更もできます。

ノートブックインスタンス作成後、コンソールから「オープン」をクリックして、Jupyterにアクセスします。

新しく、「conda_python3」のノートブックを作成します。

Jupyter上での操作
今回は以下の流れで進めていきます。

①JupyterNotebookからS3バケットにトレーニング用のデータをアップロードします
②JupyterNotebookからコンテナを起動します
③コンテナがトレーニング用のデータを取得してモデルをトレーニングします
④トレーニングしたモデルをS3バケットにアップロードします
④JupyterNotebookから予測モデルをホスティングするためのインスタンスを起動させます
⑥S3バケットにアップロードされているモデルをホスティングします
⑦エンドポイントにAPIを投げることで、予測を得られます

・データの生成
話を簡単にするために、乱数で以下のデータを生成します。
Y = 4 + 2 * X1 – 3 * X2 + 誤差
また、データを二つに分割してトレーニング用のものとテスト用のものに分けておきます。

・ライブラリのインポート

・S3バケットにトレーニング用のデータをアップロード

bucketにはバケット名が入ります。

・コンテナを指定

・モデルをトレーニングして、結果をS3バケットに出力します

・モデルのデプロイ

・予測

とりあえず2データ分予測APIを実行してみました。
乱数発生させたときの形から、
一つ目のスコアは1前後で二つ目のスコアは-1前後になる予定でしたので、ひとまずOKです。

・モデル評価

それぞれ、トレーニング用のデータに対する回帰の決定係数と、テスト用に確保しておいたデータに対する回帰の決定係数です

・エンドポイントの削除

・同じデータに対して、scikit-learnでやってみるとこんな感じです。

AWS運用自動化サービス「Cloud Automator」