Edited at

AmazonSageMakerの構成とか調べた


AmazonSageMakerとは?

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/whatis.html

Amazon Web Service(AWS)の一部。

機械学習ができる。


完全マネージド型

図2.png

AmazonSageMakerは完全マネージド型を売りの一つにしている。


  • 機械学習モデル(どのようなアルゴリズムで学習するのか)の構築

  • training(学習を行うこと)

  • deploy(学習した結果を利用して、Inference(推論)を行えるような状態に配置し、製品の一部として動かすこと)

を統合的に行うことができる。


AmazonSageMakerノートブックインスタンス

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/nbi.html

SageMakerの機能を利用するためのインスタンス。

SageMakerのページから利用できる。

内部でJupyter Notebookが動いており、SageMakerを利用するための以下のような操作を行える。


  • SageMakerライブラリ(python)を使ってSageMakerの各機能を利用できる

  • Botoライブラリ(python)を使ってS3(ストレージサービス)を利用できる

  • 普通にPythonを使って、ネットワークを介したデータの収集とか整理とかできる

  • dockerをJupyterのシェル上で利用してdockerイメージを作成、シェルでdockerイメージをECR(Dockerイメージを保存できるサービス)に送信できる

SageMakerのマニュアルにおいて、このインスタンス自体はSageMakerのアーキテクチャ外のものとして扱われているよう。


AmazonSageMakerのアーキテクチャ

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/how-it-works-training.html

ストレージサービスであるS3、Dockerイメージを保存できるECRと連動する。

図5.png


Training時の動作

図3.png

1. S3にTraining用のデータを送信(AmazonSageMakerノートブックインスタンスで行える)

2. ECRにTraining用のDockerイメージを送信(すでに用意されているアルゴリズムを利用する場合は不要)(AmazonSageMakerノートブックインスタンスで行える)

3. S3のデータのバケット・S3の推論モデル(モデルアーティファクト)を出力するバケット・ECRのDockerイメージの名前を指定して、SageMakerでtrainingを開始。(AmazonSageMakerノートブックインスタンスで行える)このtraining一回をトレーニングジョブとよぶ。トレーニングジョブ開始のたびに新たなインスタンスが起動され、計算が行われる。training終了後、自動でtraining結果である推論モデル(モデルアーティファクト)があらかじめ指定しておいたS3のバケットにコピーされる。


deploy時の動作

個人的な都合により以下未検証

図4.png

1. 外部からアクセスできるエンドポイントを用意する。

2. ECRぶInference(推論)用のDockerイメージを送信(すでに用意されているアルゴリズムを利用する場合は不要)

3. SageMakerの機能からインスタンスを起動して、エンドポイントから送られてくるデータに対して反応できるようにする。