LoginSignup
24
29

More than 3 years have passed since last update.

流行りにのってAmazon SageMaker Studioを使ってみた!!

Last updated at Posted at 2019-12-14

本記事はうるる 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 のビジュアルインターフェイスで実行できます。

スクリーンショット 2019-12-15 1.29.00.png

Amazon SageMaker Studioは構築からデプロイ管理まで広くカバーしています。

機能がもりもり過ぎて説明しきれない&そんなに理解してないので詳しくはこちらをどうぞ!
https://aws.amazon.com/jp/sagemaker/

実際に使ってみる!!

今回はAmazonさんがAmazon SageMaker Autopilotの練習用に用意してくれた手順を適度にパクリながらやっていきます。

https://github.com/awslabs/amazon-sagemaker-examples/blob/master/autopilot/sagemaker_autopilot_direct_marketing.ipynb

データセットはこちらを使用します。

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.

スクリーンショット 2019-12-14 16.48.21.png

Y列が結果になっていて、このy列を教師あり学習の目的変数にセットしていきます。
(Y列の結果と、その他のカラムの結果の相関をもとにモデルを作るイメージ)

スクリーンショット 2019-12-14 16.48.58.png

それでは早速、Amazon Sage Maker Studioを開いていきましょう。

スクリーンショット 2019-12-14 14.51.11.png

おしゃんなローディング画面がでてきました。なんかもうこれだけで機械学習できる人感でてますよね。

学習用のデータの準備

学習用のデータをS3に準備します。コンソールから行ってもよいのですがあえてIDEでやってみようと思います。

下記リポジトリの手順どおり準備していきます。

https://github.com/awslabs/amazon-sagemaker-examples/blob/master/autopilot/sagemaker_autopilot_direct_marketing.ipynb

スクリーンショット 2019-12-14 16.52.26.png

  • サイドバーにあるファイルマークをクリック
  • +をクリックしファイル作成タブを展開
  • Notebook > Python 3を選択し、Notebookを作成

すると、Notebookが展開されるので、そこにコードを書いていきます

スクリーンショット 2019-12-14 16.59.23.png


    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

読み込めるかためしてみます。正常に読み込めると画面上にデータが表示されます。

スクリーンショット 2019-12-14 16.59.00.png


    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をポチポチしていきます。

スクリーンショット 2019-12-14 17.06.45.png

  • サイドバーのフラスコマークをクリック
  • Create Experimentをクリック

すると、Amazon SageMaker Autopilot Experimentの設定タブが展開されます。
それぞれ設定していきます。

  • Experiment Name
  • インプットデータのパス(S3)
  • 目的変数となるカラム名
  • 結果の出力先(S3)
  • 機械学習問題タイプ
  • experimentでどこまでやるか

設定して、Create Experimentをクリックすると設定完了です。

スクリーンショット 2019-12-14 14.00.43.png

早速、Autopilotが動き、データ解析が開始されます。
全部終了するまでまぁまぁ時間かかるので待ちます。

スクリーンショット 2019-12-14 15.56.57.png

すべて終了すると、作成されたモデル一覧が表示されます。
こうしてみると、相当な量な学習が行われていることがわかりますね。
左にスクロールしていくと、精度などの情報も見れます。

スクリーンショット 2019-12-14 16.03.03.png

この情報をもとに、学習モデルを選択しデプロイを行います。

スクリーンショット 2019-12-14 15.56.57のコピー.png
デプロイはここから行えます!!

デプロイされると、Amazon SageMakerのコンソールにてIn Serviceになっていることを確認できます

スクリーンショット 2019-12-14 17.25.09.png

まとめ

結果としてAmazon SageMakerでAmazon SageMaker Autopilotを使う記事になってしまいましたが、Amazon SageMaker Studioを使うことによりNotebookで行う方法よりも簡単に、そして可視化された状態で機械学習が行えるようになりました!
詳しい使い方はまだ追えていませんが、これからガシガシ使い込んで行こうと思います!!

参照

Amazon SageMaker
Amazon SageMaker Autopilotを使ってみた
Direct Marketing with Amazon SageMaker Autopilot

24
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
29