PlatoBlockchain Data Intelligence をテストするためにモデルを Amazon SageMaker にデプロイするのにかかる時間を短縮します。垂直検索。あい。

テストのためにモデルを Amazon SageMaker にデプロイするのにかかる時間を短縮します

多くの場合、データ サイエンティストはモデルをローカルでトレーニングし、モデルをデプロイするための適切なホスティング サービスを探します。 残念ながら、事前トレーニング済みのモデルをクラウドにデプロイするための決まったメカニズムやガイドはありません。 この投稿では、トレーニング済みモデルをデプロイする方法について説明します。 アマゾンセージメーカー ホスティングを使用して展開時間を短縮します。

SageMaker はフルマネージドの機械学習 (ML) サービスです。 SageMaker を使用すると、ML モデルをすばやく構築してトレーニングし、本番環境でホストされている環境に直接デプロイできます。 さらに、サーバーを管理する必要はありません。 データ ソースに簡単にアクセスできる、統合された Jupyter ノートブック環境を利用できます。 データ分析を実行し、モデルをトレーニングし、独自のアルゴリズムを使用してモデルをテストしたり、複数のマシンにまたがる大規模なデータセットに対して効率的に実行するように最適化された SageMaker 提供の ML アルゴリズムを使用したりできます。 トレーニングとホスティングは、使用時間に応じて請求され、最低料金や前払いの義務はありません。

ソリューションの概要

データ サイエンティストは、IDE を使用してモデルをローカルでトレーニングし、それらのモデルを展開のために ML エンジニアリング チームに送るか、強力なマシンでローカルに予測を実行するだけです。 この投稿では、モデルを SageMaker にデプロイするプロセスを簡素化する Python ライブラリを紹介します。 ホスティング リアルタイムまたはサーバーレス エンドポイントで。

この Python ライブラリは、データ サイエンティストに、低レベルの SageMaker 機能を知らなくても、SageMaker をすぐに使い始めるためのシンプルなインターフェイスを提供します。

お好みの IDE を使用してローカルでトレーニングされたモデルがあり、クラウドの規模を活用したい場合は、このライブラリを使用してモデルを SageMaker にデプロイできます。 SageMaker を使用すると、クラウドベースの ML プラットフォームのすべてのスケーリングの利点に加えて、専用のトレーニング ツール (分散トレーニング、ハイパーパラメータ調整)、実験管理、モデル管理、バイアス検出、モデルの説明可能性、および他の多くの機能にアクセスできます。 ML ライフサイクルのあらゆる面で役立つ機能。 ML の最も一般的な XNUMX つのフレームワーク (Scikit-learn、PyTorch、TensorFlow) から選択し、必要なコンピューティングの種類を選択できます。 途中でデフォルトが提供されるため、このライブラリのユーザーは、複雑な決定を下したり、新しい概念を学習したりする必要なく、モデルをデプロイできます。 この投稿では、このライブラリの使用を開始し、SageMaker ホスティングで ML モデルのデプロイを最適化する方法を紹介します。

ライブラリは GitHubリポジトリ.

SageMaker 移行ツールキット

  SageMakerMigration クラスは、GitHub に公開されている Python ライブラリから入手できます。 このライブラリをインストールする手順は、リポジトリで提供されています。 README に従って、環境を適切に設定してください。 このライブラリをインストールしたら、この投稿の残りの部分でその使用方法について説明します。

  SageMakerMigration クラスは、次の図に示すように、モデルを SageMaker にデプロイするために必要な手順を大幅に削減する SageMaker API の高レベルの抽象化で構成されています。 これは、開発者が SageMaker をすぐに開始してテストできるように、実験を目的としています。 本番環境への移行を目的としたものではありません。

Scikit-learn、PyTorch、および TensorFlow モデルの場合、このライブラリはトレーニング済みモデルの SageMaker リアルタイム エンドポイントまたはサーバーレス エンドポイントへのデプロイをサポートします。 SageMaker の推論オプションの詳細については、以下を参照してください。 推論のためのモデルのデプロイ.

リアルタイム エンドポイントとサーバーレス エンドポイント

リアルタイムの推論は、リアルタイム、インタラクティブ、低レイテンシーの要件がある推論ワークロードに最適です。 モデルを SageMaker ホスティング サービスにデプロイし、推論に使用できるエンドポイントを取得できます。 これらのエンドポイントは完全に管理されており、自動スケーリングをサポートしています。

SageMaker Serverless Inference は、ML モデルのデプロイとスケーリングを容易にする専用の推論オプションです。 サーバーレス推論は、トラフィックの急増の間にアイドル期間があり、コールド スタートを許容できるワークロードに最適です。 サーバーレス エンドポイントは、コンピューティング リソースを自動的に起動し、トラフィックに応じてスケールインおよびスケールアウトするため、インスタンス タイプを選択したり、スケーリング ポリシーを管理したりする必要がなくなります。 これにより、サーバーの選択と管理という差別化されていない重労働が取り除かれます。

ユースケースによっては、実際にインスタンスを常にオンにしてコストを発生させることなく、SageMaker でモデルをすばやくホストしたい場合があります。その場合、サーバーレスエンドポイントは優れたソリューションです。

