前回は、AIサービスの全体像についてご説明しました。今回はMLサービスの全体像を見ていきたいと思います。
今回の目標は、下記を理解していただくことです。
- MLサービスで提供される機能とそれぞれの概要がわかる
- Amazon SageMakerの基本的な利用方法がわかる
MLサービスの全体像
MLサービスは、3つのレイヤーで提供される機械学習サービスの中位に位置するサービス(下図の赤枠内)です。
「Amazon SageMaker」を中心とする複数の機能の集合がMLサービスです。上図に記載されている通り、「機械学習のプロセス全体を効率化するマネージドサービス」として機能します。
MLスタック内に示された機能のうち、以下に示すサービスは昨年末に米国のラスベガスで開催された「AWS re:Invent 2019」で新たに発表された機能です(機能名にリンクがないものは、Amazon SageMakerの公式サイトに記載があります)。
- Amazon SageMakerStudio:Webブラウザベースの統合開発環境(IDE)
- Amazon SageMakerNotebooks:Amazon SageMakerStudioに統合された完全マネージドなノートブック
- Amazon SageMakerExperiments:学習ジョブの実行履歴や設定、結果を一元管理
- Amazon SageMakerDebugger:学習の監視、記録、分析と異常の検知
- Amazon SageMakerAutopilot:AutoML 機能による機械学習モデルの自動構築
- Amazon SageMakerModel Monitor:本番環境にデプロイした推論エンドポイントの継続的な監視
- Amazon Augmented AI (A2I) :信頼性の低い推論結果の人間の確認と修正
Amazon SageMakerは、登場時から機械学習ワークフローの全体に渡ってさまざまな機能が提供されてきました。その後も次々と機能追加されてきましたが、今回のアップデートでは、より一層機能が強化されて、さらに便利に使うことができるようになりました。
以降では、MLサービスの中心機能であるAmazon SageMakerの概要や基本的な使い方について見ていきます。
Amazon SageMakerの概要
Amazon SageMakerは、データサイエンティストや開発者向けのサービスであり、機械学習ワークフローの全体に渡って多数の機能が提供されています。マネージドサービスとして提供されており、差別化につながらない作業はAWSに任せて、利用者はビジネス価値の創出に全力を注ぐことができます。
機械学習ワークフローは、大きく「開発」「学習」「推論」の3段階に分けることができます。各工程で実施する主な作業は、以下の通りです。
◆開発
- 開発環境の準備を行う
- 機械学習アルゴリズムを選定し、学習や推論をするためのコードの開発を行う
◆学習
- 学習(機械学習モデルの構築)を行うための環境の準備を行う
- 開発した学習用コードを使って学習を行う
- ビジネス上の要件を満たす精度となるまで学習と評価を繰り返す
◆推論
- 推論(学習済の機械学習モデルを利用した予測) を行うための環境の準備を行う
- アプリなど外部からのリクエストを受け付けるための接続ポイント(推論エンドポイント、API)を作成する
- 機械学習モデルの精度や品質に関する継続的な監視を行う
機械学習モデルの開発における問題/課題
「開発」「学習」「推論」の各工程では、さまざまな問題/課題が発生します。そして、それらを解決するための労力の多くはビジネス上の価値を生みません。以下に、各工程で発生しがちな問題/課題の例をいくつか示します。
◆開発
- PCなどの開発環境の準備やコードの開発に必要なツール (Jupyter Notebookやフレームワークなど) のインストールや維持が必要である
- 上記に関して、データサイエンティストや開発者が複数いる場合は人数分の対応が必要である
◆学習
- 学習環境であるサーバの準備や必要なツール(フレームワークなど)のインストールや維持が必要である
- 分散学習などのテクニックやいくつかのバリエーションでの学習を行う場合は、複数のインスタンスの起動や停止などの操作や管理が必要である
- 学習のバリエーションが増えてくると、学習の設定値や精度の管理が大変になり、追跡できなくなる
◆推論
- 学習済みの機械学習モデルをデプロイして推論を行うためのサーバの準備が必要である
- 利用者のアプリとデプロイした機械学習モデルの接続ポイントとなるエンドポイントの構築が必要である
- リクエスト数の増減に応じて、サーバを増減させてサービスの品質を保つ必要がある
Amazon SageMakerで提供される機能
Amazon SageMakerでは上述した問題/課題を解決するためのさまざまな機能が提供されており、データサイエンティストや開発者は機械学習を利用したビジネス価値の創出に注力することができます。
以下に、代表的かつ基本的な機能について記載しますが、冒頭で紹介した新機能を含め、このほかにも多数の機能が提供されています。それらについては今後の連載で扱っていく予定ですが、いち早く知りたい方はAmazon SageMakerの開発者ガイドなどをご参照ください。
◆「開発」「学習」「推論」のための実行環境(インスタンス)を提供する
- 開発環境:ノートブックインスタンス
- 学習環境:学習用インスタンス
- 推論環境:推論用インスタンス
◆「開発」「学習」「推論」に必要なツールを提供する
- Jupyter Notebook/JupyterLab(ノートブックインスタンスにプリインストール)
- 人気の高い機械学習アルゴリズムや機械学習/深層学習フレームワークのコンテナイメージ
- Amazon SageMaker SDK(Software Developer Kit)、など
◆「開発」「学習」「推論」を便利に実行するための機能を提供する
- Amazon SageMaker SDKによる学習の実行や学習済の機械学習モデルのデプロイ/ホスティング
- 複数の学習用インスタンスでの分散学習
- 推論用エンドポイント
- 推論用インスタンスのオートスケーリング、など
◆ほかのAWSのサービスとのAPIによる連携機能を提供する
- Amazon S3
- Amazon ECR、など
Amazon SageMakerでは、利用者のニーズに応じてこれらの機能を選択して利用することができます。例えば、以下のような利用方法が可能です。
- 開発環境としてノートブックインスタンスのみを利用する
- ノートブックインスタンスで開発し、複数の学習用インスタンスで分散学習を行った後にオンプレミスの環境で推論を行う
Amazon SageMakerの基本的な使い方
ここからは、Amazon SageMakerの基本的な使い方について見ていきます。
説明の都合上、引き続き機械学習ワークフローを「開発」「学習」「推論」の3つに分けて進めます。これからAWSを使って機械学習を始めることを想定し、上記の3つの工程の全てをAmazon SageMakerを使って実現するケースを考えてみましょう。
登場するコンポーネントを押さえる
Amazon SageMakerを利用する上で、初学者がまず直面する”壁”は登場するコンポーネント(サービスや機能など)の多さではないでしょうか。似たような名前のものが多いのも、混乱を招きやすい一因です(実際に私自身がそうでした)。
そこで、以下にAmazon SageMakerを利用する上で最低限押さえるべきコンポーネントとそれぞれの役割をまとめました※。
コンポーネント名 | 役割 |
---|---|
Amazon S3 | 学習のインプットとなる学習データやアウトプットとなる機械学習モデルを格納に利用するオブジェクトストレージ |
Amazon ECR | Dockerコンテナイメージのレジストリ。 Amazon SageMakerでは、学習や推論に必要なコードやライブラリをDockerコンテナイメージとしてビルドしておき、学習用/推論用インスタンスでそれぞれDockerコンテナとして実行する。Amazon ECRでは、このDockerコンテナイメージを格納する |
ノートブックインスタンス | 学習や推論用のコードの開発を行うためのインスタンス。 Jupyter NotebookもしくはJupyterLabを利用して開発を行う。SDKを利用して、ここからから学習ジョブの起動や機械学習モデルのデプロイ/推論用エンドポイント(API) の作成を実施することができる |
学習用インスタンス | 学習用Dockerコンテナを稼働させるためのインスタンス。 学習ジョブの開始を契機に学習用インスタンスが自動で起動し、Amazon S3とAmazon ECRから学習データとコンテナイメージをそれぞれダウンロードして、学習用コンテナの起動を行う。 学習の完了後に、学習済の機械学習モデルをAmazon S3に格納し、自動で学習用インスタンスが削除されるため、余計なコストがかからない仕組みになっている |
推論用インスタンス | 推論用Dockerコンテナを稼働させるためのインスタンス。 デプロイ操作を契機に推論用インスタンスを起動し、Amazon S3とAmazon ECRから学習済の機械学習モデルと推論用コンテナイメージをダウンロードして、推論用コンテナの起動を行う。推論用エンドポイント(API)が作成され、これを経由してアプリなど外部からのリクエストを受け付けて推論結果を返す |
以下に、上記のコンポーネントを使った処理の流れを「開発」「学習」「推論」の工程ごとに示します。図中の番号と説明文を照らし合わせながら参照してください。
◆開発
- ノートブックインスタンスの作成を作成し、学習や推論用のコードを開発する
- Amazon S3に学習データを格納する
- 学習、推論用のコンテナイメージを作成して格納する
◆学習
- ノートブックインスタンスから学習ジョブを起動すると、学習用インスタンスが自動作成される
- Amazon ECRからコンテナイメージをダウンロードして、学習用コンテナを起動する
- Amazon S3から学習データをダウンロードして、学習を実行する
- 学習が完了したら、Amazon S3に学習済の機械学習モデルを格納して、学習用インスタンスを自動削除する
◆推論
- ノートブックインスタンスから推論用インスタンスの起動する
- Amazon ECR からコンテナイメージを、Amazon S3から機械学習モデルをダウンロードしてコンテナを起動する
- 推論エンドポイントを作成し、アプリやほかのAWSのサービスからアクセスする
* * *
以上、今回は、MLサービスおよびAmazon SageMakerの概要と利用方法について説明しました。次回は、実際にAmazon SageMakerを使って機械学習モデルを構築してみたいと思います。
※ 図中に使用しているAWSのアイコンは、Amazon Web Services社が提供している公式アイコンセットを使用しています。
著者紹介
菊地 貴彰 (KIKUCHI Takaaki) - NTTデータ システム技術本部 デジタル技術部
Agile Professional Center
大学・大学院では、機械学習を専攻。ベイズ的枠組みを用いて、複数の遺伝子のデータから遺伝子どうしの相互作用ネットワークの推定に関する研究を行った。
株式会社NTTデータに入社後は、法人や金融のシステム開発のシステム基盤担当としてキャリアを積み、現在はデジタル技術やAgile開発を専門に扱う組織でシステム開発全般を担当する。
2019, 2020 APN AWS Top Engineers, Japan APN Ambassador 2020に選出に選出。
本連載の内容に対するご意見・ご質問はtwitter: @kikuchitk7まで。