Skip to main content Skip to Footer

Blog - Cloud ComputingCommentary from our cloud experts around the globeBLOG アクセンチュア・ クラウド・ ダイアリーズ

July 26, 2018
Amazon SageMakerを理解する(1) SageMakerの概要 クラウドによる機械学習とデータレイク
By: 青柳 雅之

クラウド推進事業部/オペレーションズ本部 シニア・マネジャーの青柳雅之と申します。私はAWSやAzure、GCPといった主要なパブリッククラウドを使用したIT Modernizationを担当しています。

クラウドの登場で、AIの活用が一段と注目されるようになっています。データの爆発的な増加とそれを分析・保存するための無尽蔵のコンピューティングリソースの利用がクラウドによって可能になりました。筆者は去年、SageMakerのトレーニングを受講する機会に恵まれました。今回から数回に分けて、AWSの機械学習のマネージドサービスであるAmazon SageMakerの解説を書きたいと思います。なお、SageMakerは6月に東京リージョンでもリリースされています。機械学習自体の詳細説明は多くのWebサイトや書籍にありますので、それらに譲ります。


機械学習とは

機械学習は、AI(Artificial Intelligence)の重要な一部であり、いかにデータから特徴を抽出し、様々な予測タスクを実行するかという問題を取り扱います。機械学習には多種のアルゴリズムが存在し、多くの企業がこれらの機械学習のアルゴリズムをビジネスに取り入れています。

機械学習は人間が行う予測タスクの完全な代替にはならないとはいえ、予測のために必要な人間のタスクを軽減したり、人間では不可能な状況下で予測タスクを行う、もしくは予測のベースとなる対象データが膨大にある場合等に威力を発揮します。

  • 専門知識を持つ人間が不在
    火星の表面を走行するローバーは、危険な岩や穴を避けて自律走行します。また、ローバーは調査の対象として適していると思われる写真を撮影して地球に送信します。これは送信できるデータ量に限りがあるからです。現時点では火星に人間が行って同様の調査をするのは不可能なので、無人のローバーに人間と同様の活動をさせることになります。問い合わせユーザーに対して人間の代わりにChatbotに24時間応答をさせるのもこれに該当します。

  • 人間がその法則を説明できない
    金融機関における不正取引の検知は1件毎に人間が判断しては時間がかかりますし、そもそも明確な法則を見出すのが困難ではないでしょうか。機械学習は過去の膨大なデータ(どの取引が不正であるか不正でないかの結果が必要)のパターンから、新しい取引が不正かどうかを検知します。

  • 膨大なデータから推論してリアルタイムで対応する必要がある
    気候に応じたビニールハウスの温度調整はリアルタイムで対応が求められます。我々がSNSを見る際に表示される広告(パーソナライゼーション)や、検索サイトで上位にランキングされるページもリアルタイムに近い表示が求められます。人間がこれらの膨大なデータから何が必要かを予測して、リアルタイムで対応を実施するのは現実的ではありません。


Amazon SageMakerの概要

機械学習を使ってビジネス価値を作り出すまでのプロセスは、データサイエンティストが行う作業のほか、インフラストラクチャー構築と展開も含めた複雑な作業を必要とします。SageMakerはこの中の、学習、推論を実施するためのインフラストラクチャー展開に関して大きな威力を発揮し、このプロセスの短縮に寄与します。


SageMakerのマネジメントコンソール。Click to expand.
SageMakerのマネジメントコンソール

SageMakerのマネジメントコンソール


学習と推論

「学習」とは、大量のデータ(トレーニングデータ)から法則を見つけ出し、新規のデータが入力された際に、予測タスクである「推論」を行うためのトレーニングモデルを構築するプロセスです。例えば、金融機関における不正検知を機械学習で行う場合、各取引とそれらが不正かどうかの正解フラグを組み合わせたデータがある場合、そこからトレーニングモデルを構築することができます。トレーニングデータに正解フラグがある学習を「教師あり学習」と呼びます。また、「この文字の画像は数字の何に当たるだろうか」「この動物は犬だろうか、猫だろうか」という問題を考えるとします。ここにはトレーニングデータはなく、自動的にどのグループに属するかを見つけ出します。これを「教師なし学習」と呼びます。SageMakerでは「教師あり学習」、「教師なし学習」双方のアルゴリズムを、組み込みのアルゴリズムとして提供しています。

  • 機械学習を利用したデータサイエンスのプロセスに関連するロール


    機械学習を利用したデータサイエンスのプロセスと関連する各ロールが担当する領域。Click to expand.
    SageMakerのマネジメントコンソール

    機械学習を利用したデータサイエンスのプロセスと関連する各ロールが担当する領域


一般的に、学習や推論のためのインフラを構築するタスクはデータサイエンティストではなく、インフラストラクチャー構築ロールが担当します。また、データの抽出や加工も複雑かつ大規模なものもインフラストラクチャー構築ロールが担当します。このように機械学習を利用したデータサイエンスのプロセスは複数の異なるロールが混在したものになります。SageMakerはマネージドサービスである利点を生かしてインフラストラクチャーを自動管理し、インフラストラクチャー構築ロールが受け持つべきタスクの多くを緩和します。なお、このロールやタスクの種類や境界は組織によって異なる想定です。

  • SageMakerのアーキテクチャーと学習、推論の操作の流れ

    データの抽出や加工、学習、推論のプロセスをSageMakerで行う場合のアーキテクチャーを記載します。


    SageMakerのアーキテクチャー。Click to expand.
    SageMakerのアーキテクチャー

    SageMakerのアーキテクチャー


