Build and deploy ML inference applications from scratch using Amazon SageMaker

概要
- Amazon SageMaker 上でカスタムコンテナを使って ML アプリケーションを構築し、ホストする方法を紹介
- Amazon SageMaker は、モデルのデプロイ用に、組み込みアルゴリズムとビルド済みの SageMaker docker イメージを提供しているが、ニーズに合わない場合、Amazon SageMaker 上でホスティングするために独自のコンテナを持ち込む(BYOC)ことができる
- BYOCのユースケース
- カスタム ML フレームワークまたはライブラリ
- Amazon SageMaker のビルトインアルゴリズムやビルド済みコンテナでサポートされていない ML フレームワークやライブラリを使用する場合は、カスタムコンテナを作成する必要があります。
- 特殊なモデル
- 特定のドメインや業界では、Amazon SageMaker のビルトインでは利用できない特定のモデルアーキテクチャやカスタマイズされた前処理ステップが必要になる場合があります。
- 独自のアルゴリズム
- 自社で独自のアルゴリズムを開発した場合、それらを Amazon SageMaker にデプロイするためのカスタムコンテナが必要になります。
- 複雑な推論パイプライン
- ML推論ワークフローにカスタムのビジネスロジック(特定の順序で実行する必要がある一連の複雑なステップ)が含まれる場合、BYOCはこれらのステップをより効率的に管理およびオーケストレーションするのに役立ちます。
Solution overview

- 最新のscikit-learnとxgboostパッケージを使用した2つのカスタム推論コンテナを使用して、リアルタイムエンドポイントを持つAmazon SageMaker上でMLシリアル推論アプリケーションをホストする方法(アワビの環を予測するML推論アプリケーションを構築する)
- 最初のコンテナはscikit-learnモデルを使って生データをフィーチャー化された列に変換する。数値列には StandardScaler を適用し、カテゴリ列には OneHotEncoder を適用する。
- 2番目のコンテナは、事前に学習されたXGboostモデル(すなわち予測モデル)をホストする。予測モデルはフィーチャー化された入力を受け入れ、予測を出力する。
- 最後に、フィーチャライザと予測モデルを、Amazon SageMaker リアルタイムエンドポイントにシリアル推論パイプラインでデプロイします。
- 推論アプリケーション内で別々のコンテナを使用したい理由
- デカップリング - パイプラインの様々なステップには明確に定義された目的があり、その根底には依存関係があるため、別々のコンテナで実行する必要があります。これは、パイプラインを適切に構造化するのにも役立ちます。
- フレームワーク - パイプラインの様々なステップは、特定の目的に合ったフレームワーク(scikitやSpark MLなど)を使用するため、別々のコンテナで実行する必要があります。
- リソースの分離 - パイプラインのさまざまなステップでは、必要なリソース消費量が異なるため、柔軟性と制御性を高めるために別々のコンテナで実行する必要があります。
- メンテナンスとアップグレード - 運用の観点からは、機能分離が促進され、他のモデルに影響を与えることなく、個々のステップをより簡単にアップグレードまたは変更し続けることができます。
- さらに、個々のコンテナのローカルビルドは、お気に入りのツールや統合開発環境(IDE)を使用した開発とテストの反復プロセスに役立ちます。コンテナの準備ができたら、Amazon SageMaker エンドポイントを使用して、推論のために AWS クラウドにデプロイすることができます。

