Blogical

AWS/Salesforceを中心に様々な情報を配信していきます(/・ω・)/

SageMakerについてまとめてみた

f:id:logicalarts:20191018170934p:plain
AWS pop-up loft Osaka
こんにちは、ロジカルアーツの井川です。

先日、AWS pop-up loft Osakaで開かれた「ML Hans-On」に行ってきました! 講師はAWS Startup Solution Architect の針原さんです。

正直、機械学習については全然詳しくないのですが、凝縮した3時間を過ごすことが出来たので、復習のためにもSageMakerについてまとめてみたいと思います。

SageMakerとは?

Amazon SageMaker は、すべての開発者とデータサイエンティストに機械学習モデルの構築、トレーニング、デプロイ手段を提供します。Amazon SageMaker は、機械学習のワークフロー全体をカバーする完全マネージド型サービスです。データをラベル付けして準備し、アルゴリズムを選択して、モデルのトレーニングを行い、デプロイのための調整と最適化を行い、予測を行い、実行します。モデルをより少ない労力と費用で、本番稼働させることができます。

https://aws.amazon.com/jp/sagemaker/

機械学習を行うときに必要なワークフローを準備してくれるサービスのようですね。

どんなふうに使うのか?

巷では、機械学習やAI、IoTというのが賑わっていますが、皆さんは実際に使ったことがありますか?私は正直Workshopに参加するまできちんと使ったことがなかったです。機械学習の一般的なワークフローとともにSageMakerをどうやって使用するのか説明します。以下が機械学習の一般的なワークフローです。

f:id:logicalarts:20191021132651p:plain
機械学習の一般的なワークフロー - ML Workshopより拝借

SageMakerでは、 開発環境としてJupyter Notebook/Labが使えます。 Jupyter Notebookはセル毎に実行でき、必要な要件の確認を容易にします。JupyterLabはJupyter Notebookの後継の対話型開発環境(IDE)です。これらはただインスタンスタイプを選ぶだけ! そうすると、TensorFlow等のライブラリがすでに入っているビルド済みのコンテナイメージが用意されます。

  1. データ収集 - S3等のストレージよりデータを集めてくる。ちなみにCLISDKからだとaws s3 sync <source> <dest>で同期可能です

  2. クリーンアップ - SageMakerでは、MLアルゴリズムの選択と最適化を行う

  3. データ変換・ラベル付け - トレーニング環境の整備と運用によってメトリクスでソート、ベストなモデルを取得し、その時の実験環境を再現できる

  4. レーニング - トレーニングとパラメーターチューニングを行う。SageMakerでは高性能インスタンス 秒数単位 で使用でき、コストを抑えられる。また分散学習も簡単に出来る

  5. モデル評価 - 結果を評価する

  6. 本番環境へのデプロイ

  7. 推論・監視 - 本番環境での運用とスケーリング等を行う

SageMakerを使うメリット

機械学習を行うにあたって、選択肢はいくつかあるのかなと思います。例えばGoogleColaboratoryなども有名ですよね。そんな中で私が考えるSageMakerを使うことのメリットをまとめてみます。(AWSの回し者みたいですみません。)

1. 簡単にワークフローを準備することが出来る!

機械学習を全て自身でやるとなると、どうしても時間がかかってしまいますね。ローカルでやるにしてもGPUなど環境構築に手間もお金もかかってしまいます。。

2. AWS スポットインスタンスを使うことが出来る!

上に書いたようにお金がかかることが、機械学習を始めることのハードルをあげていると思いますが、スポットインスタンスを使うと、最大90%OFFでインスタンスを使うことができるのです!

3. 運用するためのテンプレートが豊富

環境構築後、どうしたらいいのか分からないっていう初心者の方でも勉強できるようgitにたくさんテンプレートが上がっていたりします。

関連用語のご紹介

一般的な機械学習における関連用語や、SageMakerでの用語をちょっとご紹介します。

ノートブックインスタンスとは?

Jupyter Notebook/Labの環境として用意されるComputingサービスです。概念はEC2インスタンスと同じで、機械学習に適したインスタンスタイプを選ぶことができます。

Jupyter Notebookとは?

もともとはPython用として使われていたプログラムや文章、実行結果などをまとめて管理できるデータ分析ツールです。 設定さえすれば、現在はほかの言語でも使用できるようです。

オープンソースで使われているのですが、SageMakerではJupyter Notebook/Labを開発環境として用意してあります。

学習とは?

大量のデータを収集した後に、データの特徴を基に組み合わせパターンを作成するプロセスのことです。 例えば、ECサイトの顧客リストをベースに、典型的な顧客の特徴の組み合わせパターン(=推論モデル)を作ることができます。

学習方式には、ある顧客とそれを説明する情報の組み合わせを学習データとして使う「教師あり学習」と、学習データだけを与える「教師なし学習」などがあります。

推論とは?

推論は、対象となるデータを推論モデルにあてはめて、結果まで辿り着くまでのプロセスのことです。

バッチ変換とは?

SageMakerにある機能の一種で、データを変換して推論を生成するための高性能で高スループットの方法です。

下記のようなシナリオに最適です。

  • 大量のデータを処理するシナリオ
  • 1秒未満の待機時間を必要としないシナリオ
  • レーニングデータの前処理と変換の両方が必要なシナリオ

SageMakerの料金

機械学習のサービスって高そうなイメージでしたが、SageMakerには無料枠もあるので、お試しでやるにはそんなに構えなくても良さそうです。 ※研究開発や事業サービスとして利用する場合には、十分な検討を行ってください。

なぜならSageMakerには無料利用枠があるようです。

無料利用枠

  • サインアップ後、最初の2か月間が対象
  • モデル構築のためのノートブック利用にt2.mediumまたはt3.mediumインスタンスを250時間/月
  • レーニングにm4.xlargeまたはm5.xlargeインスタンスを50時間/月
  • リアルタイム推論とバッチ変換用機械学習モデルのデプロイにm4.xlargeまたはm5.xlargeインスタンスを追加で125時間

これだけあれば、お試しで使う分には無料利用枠内に収まると思います。私が今回のハンズオンで行った時は発生しなかったです。

詳細を知りたい方はこちらの公式ページへどうぞ。

まとめ

機械学習は、私たち人の代わりに様々な要素から処理を行ってくれます。そのため、データや機能も複雑になりやすいです。アルゴリズムも多様にある中で、経験と知見をもとに組み合わせることが高精度な結果を生み出すカギとなるようです。面倒な環境構築ワークフローを簡略することで、最も集中すべき推論などの作業に集中することができそうですね!

参考サイト

Amazon SageMaker(機械学習モデルを大規模に構築、トレーニング、デプロイ)| AWS

コレ1枚で分かる「『学習』と『推論』――機械学習の2つのプロセス」 - ITmedia エンタープライズ

料金 - Amazon SageMaker | AWS

Amazon SageMaker Adds Batch Transform Feature and Pipe Input Mode for TensorFlow Containers | AWS News Blog

jupyter Notebookの紹介 - Qiita

データ分析の必需品「Jupyter Notebook」の魅力とは - DeepAge