トレーニング済みのモデルと推論スクリプトを準備する

SageMaker にデプロイするモデルを特定したら、そのモデルが正しい形式で SageMaker に提示されていることを確認する必要があります。 SageMaker エンドポイントは通常、トレーニング済みのモデル アーティファクト (.pth、.pkl など) と推論スクリプトの XNUMX つのコンポーネントで構成されます。 推論スクリプトは必ずしも必須ではありませんが、提供されていない場合は、使用しているサービング コンテナーの既定のハンドラーが適用されます。 推論のために入出力機能をカスタマイズする必要がある場合は、このスクリプトを提供することが不可欠です。

トレーニング済みのモデル アーティファクトは、単純に保存された Scikit-learn、PyTorch、または TensorFlow モデルです。 Scikit-learn の場合、これは通常 pickle ファイルであり、PyTorch の場合、これは .pt または .pth ファイルであり、TensorFlow の場合、これはアセット、.pb ファイル、およびその他の変数を含むフォルダーです。

一般に、モデルが入力を処理して推論を実行する方法を制御し、応答の出力形式を制御できる必要があります。 SageMaker を使用すると、 推論スクリプト このカスタマイズを追加します。 SageMaker で使用される推論スクリプトには、次の XNUMX つのハンドラー関数の XNUMX つ以上が必要です。 model_fn, input_fn, predict_fn, output_fn.

これらの XNUMX つの機能が適用されることに注意してください。 パイトーチ および シキット学習 特にコンテナ。 TensorFlow はと統合されているため、わずかに異なるハンドラーがあります。 TensorFlowサービング. TensorFlow を使用した推論スクリプトの場合、次の XNUMX つがあります。 モデル ハンドラー: input_handler および output_handler。 繰り返しますが、これらは作業できる同じ前処理と後処理の目的を持っていますが、統合するためにわずかに異なる構成になっています。 TensorFlowサービング. PyTorch モデルの場合、model_fn は推論スクリプトに必須の関数です。

モデル_fn

これは、SageMaker エンドポイントを呼び出すときに最初に呼び出される関数です。 ここで、モデルをロードするコードを記述します。 例えば:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

フレームワークとモデルのタイプに応じて、このコードは変わる可能性がありますが、関数は初期化されたモデルを返す必要があります。

入力_fn

これは、エンドポイントが呼び出されたときに呼び出される XNUMX 番目の関数です。 この関数は、推論のためにエンドポイントに送信されたデータを取得し、モデルが予測を生成するために必要な形式に解析します。 例えば:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

  request_body モデルから推論を生成するために使用されるデータを含み、必要な形式になるようにこの関数で解析されます。

予測_fn

これは、モデルが呼び出されたときに呼び出される XNUMX 番目の関数です。 この関数は、から返された前処理された入力データを受け取ります。 input_fn から返されたモデルを使用します model_fn 予測を行う。 例えば:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

オプションで追加できます output_fn の出力を解析します predict_fn お客様にお返しする前に。 関数のシグネチャは def output_fn(prediction, content_type).

事前トレーニング済みのモデルを SageMaker に移動する

トレーニング済みのモデル ファイルと推論スクリプトを用意したら、これらのファイルを次のようなフォルダーに配置する必要があります。

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

モデルと推論スクリプトを準備してこのフォルダー構造に保存すると、モデルを SageMaker にデプロイする準備が整います。 次のコードを参照してください。

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

エンドポイントのデプロイ後、SageMaker コンソールまたは エンドポイントの削除 Boto3 API 呼び出し。

まとめ

SageMaker Migration Toolkit プロジェクトの目標は、データ サイエンティストがモデルを SageMaker に簡単にオンボードして、クラウドベースの推論を利用できるようにすることです。 リポジトリは進化を続け、ワークロードを SageMaker に移行するためのより多くのオプションをサポートします。 コードはオープン ソースであり、プル リクエストやイシューによるコミュニティの貢献を歓迎します。

チェックアウトします GitHubリポジトリ SageMaker Migration Toolkit の利用についてさらに詳しく調べて、プロジェクトに追加する例や機能のリクエストもお気軽に投稿してください!


著者について

PlatoBlockchain Data Intelligence をテストするためにモデルを Amazon SageMaker にデプロイするのにかかる時間を短縮します。垂直検索。あい。キリット・サダカ Amazon SageMaker Service SA チームで働く ML ソリューション アーキテクトです。 AWS に入社する前は、初期段階の AI スタートアップで働き、その後、AI 研究、MLOps、および技術的リーダーシップのさまざまな役割でコンサルティングを行っていました。

PlatoBlockchain Data Intelligence をテストするためにモデルを Amazon SageMaker にデプロイするのにかかる時間を短縮します。垂直検索。あい。ラム・ベギラージュ SageMaker サービスチームの ML アーキテクトです。 彼は、お客様が Amazon SageMaker で AI/ML ソリューションを構築および最適化するのを支援することに重点を置いています。 余暇には、旅行と執筆が大好きです。

タイムスタンプ:

より多くの AWS機械学習