Amazon SageMaker によるデプロイ

Amazon SageMaker は、機械学習モデルを本番環境にデプロイし、モデルの品質をモニタリングするために必要なすべてを提供することにより、予測の生成を容易にします。

特徴

モデルのモニタリング

機械学習モデルは通常、履歴データを使用してトレーニングされ、評価されますが、本番環境にデプロイされると品質が低下します。これは、予測のためにモデルに送信されるデータの分布が、トレーニング中に使用されるデータの分布と異なる場合があるために発生します。予測結果の有効性は時間とともに変化する可能性があり、モデルの品質に影響を与える可能性のあるエラーがアップストリームに導入される可能性があります。これを防ぐには、本番環境でモデルの品質をモニタリングし、問題を迅速に特定し、モデルの監査や再トレーニングなどの修正措置を講じる必要があります。これを実現するには、予測関連データを安全に保存するためのツールを構築し、このデータを分析してモデルの品質を評価するためのさまざまな統計的手法を実装する必要があります。最後に、適切な是正措置を講じるには、モデル品質の偏差を検出する必要があります。追加のツールを作成する代わりに、定期的な頻度でモデルの再トレーニングが行われますが、これには費用がかかります。

Amazon SageMaker Model Monitor を使用すると、本番環境でモデルをモニタリングし、修正アクションを実行する必要がある場合に検出するためのツールを構築する必要がなくなります。SageMaker Model Monitor は、生産中の機械学習モデルの品質を継続的にモニタリングし、モデルの品質に偏差がある場合に警告します。

SageMaker Model Monitor は、組み込みルールまたは独自のカスタムルールに基づいて収集されたデータを定期的に分析し、ルール違反があるかどうかを判断します。組み込みのルールを使用して、表形式のデータを分析し、予測データの外れ値、トレーニングデータセットと比較したデータ分布のドリフト、現実世界からの観測に基づく予測精度の変化などの一般的な問題を検出できます。SageMaker Model Monitor は SageMaker Studio 内で使用でき、メトリックを Amazon CloudWatch に送信して、モデルを監査および再トレーニングするためのアラームを設定できます。アラートを表示して、ドリフトの原因となっているデータを理解し、それに応じてトレーニングデータを調整できます。予測リクエストとレスポンスは、コードを変更することなく、SageMaker にデプロイされたすべてのモデルに対して安全に保存されます。

Model Monitor

ワンクリックデプロイ

Amazon SageMaker を本番稼働用環境に簡単にデプロイして、リアルタイムデータやバッチデータに対する予測の生成を開始できます。Amazon ML インスタンスは複数のアベイラビリティーゾーン間で自動スケーリングされます。お客様は、1 回クリックするだけで、この冗長性に優れたインスタンスにモデルをデプロイできます。インスタンスのタイプ、必要なインスタンスの最大数と最小数を指定すると、残りの手順は SageMaker によって自動的に実行されます。インスタンスの作成、モデルのデプロイ、アプリケーションと安全に通信するための HTTPS エンドポイントのセットアップも SageMaker によって自動的に行われます。アプリケーションではこのエンドポイントへの API コールを行うだけで、低レイテンシーで高スループットの推論が利用できます。このアーキテクチャでは、アプリケーションのコードに手を加えずにモデルを変更できるため、新規モデルをアプリケーションに簡単に統合できます。

バッチ変換

ほとんどの場合、非リアルタイムで予測するためのデータのバッチ処理は、大きなデータセットを小さなデータの固まりにサイズ変更し、リアルタイムのエンドポイントを管理することによって行われます。これは費用がかかり、エラーが発生しやすくなります。Amazon SageMaker のバッチ変換機能を使用すると、データセットを複数のチャンクに分解したり、リアルタイムのエンドポイントを管理したりする必要がありません。バッチ変換により、大小のバッチデータセットに対する予測を実行できます。シンプルな API を使用して、多数のデータレコードの予測をリクエストし、そのデータを迅速かつ簡単に変換できます。データは、ペタバイト程度の大きさでも、調査を実行するための数バイト程度の大きさでも、またはその間のどの大きさでもかまいません。

一度のトレーニングでどこにでもデプロイ

通常、各ハードウェア構成には独自の機能と制限があるため、さまざまなエッジデバイスで高い推論パフォーマンスを実現するには、各ターゲットデバイスのモデルを数週間または数か月間手動で調整する必要があります。Amazon SageMaker Neo を使用すると、機械学習モデルを一度トレーニングすれば、そのモデルをクラウドやエッジのどこでもデプロイできます。

SageMaker Neo は、機械学習を使用して、トレーニングされたモデルを自動的に最適化し、最大 2 倍の速度で実行し、ターゲットデプロイ環境の精度を損なうことなく、メモリフットプリントの 1/10 未満を消費します。MXNet、TensorFlow、PyTorch、XGBoost のいずれかを使用して構築されます。また、SageMaker を使用してトレーニングされた機械学習モデルの使用を開始します。次に、モデルをデプロイするターゲットハードウェアプラットフォームを選択します。ワンクリックで、SageMaker Neo がトレーニングされたモデルを実行可能ファイルにコンパイルします。コンパイラはニューラルネットワークを使用し、ターゲットハードウェアプラットフォームで最も効率的にモデルを実行できるパフォーマンスの最適化をすべて検出して適用します。モデルをデプロイし、クラウドまたはエッジで予測を開始することができます。AWS IoT Greengrass を使用すると、ローカルコンピューティングと ML 推論機能をエッジデバイスに導入することができます。

