🤖

AWS re:Invent 2021で発表された SageMaker Canvasを触ってみた with LINE #ノーコード

2021/12/09に公開

こんにちは、もっちゃんと申します。

この記事はAWS Advent Calendar 2021 15日目の記事でもあります。
https://qiita.com/advent-calendar/2021/aws

また、下記のイベントにてLTでSageMaker Canvasの話をさせていただく予定です!是非ご参加ください!
https://jawsug-bgnr.connpass.com/event/232787/

今年のre:Invent 2021も多くの新しいサービスが発表されましたね。その中で今回は Database, Analytics, and Machine Learning Keynote で発表された、ノーコードで機械学習のモデルが作れる新サービス SageMaker Canvasがどのようなものか見ていこうと思います。

SageMaker Canvasとは

SageMaker Canvas leverages the same technology as Amazon SageMaker to automatically clean and combine your data, create hundreds of models under the hood, select the best performing one, and generate new individual or batch predictions. It supports multiple problem types such as binary classification, multi-class classification, numerical regression, and time series forecasting. These problem types let you address business-critical use cases, such as fraud detection, churn reduction, and inventory optimization, without writing a single line of code.
SageMaker Canvasは、Amazon SageMakerと同じ技術を利用して、データのクリーンアップと結合を自動的に行い、ボンネット内で数百のモデルを作成し、最もパフォーマンスの高いモデルを選択して、新しい個別またはバッチの予測を生成します。また、バイナリ分類、マルチクラス分類、数値回帰、時系列予測など、複数の問題タイプをサポートしています。これらの問題タイプにより、コードを1行も書くことなく、不正行為の検知、解約の抑制、在庫の最適化など、ビジネスに不可欠なユースケースに対応することができます。

日本リージョンにはまだきていませんが US East (Ohio), US East (N. Virginia), US West (Oregon), Europe (Frankfurt), Europe (Ireland) のリージョンで使用可能です。

機能

現時点では下記の機能があり、全てノーコードでSageMaker Canvasの画面上で使えます。

・トレーニング用のデータセットの管理

トレーニングに使用するデータセットの管理ができ、データのインポートもローカルファイルのアップロードから、外部データソース(S3、Redshift、Snowflakeなど)の接続と柔軟に対応しています。

また、SageMaker Canvas上でデータソースのデータ同士を結合することも可能です。

12/26追記 ローカルからデータファイルにあげるには?

ローカルからデータをアップロードするには設定が必要です。こちらの公式ドキュメントを参考に設定を行ってください。)

まずは対象のS3バケットにアクセスして

[アクセス許可] > [Cross-Origin Resource Sharing (CORS)] の設定で下記のように設定を行います。

すると、下記のようにローカルからアップできるようにSageMaker Canvas 側のUIが変わったと思います!

・機械学習モデルの構築

予測を行うにあたってのターゲット列、そしてモデルのタイプ(分類、回帰、時系列予測)を選択してモデルのトレーニングを簡単に実施できます。

また、トレーニングを開始する前にモデルのプレビューを事前に見ることもできます。

・機械学習モデルの評価

トレーニング後はモデルの評価情報を得ることができます。 モデルの精度がわかる基本的なメトリクスから、各特徴量が予測に与える影響度まで確認することが可能です。

・モデルを使った予測の実行

作成した機械学習のモデルをSageMaker Canvas上で実行することができます。予測したいデータを渡して予測を行うバッチでの予測と画面上でデータを指定して予測させる単一の予測が提供されています。

価格

課金は現時点ではSagemaker Canvasを使った時間と、モデル作成のトレーニング時に発生するようです。

下記のように2ヶ月の無料利用枠期間も提供されています。(セッション:750 hours/month、トレーニング:1M cells/model)

SageMaker Canvasを実際に使ってみる

まずはSageMaker Canvasの画面にアクセスします。日本リージョンにはまだ来ていないので、今回はバージニア北部のリージョンで試していきます。

1.事前準備

まず最初にドメインの設定とユーザの作成を行います。この辺りは公式のドキュメントも参考にしていただいて作業を進めていただければと思います。

(ちなみに、ユーザ名はわかりやすい名前をつけた方が良いと思います!w)

2.SageMaker Canvas画面にログイン

ユーザ情報のところからアプリケーションを起動 → Canvasを選択して起動します。

すると、準備中の画面が表示され...

しばらくすると初期画面が表示されて、ここからいよいよSageMaker Canvasを触っていきます。

3.データセットをインポートして管理する

サイドメニューからDatasetsImportの順に進めていきます。

Import画面が出てきましたね。ここでデータをインポートするのですが、デフォルトの状態ですとS3からのインポートのみに対応している状態です(ローカルからのインポートは別途設定が必要です)。ということで先にS3にデータファイルを置いておいてCanvas画面上で改めてインポートします。(今回はタイタニック号のデータを使っています)

ちなみに簡易的なデータセットの閲覧や

データセットの結合を行うことも可能です。

4.機械学習モデルのトレーニングを行う

