はじめに
最近、機械学習基盤の構築で SageMaker を使うことが増えてきたものの、これは単一のサービス名ではなくて、中にいろんな機能群があるため、その整理や用いる際における実務よりな注意点を整理する。
なお、今回の記事の目的は概要整理レベルなので、コード例などの詳細は割愛。
触り始めるときの判断材料になることを意識してまとめています。
0.料金の参考リンク
まず、料金周りが一番ややこしいので、公式ページを貼っておきます
大雑把にまとめると以下です。余計なものを立ち上げなければお金はかからないので、そこに注意してサービスを眺めるのは無邪気にチャレンジしてもOK
・全体GUIにあたるStudioは無料
・サーバはSageMakerに特化(インスタンス名にmlが入る)しており、オンデマンドインスタンスよりもわずかに高い
・EBS費用の無料枠はないので、作ると一律で課金
https://aws.amazon.com/jp/sagemaker/pricing/
1. SageMaker Studio
SageMakerを使うときの入り口になる Web ベースの IDE。ノートブックだけでなく、Pipelines や Model Monitor などの他サービスも Studio 上から操作できるようになっている。
-
料金: Studio自体は無料。
課金されるのは、起動するコンピュートインスタンスとストレージ(EBSなど) -
使いどころ:
・実験段階でのノートブック開発
・MLOpsワークフローの管理・可視化 -
補足:Studioドメインを作成しただけでは課金されないが、インスタンス起動中はしっかり課金されるため、インスタンスの停止を忘れると、知らないうちにコストが跳ね上がるので要注意
2. SageMaker Pipelines
機械学習の前処理〜学習〜デプロイまでの一連の流れを コードで定義・自動化できるパイプライン機能。
Python SDK(sagemaker.workflow)を使って各ステップを定義でき、Studio上から可視化・管理できる点が強み。
-
料金: パイプライン自体は無料。各ステップで使用されるインスタンスに課金される。
-
使いどころ:
・再現性のあるMLパイプラインを構築したいとき
・MLタスク向けの抽象化(TrainingStep, ModelStepなど)があるので記述が楽
・SageMaker内の他サービス(Feature Store, Model Registry, Monitorなど)と連携がしやすい
・Studio上で完結するMLOps環境を作りたいとき
3.SageMaker Data Wrangler
GUIベースでS3やRedshiftなどのデータを前処理・結合・可視化できるノーコード系ツール。
データ処理フローを作って、それをスクリプトやProcessing Jobとして出力できる。
-
料金: インスタンス起動時間 + データ処理ジョブ実行時間に課金される。
-
使いどころ:
・ノートブックを書かずに前処理を済ませたいとき
・非エンジニアも含めてデータ探索・加工を素早く回したいとき -
補足:
・GUI操作で完結するが、裏でインスタンスが動いているため停止を忘れずに
・処理フローは .flow ファイルとして保存・再利用可能
4. SageMaker Inference Recommender
モデル推論用に適したインスタンスを、自動的にベンチマークして提案してくれる機能。
スループットやレイテンシの制約を設定しておくと、それに合う構成を選んでくれる。
-
料金: Recommender自体は無料。ベンチマークに使われるインスタンスは課金対象。
-
使いどころ:
・本番環境のエンドポイント設計時に、最適なインスタンス選定をしたいとき
・想定コストを試算したいとき
5.SageMaker Serverless Inference
インスタンスを常時起動しておかなくても、リクエストが来たときだけ動作する推論エンドポイント。いわゆる「推論版Lambda」的な使い方ができる。
-
料金: 推論処理時間 + 同時実行数 + 転送量に応じて課金
-
使いどころ:
・推論頻度が低いユースケース(例:夜間バッチ)
・サーバーレスアーキテクチャと統合したいとき(EventBridgeなど)
6. SageMaker Feature Store
ML用の特徴量をオンライン/オフラインで一元管理できる専用ストア。特徴量の再利用性や一貫性を保つことができる。
-
料金: ストレージ + リクエスト数に応じて課金
-
使いどころ:
・学習時と推論時で同じ特徴量を使いたいとき(再現性の担保)
・複数のモデルで共通の特徴量セットを使い回したいとき
7. SageMaker Processing
バッチ形式での前処理・評価処理などを、独立したジョブとしてスクリプト+コンテナベースで実行できる。ノートブックよりも運用向きの処理手段。
-
料金: インスタンスの種類と実行時間に応じて課金
-
使いどころ:
・画像の一括リサイズや、学習済みモデルのバッチ評価など
・データセットの前処理を定期的に回すとき -
補足:入出力は基本的にS3。スクリプトやDockerを準備して定義すれば再利用性が高い
8. SageMaker Debugger
学習中の勾配・損失・重みの変化などをリアルタイムで取得・可視化できる機能。過学習や学習の停滞を検知して自動停止も可能。
-
料金: Debugger自体は無料。実行中の学習ジョブに対しては通常の課金
-
使いどころ:
・高コストな長時間学習を早期に中断・修正したいとき
・学習挙動を分析してモデル改善したいとき -
補足:PyTorchやTensorFlowなど主要フレームワークにはHookを入れるだけで対応可能
-
- SageMaker Model Monitor
本番デプロイ済みモデルに対して、入力データの分布や出力結果の異常(ドリフト)を定期的に検出できる機能。
- SageMaker Model Monitor
-
料金: Monitoring Jobで使用されるインスタンス分に課金
-
使いどころ:
・本番運用中のモデルの精度劣化検知 -
補足:ベースライン作成は自動でもできるが、チューニングが必要なケースも多い