Amazon SageMakerを理解する(1) SageMakerの概要 クラウドによる機械学習とデータレイク
2018/07/26
2018/07/26
クラウド推進事業部/オペレーションズ本部 シニア・マネジャーの青柳雅之と申します。私はAWSやAzure、GCPといった主要なパブリッククラウドを使用したIT Modernizationを担当しています。
クラウドの登場で、AIの活用が一段と注目されるようになっています。データの爆発的な増加とそれを分析・保存するための無尽蔵のコンピューティングリソースの利用がクラウドによって可能になりました。筆者は去年、SageMakerのトレーニングを受講する機会に恵まれました。今回から数回に分けて、AWSの機械学習のマネージドサービスであるAmazon SageMakerの解説を書きたいと思います。なお、SageMakerは6月に東京リージョンでもリリースされています。機械学習自体の詳細説明は多くのWebサイトや書籍にありますので、それらに譲ります。
機械学習は、AI(Artificial Intelligence)の重要な一部であり、いかにデータから特徴を抽出し、様々な予測タスクを実行するかという問題を取り扱います。機械学習には多種のアルゴリズムが存在し、多くの企業がこれらの機械学習のアルゴリズムをビジネスに取り入れています。
機械学習は人間が行う予測タスクの完全な代替にはならないとはいえ、予測のために必要な人間のタスクを軽減したり、人間では不可能な状況下で予測タスクを行う、もしくは予測のベースとなる対象データが膨大にある場合等に威力を発揮します。
機械学習を使ってビジネス価値を作り出すまでのプロセスは、データサイエンティストが行う作業のほか、インフラストラクチャー構築と展開も含めた複雑な作業を必要とします。SageMakerはこの中の、学習、推論を実施するためのインフラストラクチャー展開に関して大きな威力を発揮し、このプロセスの短縮に寄与します。
SageMakerのマネジメントコンソール
「学習」とは、大量のデータ(トレーニングデータ)から法則を見つけ出し、新規のデータが入力された際に、予測タスクである「推論」を行うためのトレーニングモデルを構築するプロセスです。例えば、金融機関における不正検知を機械学習で行う場合、各取引とそれらが不正かどうかの正解フラグを組み合わせたデータがある場合、そこからトレーニングモデルを構築することができます。トレーニングデータに正解フラグがある学習を「教師あり学習」と呼びます。また、「この文字の画像は数字の何に当たるだろうか」「この動物は犬だろうか、猫だろうか」という問題を考えるとします。ここにはトレーニングデータはなく、自動的にどのグループに属するかを見つけ出します。これを「教師なし学習」と呼びます。SageMakerでは「教師あり学習」、「教師なし学習」双方のアルゴリズムを、組み込みのアルゴリズムとして提供しています。
機械学習を利用したデータサイエンスのプロセスと関連する各ロールが担当する領域
一般的に、学習や推論のためのインフラを構築するタスクはデータサイエンティストではなく、インフラストラクチャー構築ロールが担当します。また、データの抽出や加工も複雑かつ大規模なものもインフラストラクチャー構築ロールが担当します。このように機械学習を利用したデータサイエンスのプロセスは複数の異なるロールが混在したものになります。SageMakerはマネージドサービスである利点を生かしてインフラストラクチャーを自動管理し、インフラストラクチャー構築ロールが受け持つべきタスクの多くを緩和します。なお、このロールやタスクの種類や境界は組織によって異なる想定です。
SageMakerのアーキテクチャー
①Jupyter Notebookの起動
データサイエンティストはSageMakerによって提供されるJupyter Notebook上で、データを加工するといった前処理をを行ったり、機械学習アルゴリズムを使って学習を行います。SageMakerのマネジメントコンソールでノートブックインスタンスを作成します。[アクション]で[オープン]を選択すると、Jupyterが起動します。
SageMakerのマネジメントコンソールでノートブックインスタンスを作成
Jupyter Notebookをオープン
学習のためのトレーニングデータはS3に保存します。データが大量に存在し、多くの整形、変換作業が必要な場合は、ETLツールを使用します。このような作業はデータサイエンティストではなく、インフラストラクチャー構築ロールが担当します。これはSageMakerを使用してもしなくても同じです。
➁トレーニングモデルの構築
データサイエンティストはJupyter Notebookを使用して、トレーニングモデルの構築を行います。機械学習のアルゴリズムであるトレーニングコードを含むDockerイメージをECR(Elastic Container Registry)から取り出しトレーニングを行い、結果として出力するトレーニングモデル(アーティファクト)をS3に保存します。トレーニングを行う際は(トレーニングジョブを実行)、SageMakerが提供するML(Machine Learning)インスタンスが起動され、そのうえでトレーニングコンテナが実行されます。
トレーニングジョブの設定画面①
トレーニングジョブの設定画面➁
③推論用コンテナとエンドポイントの提供
推論の機能をアプリケーションに提供する(デプロイ)ために、SageMakerは推論用のエンドポイントを提供します。この際に、デプロイのためにMLインスタンスが起動されます。モデル、つまり推論のためのコンテナを作成するために、S3に出力されたトレーニングモデル(アーティファクト)と、ECRに格納されている推論コード(Dockerイメージ)が読み込まれます。この推論コードのDockerイメージはトレーニングコードと同じもので構いません。高可用性のために、MLインスタンスは複数のアベイラビリティーゾーンに分散して配置することが可能です。この推論用エンドポイントによりアプリケーションとの連携も容易になります。
推論のためのモデルの設定画面
SageMakerがサポートする組み込みアルゴリズムの一覧(2018年6月時点)
AWSのデータレイク
Amazon SageMaker開発者ガイドの[開始方法]セクションでは、組み込みアルゴリズムであるK-Meansをアルゴリズムとして使用して学習モデルをトレーニングし、デプロイする手順が記載されています。この例では、MNIST(Mixed National Institute of Standards and Technology)という組織が提供している「0」から「9」までの手書き数字の画像のデータのセットを利用します。
このデータセットには、トレーニングデータとして60,000枚、検証データとして10,000枚の画像データが含まれています。
SageMakerはK-Meansを組み込みアルゴリズムの1つとして用意しています。K-Meansは「教師なし学習」であり、データの正解ラベル、つまり、その数字の画像が何を意味するか分からない状態で、同じ属性を持つデータをクラスタに分類するアルゴリズムです。このサンプルでは作成したモデルに対して推論と検証も行っています。
詳細な作業手順や解説はAmazon SageMaker開発者ガイドに記載されていますため、割愛します。 以下の例では、トレーニングモデル構築後、検証用のデータセットから、100個の画像の推論を取得しています。結果として返ってきたクラスタのうちのいくつかを紹介しますが、似たような形の数字の画像が分類されていますね。
途中、別のテーマでブログを書く可能性は高いですが、次回以降はより細かくSageMakerを見ていきたいと思います。
参考文献
● AWS Black Belt Online Seminar Amazon SageMaker
● Amazon SageMaker開発者ガイド
● AWS Glue と Amazon S3 を使用してデータレイクの基礎を構築する