データセットが用意できたので次は機械学習モデルの構築を行うべく、トレーニングを実施していきます。
まずは先ほど用意したデータセットを選択しましょう。

そして、次に予測したいターゲットの列を選択します。ここではタイタニック号の乗船客の生還情報を予測するためSurvived列を選択しています。

モデルのタイプもいくつか選択でき、今回は生還する生還しないの二値分類なので、2 category modelを選択します。

トレーニングを実施する前にプレビューを見て感触を確かめておくのが良いでしょう。トレーニングを実施するとお金が発生しますから!

ちなみに実は1回トレーニングに失敗していまして詳細はこちらを展開してご覧ください。

ちなみに1回トレーニングに失敗しています。どうやら欠損値があるとダメなようで、今回も別で欠損値を処置したデータセットで改めてトレーニングに挑んでいます。ただ、前処理を全くしてくれていないわけではなさそうで、タイタニック号のデータも欠損値以外のところはそのまま使ってるのですが特にエラーなどになっていません。ある程度自動で前処理を実施していると思われます。

もろもろの確認が終わったら、トレーニングスタート!ということでおもむろにstandard buildボタンを押します!後は勝手にトレーニングを実施してくれます、簡単ですね!

5.機械学習モデルの評価を行う

トレーニングが終わったら作成した機械学習モデルのチェックをしていきますよ。

まずは各特徴量が予測に与える影響度が下記のように表示されています。左側の情報を見ると性別Pclassが予測に大きな影響をあたえてそうですね。右側の情報をみると女性だと生還しやすい予測結果が出そうな感じがしますね。

次にScoringの情報を見ていくとテストデータでのモデルの評価結果を確認することができます。(ここのスコアで使用しているデータ量をみると今回選択したデータセットは8:2 トレーニングデータ:テストデータぐらいの割合で実施してそうですかね。)

ちなみにモデルの評価は、分類や回帰といった手法ごとに評価指標が異なります。

6.予測を行う

それでは実際に機械学習のモデルを使って予測を行ってみましょう!
SageMaker Canvas上では2種類(Batch prediction, Single prediction)の方法が用意されています。

Batch prediction

一括で複数のデータに対して予測を行うことができます。(トレーニングデータと同じ列になっている必要があります。)

Single prediction

画面上で値を指定して予測結果を見ることができます。

↑ここではいったん私のデータを入れてみています。ちょっと残念な予測結果が返ってきていますね...生還できないようで...

SageMaker Studioと連携してみる

まだまだ終わりません。SageMaker CanvasではSageMaker Studioと連携する機能がついています。
表示されたCopy linkのURLにアクセスすると...

下記のようにSageMaker Studioが開き、SageMaker Canvasで作成した機械学習モデルに伴う情報が共有されています。

こちらを展開してご覧ください。

モデルをデプロイする

せっかくSageMaker Studioと連携したので、モデルのデプロイまで試しにやってしまいましょう。
必要な情報を入力して、Deploy modelを押してモデルをデプロイします。

しばらくすると、下記のようにモデルがデプロイされてエンドポイントが作成されると思います。

こちらを展開してご覧ください。

モデルのデプロイ後、Notebook上でモデルを使ってみました。
すると見事にエンドポイントをかいしてオンラインで予測結果が返ってきていますね!🎉

アプリにSageMaker Canvasで作った機械学習のモデルを組み込んでみる

機械学習モデルの作成からデプロイまで一通り完了したので、このまま終わっても良いのですが、やはりモデルを使うにあたって不便な感じが否めないですね💦

そうです、やっぱりアプリ化しないと使いにくい...そこで今回はLINEのBotを活用してアプリケーションの形にしてみました。(そして自分のデータを入力して予測結果がどうなるか確認していますw)

(参考)簡易な構成図

  • 私が生還するかどうか予測結果...(生還できない...)

  • 妻の場合(生還できる!良かったε-(´∀`*)ホッ)

雑なコードは下記に置いておりますのでもしよろしければお使いください。

https://github.com/mochan-tk/sagemaker-canvas-titanic-line-bot

LINEのBotに関係する設定は下記を参考にしてみてください。

ちなみに、LINEのBotは簡単にユーザが触れる媒体(アプリ)を作れるので、めっちゃ便利です!

まとめ

正直最初は、データセットの結合機能の画像キャプチャーを見て、ブロックプログラミングのような形式で機械学習モデルを構築できるサービスかと思っていました。実際にはAutoML系でしたね!

予測に対する特徴量の重要度などの情報も当たり前のように表示しており、ブラックボックスになりがちな機械学習モデルの内容把握の点もないがしろにされていない点に、今後の機械学習の民主化がさらに進む期待を感じました。

機械学習のブラックボックス化に対する、SageMakerの機能Clarifyについては下記の記事を参考にしてみてください。
https://zenn.dev/mochan_tk/articles/6dbf55f4122795

皆さんもSageMaker Canvasで気軽に機械学習試してみてください!(課金にはお気をつけて!)

参考

Discussion