エッジの展開を容易にするために、Greengrass は Neo で最適化されたモデルをサポートしているため、Over the Air (OTA) アップデートによってモデルをエッジに直接デプロイできます。Neo は、Apache Software License に基づく Neo-AI プロジェクトのようなオープンソースコードとしても利用可能です。また、開発者はさまざまなデバイスやアプリケーション用にソフトウェアをカスタマイズすることができます。

2 倍

パフォーマンス

1/10

元のフレームワークのサイズ

Kubernetes との統合

Kubernetes は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動的に行うために使用されるオープンソースシステムです。多くのお客様が機械学習に Amazon SageMaker の完全なマネージド機能を使用したいと考えていますが、プラットフォームやインフラチームには、オーケストレーションとパイプラインの管理のために継続的に Kubernetes を使用するよう求めています。SageMaker は、Kubernetes ユーザーが SageMaker-Kubeflow 操作とパイプラインを使用して SageMaker でモデルをトレーニングおよびデプロイできるようにすることで、この要件に対応します。オペレータとパイプラインを使用して、Kubernetes ユーザーは、Kubeflow からネイティブな完全マネージド型の SageMaker ML ツールとエンジンにアクセスできます。これにより、Kubernetes 全体のオーケストレーションの制御を維持しながら、Kubernetes の ML インフラストラクチャを手動で管理および最適化する必要がなくなります。Kubernetes 用の SageMaker オペレータとパイプラインを使用すると、ワークロードを移行することなく、Kubernetes での機械学習の完全マネージド型サービスによる利点を得ることができます。

トレーニングを超えたデータ処理

通常、実際の ML ワークロードには、トレーニングと予測以上のものが必要です。データは、場合によっては複数のステップで前処理および後処理を行う必要があります。未加工データから予測を配信する際に協力する必要がある一連のアルゴリズムを使用して、トレーニングとデプロイを行わなければならない場合があります。SageMaker では、推論パイプラインをデプロイできます。未加工の入力データを渡したり、リアルタイムまたは一括の推論要求で前処理、予測、後処理を実行したりできます。推論パイプラインは、機械学習フレームワーク、組み込みアルゴリズム、または Amazon SageMaker 上で利用できるカスタム コンテナで構成できます。Amazon SageMaker の SparkML および Scikit-learn フレームワークコンテナで利用できる一連のフィーチャトランスフォーマーでフィーチャデータ処理とフィーチャエンジニアリングパイプラインを構築し、それらを推論パイプラインの一部としてデプロイし、データ処理コードと簡単になった機械学習プロセス管理を再利用できます。

マルチモデルエンドポイント

企業はますます、個々のユーザーデータに基づいて機械学習モデルをトレーニングしています。たとえば、音楽ストリーミングサービスは、各リスナーの音楽履歴に基づいてカスタムモデルをトレーニングして、おすすめの音楽をパーソナライズします。タクシーサービスは、各都市の交通パターンに基づいてカスタムモデルをトレーニングして、乗客の待ち時間を予測します。ユースケースごとにカスタム ML モデルを構築すると、推論の精度が向上しますが、モデルのデプロイと管理のコストが大幅に増加します。すべてのモデルが同じ速度でアクセスされるわけではありませんが、常に利用可能でなければならない場合に、これらの課題はより顕著になります。

Amazon SageMaker マルチモデルエンドポイントでは、多数のカスタム機械学習モデルをデプロイするためのスケーラブルで費用対効果の高い方法を提供します。SageMaker マルチモデルエンドポイントを使用すると、1 つのエンドポイントを 1 回クリックするだけで複数のモデルをデプロイし、1 つの提供コンテナを使用してサービスを提供できます。インスタンスのタイプ、必要なインスタンスの最大数と最小数を指定すると、残りの手順は SageMaker によって自動的に実行されます。インスタンスの作成、モデルのデプロイ、アプリケーションと安全に通信するための HTTPS エンドポイントのセットアップも SageMaker によって自動的に行われます。アプリケーションではこのエンドポイントへのターゲットモデルに API コールを実装するだけで、低レイテンシーで高スループットの推論が利用できます。

高パフォーマンスかつ低コストな推論をクラウドで実現

Amazon SageMaker を使うと、お客様はトレーニング済みの機械学習モデルの Amazon Inf1 インスタンへのデプロイや、AWS Inferentia チップを使っての構築が行えます。これにより、高パフォーマンスかつ低コストな推論を実現します。Inf1 インスタンスを使用するお客様は、画像認識、音声認識、自然言語処理、パーソナライズ、不正検知といった大規模な機械学習推論アプリケーションを実行することができます。Amazon SageMaker Neo では、お客様のトレーニング済みの機械学習モデルを、Inf1 インスタンスで最適実行するようにコンパイルできます。このコンパイル済みモデルは、リアルタイム推論を実行するために、Inf1 インスタンスで容易にデプロイできます。

詳細情報

実験から本番まで ML モデルを取得する

SageMaker を使用して ML モデルを運用環境にデプロイする方法を学ぶ

Deploy trained Keras or TensorFlow models using Amazon SageMaker

Amazon SageMaker を使用して、トレーニングされた Keras または TensorFlow をデプロイする方法を学ぶ

Amazon SageMaker のカスタム ML モデルを自動化する

GitHub でこれらの例を実行し、カスタム ML モデルの構築、トレーニング、デプロイを自動化します。