いつどこで課金が発生してる?Amazon SageMakerの動きと料金体系をセットで考える

こんにちは、小澤です。

Amazon SageMaker(以下SageMaker)は「何ができるの?」と聞かれて一言で答えるのが難しいくらい、様々な機能が存在してます。 「機械学習をするために必要な仕組みが一通り揃ってる」と言えるかもしれませんが、 そもそも機械学習をするのにどんな要素が必要で、SageMakerの機能としてはどれが対応してるかの解説から始めると非常に長い話になってしまいます。

それとあわせて、どのタイミングで何が実行されるかもある程度分かっていないと当たりを付けるのが難しくなります。 そこで、今回は「Amazon SageMakerの料金」ページに記載されている項目と、それらがいつ何に使われるかをセットで見ていきたいと思います。

何を解説するか

冒頭でも既述したように、SageMakerの全ての機能を解説しようと思うと非常に多くの要素が絡みます。 そのため、料金ページに記載のある以下のコンポーネントを中心に解説します。

  • Studioノートブック
  • オンデマンドノートブックインスタンス
  • 処理
  • Data Wrangler
  • Feature Store
  • トレーニング
  • リアルタイム推論
  • バッチ変換

無料と記載されている以下のコンポーネントについては、個別に解説することはしませんが、簡単に後述します。

  • SageMaker Pipelines
  • SageMaker Autopilot
  • SageMaker Experiments
  • SageMaker Debugger
  • SageMaker Model Monitor
  • SageMaker Clarify
  • SageMaker JumpStart

以下に関しては、料金情報が別ページとなっているため今回の対象外とさせていただきます。

  • SageMaker Ground Truth
  • SageMaker Edge Manager

SageMakerの基本を改めて確認する

まずは、今回解説する要素の関連性を確認しておきましょう。

SageMakerの歴史は3つのコンポーネントから始まりました。 先ほどリストアップしたものとしては以下の3つです。

  • ノートブックインスタンス
  • トレーニング
  • リアルタイム推論

ノートブックインスタンスはJupyterを使った開発環境です。 この環境を使って機械学習に必要なプログラムを実装していくところがSageMaker利用のエントリーポイントとなってるわけです。

クラウドの特性を活かしてよりコンピューティングパワーが必要な学習処理の実行はハイスペックなインスタンスで実行可能かつ、 分散処理も実現できる形式として実装されています。

推論についても、本番環境で利用されることから常時リクエストを受け付けれる仕組みとして推論エンドポイントという形で実現されていました。

学習や推論については、あらかじめ用意されているコンテナイメージを使ってデプロイされる仕組みとなっており、 その中に必要な処理を記述したスクリプトが含まれているか、実行時に渡す仕組みとなっています。 また、SageMakerで利用可能なスクリプトを含むコンテナイメージを独自に作成して標準には含まれていないアルゴリズムを使った処理も実現可能になっています。

ノートブックインスタンスがSageMaker利用のエントリーポイントとなっていると解説しましたが、 これらの仕組みから学習や推論エンドポイントの作成はノートブックインスタンスからのみに限らず任意の環境から個別に実行可能です。 SageMakerを使ったプログラムを実装するために利用するSageMaker Python SDKもpipからインストール可能になっています。

これがSageMakerのベースとなる仕組みです。 この仕組みによって、EC2などを立てて環境を用意しなくても機械学習を行う環境がすぐに手に入るようになりました。

しかし、これらは機械学習のコアとなる部分ではありますが、実際に活用しようとなった際には検討しなければならない要素というは全体のほんの一握りにすぎません。

引用 : Hidden Technical Debt in Machine Learning Systems

これらの要素全体をカバーできるようにするために、SageMakerには様々なコンポーネントが追加されていきました。

そして、多くの要素が登場したことによって、それらを統合的に扱える仕組みも欲しくなります。 それがSageMaker Studioの役割となるわけです。

Studioを中心として、様々なコンポーネントが利用可能になりました。 その中で利用料金という観点で見たときにそれらはいくつかの種類に分けられます。

  • 実行時にそれ自体がインスタンスを立ち上げて処理を行うもの
  • 単独で機能するわけではなく他の要素との組み合わせてのみ使うもの

ここで挙げた要素のうち、前者が課金対象となっています。 これには、ノートブックインスタンス、学習、推論といった最初から存在している要素も含まれています。

後者は無料となっているものが該当します。 AutopilotやPipelinesのような他のコンポーネントを呼び出す仕組みが前提となっているものや、 Model MonitorやDebuggerなどの処理を動かす対象に付随する要素が含まれます。

課金が発生するタイミングと料金体系

全体的な話