①Jupyter Notebookの起動

データサイエンティストはSageMakerによって提供されるJupyter Notebook上で、データを加工するといった前処理をを行ったり、機械学習アルゴリズムを使って学習を行います。SageMakerのマネジメントコンソールでノートブックインスタンスを作成します。[アクション]で[オープン]を選択すると、Jupyterが起動します。


SageMakerのマネジメントコンソールでノートブックインスタンスを作成。Click to expand.
SageMakerのマネジメントコンソールでノートブックインスタンスを作成

SageMakerのマネジメントコンソールでノートブックインスタンスを作成


Jupyter Notebookをオープン。Click to expand.
Jupyter Notebookをオープン

Jupyter Notebookをオープン


学習のためのトレーニングデータはS3に保存します。データが大量に存在し、多くの整形、変換作業が必要な場合は、ETLツールを使用します。このような作業はデータサイエンティストではなく、インフラストラクチャー構築ロールが担当します。これはSageMakerを使用してもしなくても同じです。

➁トレーニングモデルの構築

データサイエンティストはJupyter Notebookを使用して、トレーニングモデルの構築を行います。機械学習のアルゴリズムであるトレーニングコードを含むDockerイメージをECR(Elastic Container Registry)から取り出しトレーニングを行い、結果として出力するトレーニングモデル(アーティファクト)をS3に保存します。トレーニングを行う際は(トレーニングジョブを実行)、SageMakerが提供するML(Machine Learning)インスタンスが起動され、そのうえでトレーニングコンテナが実行されます。


トレーニングジョブの設定画面①。Click to expand.
トレーニングジョブの設定画面①

トレーニングジョブの設定画面①


トレーニングジョブの設定画面➁。Click to expand.
トレーニングジョブの設定画面➁

トレーニングジョブの設定画面➁


③推論用コンテナとエンドポイントの提供

推論の機能をアプリケーションに提供する(デプロイ)ために、SageMakerは推論用のエンドポイントを提供します。この際に、デプロイのためにMLインスタンスが起動されます。モデル、つまり推論のためのコンテナを作成するために、S3に出力されたトレーニングモデル(アーティファクト)と、ECRに格納されている推論コード(Dockerイメージ)が読み込まれます。この推論コードのDockerイメージはトレーニングコードと同じもので構いません。高可用性のために、MLインスタンスは複数のアベイラビリティーゾーンに分散して配置することが可能です。この推論用エンドポイントによりアプリケーションとの連携も容易になります。


推論のためのモデルの設定画面。Click to expand.
推論のためのモデルの設定画面

推論のためのモデルの設定画面


  • SageMakerがサポートする機械学習のアルゴリズム

    SageMakerには組み込み(ビルトイン)のアルゴリズムがあります。また、SageMakerで提供されるアルゴリズムはDockerイメージにパッケージングされるため、実装言語、依存ライブラリ、フレームワークなどに関係なく、独自のアルゴリズムを使用することができます。そして、Tensorflow、MXNeやChainertを含むディープラーニングコンテナがSageMaker によって提供されています。今後の記事ではこれらのアルゴリズムを詳細に見ていきたいと思います。


    SageMakerがサポートする組み込みアルゴリズムの一覧(2018年6月時点)。Click to expand.
    SageMakerがサポートする組み込みアルゴリズムの一覧(2018年6月時点)

    SageMakerがサポートする組み込みアルゴリズムの一覧(2018年6月時点)


  • AWSのデータレイク

    機械学習で使用するビッグデータを取り扱うという点では、従来のオンプレミスではデータ保存のキャパシティやコスト面の課題がありました。クラウドではこの課題がデータレイクと呼ばれる概念で解決されています。データレイクとは、膨大かつ多様な構造化、非構造化データを一元管理、蓄積できる低コストのストレージです。
    AWSでは高い堅牢性を持つオブジェクトストレージであるS3がデータレイクの役目を担っています。組織がデータレイクを整備することでこれらを利用するステークホルダーが様々な分析ツールを利用できて大きな価値を得ることができます。S3のデータレイクは次の特徴を持っています。

    • データはそのまま保存できるため、あらかじめ定義されたスキーマに変換する必要はない。

    • S3は容量が無制限のため、オリジナルのデータを削減せずに保存することが可能であり、後になって分析に必要なデータが不足していた、という状況を回避できる。そのため、データは削減せずに全期間残すことがベストプラクティスの1つである。

    • S3と他のAWSサービスとの連携が可能である。


      AWSのデータレイク。Click to expand.
      AWSのデータレイク

      AWSのデータレイク


Amazon SageMakerを理解する(1) SageMakerの概要 クラウドによる機械学習とデータレイク。Click to expand.
Amazon SageMakerを理解する(1) SageMakerの概要 クラウドによる機械学習とデータレイク

Amazon SageMakerを理解する(1) SageMakerの概要 クラウドによる機械学習とデータレイク。Click to expand.
Amazon SageMakerを理解する(1) SageMakerの概要 クラウドによる機械学習とデータレイク

SageMakerのサンプルを実行

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を見ていきたいと思います。


参考文献

Popular Tags

    最新の記事

      アーカイブ