本記事はうるる Advent Calendar 2019 15日目の記事です。
はじめに
みんな大好き機械学習。在庫予測からF1のタイヤ消耗度まで様々な分野で活用されています。
Amazonでもそんな機械学習を簡単に行えるサービスを展開してます。
その中のAmazon Personalizeを使う場面があったので、あえてその源流のAmazon SageMakerを使ってみようと思います。そしてついでに最近公開されたばかりのAmazon SageMaker Studioも使ってみようというノリの記事です。今回は学習モデルの作成、デプロイまで行おうと思います!!
Amazon SageMakerってなんぞや
アマゾンさんのサイトから引用
Amazon SageMaker は、すべての開発者やデータサイエンティストが機械学習 (ML) モデルを迅速に構築、トレーニング、デプロイできるようにする完全マネージド型サービスです。SageMaker は高品質モデルの開発を容易にするため、機械学習の各プロセスから負荷の大きな部分を取り除きます。
従来の ML 開発は複雑、高価で、繰り返しプロセスを一層困難なものにしていました。その理由は機械学習ワークフロー全体の総合ツールが存在しないためです。ツールとワークフローを一緒に結び付けて行く必要がありますが、これは時間のかかる、誤りの多いプロセスと言えます。SageMaker はこの課題を解決するために 1 つのツールセットで機械学習用に使用できる全コンポーネントを提供し、モデルを本番環境へ送り出すまでの時間を短縮して、手間と費用を大幅に抑えられるようにしました。
https://aws.amazon.com/jp/sagemaker/
要するに、機械学習を始める上での障壁である、コスト(サーバー、学習など)を最小限に抑えたマネージドサービス作ったので使っちょ!というものです。
Amazon Personalizeなどのサービスはレコメンデーションに特化していたりして、何かと制約が多いのですがそういう制約を気にせずにゴニョゴニョできるのがAmazon SageMakerです。(ただし学習コストはかかります。)
Amazon SageMaker Studioってなんぞや
従来のAmazon SageMakerでは、Jupitorノートブックを開いてpythonのコードを流し込むのが一般的で、各工程ごとにポチポチする作業が存在しました。その基本的な工程を一箇所で行えるようにしたのがAmazon SageMaker Studioらしいです。
Amazon SageMaker Studio は単独のウェブベースビジュアルインターフェイスを装備し、そこではすべての ML 開発手順を実行できます。SageMaker Studio はモデルの構築、トレーニング、デプロイに必要な各ステップに対し、完全なアクセス、管理、可視性をもたらします。データのアップロード、新規ノートブックの作成、モデルのトレーニングと調整、ステップ間での移動などを迅速にこなし、さまざまな試みを調整したり、結果を比較したり、本番環境にモデルをデプロイするといった処理をすべて 1 箇所から実行でき、生産性を飛躍的に向上できます。ノートブック、試作管理、自動のモデル作成、デバッグ、プロファイリング、モデルの変動検出など、すべての ML 開発手順は SageMaker Studio のビジュアルインターフェイスで実行できます。
Amazon SageMaker Studioは構築からデプロイ管理まで広くカバーしています。
機能がもりもり過ぎて説明しきれない&そんなに理解してないので詳しくはこちらをどうぞ!
https://aws.amazon.com/jp/sagemaker/
実際に使ってみる!!
今回はAmazonさんがAmazon SageMaker Autopilotの練習用に用意してくれた手順を適度にパクリながらやっていきます。
データセットはこちらを使用します。
https://archive.ics.uci.edu/ml/datasets/bank+marketing
銀行のダイレクトマーケキャンペーンの結果データっぽいですね!
The data is related with direct marketing campaigns of a Portuguese banking institution. The marketing campaigns were based on phone calls. Often, more than one contact to the same client was required, in order to access if the product (bank term deposit) would be ('yes') or not ('no') subscribed.
Y列が結果になっていて、このy列を教師あり学習の目的変数にセットしていきます。
(Y列の結果と、その他のカラムの結果の相関をもとにモデルを作るイメージ)
それでは早速、Amazon Sage Maker Studioを開いていきましょう。
おしゃんなローディング画面がでてきました。なんかもうこれだけで機械学習できる人感でてますよね。
学習用のデータの準備
学習用のデータをS3に準備します。コンソールから行ってもよいのですがあえてIDEでやってみようと思います。
下記リポジトリの手順どおり準備していきます。
- サイドバーにあるファイルマークをクリック
-
+
をクリックしファイル作成タブを展開 - Notebook > Python 3を選択し、Notebookを作成
すると、Notebookが展開されるので、そこにコードを書いていきます
import sagemaker
import boto3
from sagemaker import get_execution_role
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = 'sagemaker/autopilot-dm'
role = get_execution_role()
sm = boto3.Session().client(service_name='sagemaker',region_name=region)
SageMakerと同じリージョンにbucketを用意。
!wget -N https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip
!unzip -o bank-additional.zip
local_data_path = './bank-additional/bank-additional-full.csv'
学習用データをダウンロードします。
import pandas as pd
data = pd.read_csv(local_data_path, sep=';')
pd.set_option('display.max_columns', 500) # Make sure we can see all of the columns
pd.set_option('display.max_rows', 10) # Keep the output on one page
data
読み込めるかためしてみます。正常に読み込めると画面上にデータが表示されます。
train_data = data.sample(frac=0.8,random_state=200)
test_data = data.drop(train_data.index)
test_data_no_target = test_data.drop(columns=['y'])
データを学習用とテスト用に分割します。
train_data.to_csv(train_file, index=False, header=True)
train_data_s3_path = session.upload_data(path=train_file, key_prefix=prefix + "/train")
print('Train data uploaded to: ' + train_data_s3_path)
test_file = 'test_data.csv';
test_data_no_target.to_csv(test_file, index=False, header=False)
test_data_s3_path = session.upload_data(path=test_file, key_prefix=prefix + "/test")
print('Test data uploaded to: ' + test_data_s3_path)
そしてそれぞれS3に保存します。
これで学習用のデータの準備が完了しました。
SageMaker Studioでポチポチしていきましょう。
Amazon SageMaker Autopilotで簡単モデル作成
ここからは、ドキュメントとはお別れして実際にSageMaker Studioをポチポチしていきます。
- サイドバーのフラスコマークをクリック
- Create Experimentをクリック
すると、Amazon SageMaker Autopilot Experimentの設定タブが展開されます。
それぞれ設定していきます。
- Experiment Name
- インプットデータのパス(S3)
- 目的変数となるカラム名
- 結果の出力先(S3)
- 機械学習問題タイプ
- experimentでどこまでやるか
設定して、Create Experiment
をクリックすると設定完了です。
早速、Autopilotが動き、データ解析が開始されます。
全部終了するまでまぁまぁ時間かかるので待ちます。
すべて終了すると、作成されたモデル一覧が表示されます。
こうしてみると、相当な量な学習が行われていることがわかりますね。
左にスクロールしていくと、精度などの情報も見れます。
この情報をもとに、学習モデルを選択しデプロイを行います。
デプロイはここから行えます!!デプロイされると、Amazon SageMakerのコンソールにてIn Service
になっていることを確認できます
まとめ
結果としてAmazon SageMakerでAmazon SageMaker Autopilotを使う記事になってしまいましたが、Amazon SageMaker Studioを使うことによりNotebookで行う方法よりも簡単に、そして可視化された状態で機械学習が行えるようになりました!
詳しい使い方はまだ追えていませんが、これからガシガシ使い込んで行こうと思います!!
参照
Amazon SageMaker
Amazon SageMaker Autopilotを使ってみた
Direct Marketing with Amazon SageMaker Autopilot