SageMakerの料金体系を理解するうえで、ほぼ全体共通と認識しておくと整理しやすい点があります。

  • 課金対象となるのは利用者から立ち上がっていることが確認できるインスタンス
  • インスタンスタイプとサイズによって決まる時間課金

今回解説する範囲で唯一の例外はFeature Storeのみです。 SageMakerでは「ml」で始まるインスタンスを利用しますが2021年7月現在、時間あたりの料金は全てのコンポーネントで同じになっているようです。

続いて、個別の要素について見ていきます

ノートブック

ノートブックはStudioノートブックとノートブックインスタンスの2種類が存在します。 これら2つの違いについて、機能的な部分もありますが、とりあえずまずは動かす場所の違いと思っておいていただければいいでしょう。

ノートブックインスタンスは、単体で動くJupyter環境です。 インスタンスを複数作成すれば、それぞれが個別の環境として機能します。 インスタンスは起動した段階から停止するまでの間、課金が発生します。 インスタンスの起動・停止は明示的に行う必要があります。 また、ノートブックインスタンスではストレージも確保した容量分課金されます。

StudioノートブックはSageMaker Studio上で動かすための仕組みです。 SageMaker Studioではノートブック起動時にインスタンスおよびカーネルの起動が行われます。

SageMaker Studioで起動したインスタンスはStudio内のメニューから停止できます。

そのため、ノートブック関連は

  • ノートブックインスタンスとStudioノートの2種類がある
  • それぞれ存在を確認できる場所が異なる
  • 明示的に終了するまで課金が続く

となっています。

Data Wrangler

Data WranglerはGUIで操作する前処理の仕組みを提供するものです。 GUIで作成したものは .flow ファイルとして保存され、それをPythonスクリプトやノートブック形式に変換して利用します。

Data Wranglerに課金対象となる項目が2つあります。

  • Data Wranglerのフローを作成するためのもの
  • フローからコードへ変換するためのジョブ

フローを作成するためのインスタンスは、内容が記述されたflowファイルを開いた際に起動します。 Data WranglerはSageMaker Studio内からのみ利用可能なため、先ほどのStudioノートブックのインスタンス一覧と同じメニューから確認できます。 こちらも停止する際は、メニューから手動で行ってください。

コードへ変換するためのジョブは実行したタイミングで起動して、終わった段階で自動的に停止するインスタンスとなります。 そのため、こちらについては必要に応じて手動で停止するなどの操作は必要ありません。

ジョブ実行系

以下のコンポーネントはジョブを実行するものになります。

  • 処理
  • トレーニング
  • バッチ変換

これらは、実行されたことをトリガーとしてインスタンスが起動して、処理が完了すると停止する仕組みのものになっています。ジョブを実行したタイミングでインスタンスが作成され、処理が完了して結果をS3に保存したのち停止します。

また、トレーニングにはスポットインスタンスも利用できます。

これらのジョブの実行状況や結果の一覧などの情報は、マネジメントコンソールやAPIでのアクセスなどから確認できます。

リアルタイム推論

学習済みモデルを使って、推論エンドポイントを立ち上げた際に起動します。 推論エンドポイントはAPIアクセスによって他のシステムからリアルタイムにアクセスされる仕組みとして利用されるため、常時インスタンスが立ち上がった状態となります。

また、推論エンドポイントは複数のモデルを使ったA/Bテストやオートスケールの設定などによって利用するインスタンス数が増減することがあります。

そのため、明示的に停止しない限りは動き続ける仕組みとなっています。

推論エンドポイントの状況確認や停止については、マネジメントコンソールやAPIでのアクセスなどから確認できます。

Feature Store

Feature Storeはこれまでの他のコンポーネントと異なり、インスタンスを起動して利用するものではありません。 オンラインストアとオフラインストアが存在し、オンラインストアの場合は内部でデータを保持しています。

他のストレージ系サービスと同様、以下の要素に対する課金が発生します。

  • ストレージ利用量に応じた課金
  • データの読み込みや書き込みによる課金
  • データのネットワーク転送による課金

また、オフラインストアを活用する場合は、S3にデータが保存され、AthenaテーブルとGlueのデータカタログも併せて作成されるため、そちらの料金も考慮する必要があります。

その他の課金

SageMakerは全体として利用するデータがS3にあることが前提となります。 そのため、保存先としてのS3の料金はほぼ必須となります。

また、他のサービスと連携して利用する場合はそちらでも課金が発生します。

おわりに

今回は、SageMakerの料金ページをベースに記載されている課金がどのタイミングで発生するかを解説しました。

SageMakerはコンポーネントも多く、機械学習に関する知識がある程度ないとそれらをどのように活用するのか理解するのが難しいケースがあります。 また、機械学習はその性質上、ハイスペックのインスタンスが必要な場面も多くあるため、どこで何が動いているか意識するさいの参考にしていただければと思います。