概要
最近、事業部内で行っている勉強会にて機械学習を学ぶ機会があり、機械学習の分野に興味を持ったため、本記事を執筆しました。記事では機械学習モデルを構築・デプロイできるサービスであるAmazon SageMakerを使用しています。
中でも、今回はAmazon SageMakerの一機能であるSageMaker Canvasという機能を使用し、ハンズオンを通して簡単な学習モデルを構築してみました。
前提知識の整理
少し話が横道に外れてしまうかもしれませんが、機械学習初学者ということもあったので、
今回使用するAmazon SageMakerや、機械学習にまつわる重要な用語について整理してみました。
Amazon SageMaker関連
Amazon SageMaker
AWS公式による説明は下記の通りです。
Amazon SageMaker は、あらゆるユースケースで高性能で低コストの機械学習 (ML) を実現する幅広いツールを統合した完全マネージド型サービスです。SageMaker では、ノートブック、デバッガー、プロファイラー、パイプライン、MLOps などのツールを使用して、ML モデルを大規模に構築、トレーニング、デプロイできます。しかも、すべてを 1 つの統合開発環境 (IDE) で行えます。
要するに、機械学習モデルを簡単に構築、トレーニング、デプロイできるサービスということができます。
一般的に機械学習を始める際、2つのコストがかかると言われています。① 環境構築コスト(リソースを準備するのに苦労する)
② 機械学習の学習コスト
Amazon SageMakerを使用することで、これらを大幅に減らすことが可能となります。
Amazon SageMaker Canvas
ノーコードで機械学習モデルをデプロイできるSageMakerの一機能
Amazon Bedrockや、Amazon SageMaker Jumpstartで使用できる基盤モデルも使用可能。
ノーコードでモデルをビルド・デプロイできるのはなかなか優秀ですね。
機械学習関連
基盤モデル
- 膨大なデータセットに基づいてトレーニングされた深層学習ニューラルネットワークのこと
※ニューラルネットワーク:人間の脳の働きを模した方法でデータを処理するようにコンピュータに教える人工知能の一手法
「基盤モデル」という言葉自体は、言語の理解、テキスト・画像の生成といったタスクを実行できる機械学習モデルを表すために研究者によって考案された用語だそうです。
OpenAIのGPT、AmazonのAmazon Titan、AnthropicのClaude、Stability AIのStable Diffusionなどがその例です。
ちなみにAmazon SageMakerで利用できる基盤モデルについては、こちらに記載がありますのでご参照ください。
ファインチューニング
基盤モデルに対して追加データを投入することで再学習を行わせ、特定のタスクに対するパフォーマンスが向上するようにしたもの
RAG(Retrieval-Augmented Generation:検索拡張生成 )
基盤モデルに対して、外部からの取得データを投入し、回答を生成させるようにしたもの
前述のファインチューニングとよく対比されますが、別の意味となります。
ファインチューニングとRAGの違いを図で整理してみました。
AI Package Tracker hands-on labでのハンズオン
ここからが本題です。
今回はSageMaker Canvasを手軽に試すことができる、AI Package Tracker hands-on lab というハンズオンラボでのハンズオンを通して、「『どの要因が、荷物の配送状況に影響を与えるのか』を分析、予測するモデル」を作成したいと思います。
ざっくりとした全体像はこんな感じです。
ハンズオン実施手順
【AI Package Tracker hands-on labの初期画面】
初期画面から、Start free lab
ボタンを押下すると、リソースのセットアップが始まり、ラボが開始されます。
リソースが作成完了すると、Open AWS Console
というボタンが出てくるので、押下します。
下記手順は、リソースのセットアップが完了してからの手順を記載しています。
(⓪SageMakerドメインの作成)
SageMakerの利用には、SageMakerドメインというものを作成する必要があります。
しかし、今回のラボでは既にドメインを作成されている状態なので、特に対応の必要はありません。実際にご自身でSageMaker Canvasを利用する際にはドメインの作成は行ってください。
① SageMaker Canvas アプリケーションの起動
AWSコンソールにアクセスし、SageMakerのページに移動します。
レフトバーで、Canvasを選択すると上記画面になるので、Canvasを開く
を押下します。
すると、SageMaker Canvas アプリケーションの起動が始まります。(起動には5分くらいかかると思います)
【起動中の画面】
アプリケーションの起動が完了すると、下記のような画面になります。(5分くらいかかります。)
これで、Canvasを起動させることができました。
② データのインポート
モデルを作成するためのデータをインポートし、データセットを作成するフェーズです。
今回のハンズオンでは、事前にAWS側で用意されているデータを使用することになるのでデータをインポートします。
インポートするcsvデータは2種類あります。(説明については下記参照)
- On-time-delevery-data.csv
- zipcodeと、配送が遅延しているかが記載されているcsvデータ
- ハンズオンの最初でインポートすることになるが、正確性が足りない(分析するには要素が足りない)ため、最終的な分析では後述のOn-time-delivery-data_extended.csvを使用することになる
- 本記事ではこちらのデータを使用した部分については触れません🙇
- On-time-delivery-data_extended.csv
- On-time-delevery-data.csvに新たなデータ(配達の量、気象データ【最高気温、最低気温、気圧、風速など】)を追加したcsvデータ
- On-time-delevery-data.csv内の要素では遅延の要因を分析するには不完全なので、ハンズオンの途中からこちらのデータを使用
- On-time-delevery-data.csvに新たなデータ(配達の量、気象データ【最高気温、最低気温、気圧、風速など】)を追加したcsvデータ
S3からデータをインポートします。
画面左の、メニューバーの5つ目の「DataWrangler」を選択します。DataWranglerセクションの中で、Datasets タブを開き、Create>Tabularを選択すると、データセットのインポート元を聞かれるので、canvas-lab-data-us-east-1
と名前が付いているバケットを指定すると、前述の二つのファイルが格納されているのでインポートします。
③ビルド
インポートしたデータを使って学習モデルを実際に構築するフェーズです。
とは言っても、こちら側が何か難しい操作をする必要はありません。
事前準備として、モデルを作成します。メニューバーの5つ目の「DataWrangler」において、インポートしたデータセットを選択し、Create a model
というボタンを押下します。
Model name(モデルの名前)はハンズオンの指示通りにしましたが名前は何でもいいと思います。Problem type を Predictive analysisにして、Createを押下します。
その後、画面左の、メニューバーの3つ目の「My models」を選択します。
今回は、ある条件下における荷物の配送状況(ontimeか、delayedか)を知りたいので、まずは下記画面の左上に表示されている、Select a column to predictというタイトルの、Target column
の部分にて、classification_ontime
を選択します。
次に、モデルの正確性を確認してみます。Preview model
というボタンを押下すると、画面右側のPreview modelというタイトルの箇所で、モデルが構築される前に、そのモデルの正確性を知ることができます。
今回の場合だと83.389%なので割と高めです。
問題なければBuild
ボタンを押下し、モデルを構築します。
ビルドの方式には2種類あり、Quick Build
(2-3分で終わるもの)というすぐ結果を得たい人向けのものと、Standard Build
(やや時間がかかる)という、正確な結果を得たい人向けのものがあるようです。
ハンズオンでは、Standard Build
でビルドを行う場面がありましたが、その際は15分くらいで完了しました。
④分析(Analyze)
構築されたモデルによるデータの分析が行われるフェーズです。
ビルドが完了したのち、Analyze
タブを押下すると、分析結果が表示されます。
分析画面で、どの要因がどの程度、配送の状況に影響を与えるのかを知ることができます。
また、分析がどのくらい正確なのかは、画面左上のAccuracyという部分で確認することができます。
⑤予測(Predict)
分析結果を使って、特定の条件下での予測を行うフェーズです。
特定の条件下で、配送が遅延するのかどうか、どの要因が影響を与えるのかを確認することができます。
予測の種類にはBatch prediction
と、Single prediction
の2種類がありますが、
今回はSingle prediction
を選択します。
画面左部でパラメータを変更してみて、右側で予測結果を確認する、という使い方になります。画面左部のFeature importance
の部分では、予測結果に与える寄与度(例:どれだけ配送遅れに影響を与えている要因なのか)を知ることができます。
試しに、parameterを変更してみましょう。(Valueの値を変えることで変更ができます)
Update total_items value to 525, then temperature to -5.5 and max_temperature to -2. Scroll down to see the rest of the features and update the temperature_at_1500m value to -7, min_temperature to -6.5, and dew_point_temperature to -8.
ハンズオンラボでの指示通りに、値を変更してみた結果が下記です。
設定値から判断して、めちゃめちゃ寒そうな条件なので、おそらく雪が降っている?→交通状況悪い→配送が遅れる(Delayedになる)のが自然な予想ですかね、、🤔
予想通り、モデルによる予測結果はDelayed(遅延)になりましたね。
また、Feature importance の値がとりわけ高い、total_items(配送個数?)・tempereture(気温)・pressure(気圧)が配送遅れに影響を与えていることが理解できます。
補足 Batch prediction
と、Single prediction
について
Batch prediction
と、Single prediction
について、違いが気になったので軽く調べてみました。
Single prediction
(単一予測)
1 つのデータポイントについて予測を行う場合に使用する。
★使い所→リアルタイムの予測を行ったり、個々の値を変更して予測結果にどのような影響があるかを確認したい時
Batch prediction
(バッチ予測)
データセット全体に対して予測を行う場合に使用する。
大量のデータを集めて、一括でモデルに入力し、予測結果を出力することになる。
★使い所→リアルタイム性が重視されないケース
感想
- 機械学習の深い知識がなくても簡単にGUI上でモデルを作成し、分析ができるのは便利
- とはいえ、多少は統計の基礎の部分の知識の理解は必要な気がしましたし、知っていればよりもっと使いこなせそうだなと感じました。
- ハンズオンラボについては、「とりあえず軽く触ってみたい」人にはお勧めできる
- 環境構築不要なのはありがたかったです。
- 手順書や、説明動画はありますが、全て英語なのでそこは頑張りどころです、、
- 機械学習はあくまでも課題解決の手段にすぎない
- 今回、簡単に機械学習モデルが構築できることは分かりましたが、だからこそ、「機械学習を使ってどんな分析をしたいのか」を明確にすることが重要であると感じました。
参考文献
AWS SageMaker Canvas
https://aws.amazon.com/jp/sagemaker/canvas/
大規模言語モデル (LLM) 入門 | AWS AI Week for Developers
AWS Builders Online Series ノーコードではじめる機械学習 Amazon SageMaker Canvas の 使いどころ
https://pages.awscloud.com/rs/112-TZM-766/images/BOS18_T2-1_AWS-Builders-Online-Series_2023-Q1_Presentation-Deck.pdf
単一予測を行う
https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/canvas-make-predictions-single.html
バッチ予測を行う
https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/canvas-make-predictions-batch.html
RAG vs Finetuning — Which Is the Best Tool to Boost Your LLM Application?
https://towardsdatascience.com/rag-vs-finetuning-which-is-the-best-tool-to-boost-your-llm-application-94654b1eaba7
基盤モデルとは何ですか?
https://aws.amazon.com/jp/what-is/foundation-models/