ステップ 5: Amazon EC2 へのモデルのデプロイ - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 5: Amazon EC2 へのモデルのデプロイ

予測を取得するには、Amazon SageMaker を使用して Amazon EC2 にモデルをデプロイします。

SageMaker ホスティングサービスにモデルをデプロイする

Amazon SageMaker を使用して Amazon EC2 を通じてモデルをホストするには、トレーニングJob を作成して実行するを呼び出すことによって、deployメソッドのxgb_model推定値。呼び出すと、deployメソッドを使用するには、エンドポイントをホストするのに使用する EC2 ML インスタンスの数とタイプを指定する必要があります。

import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
  • initial_instance_count(int) — モデルをデプロイするインスタンスの数。

  • instance_type(str) — デプロイされたモデルを操作するインスタンスのタイプ。

  • serializer(int) — さまざまな形式 (NumPy 配列、リスト、ファイル、またはバッファ) の入力データを CSV 形式の文字列にシリアル化します。XGBoostアルゴリズムはCSV形式の入力ファイルを受け入れるため、これを使用します。

-deployメソッドは、デプロイ可能なモデルを作成し、SageMaker ホスティングサービスエンドポイントを設定し、モデルをホストするエンドポイントを起動します。詳細については、「」を参照してください。SageMaker 汎用見積もりのデプロイクラスメソッドAmazon SageMaker Python SDK。によって生成されたエンドポイントの名前を取得するには、deployメソッドを実行するには、以下のコードを実行します。

xgb_predictor.endpoint_name

これは、のエンドポイント名を返します。xgb_predictor。エンドポイント名の形式は、次のとおりです。"sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"。このエンドポイントは ML インスタンス内でアクティブなままになり、後でシャットダウンしない限り、いつでも瞬時予測を行うことができます。このエンドポイント名をコピーして保存し、SageMaker Studio または SageMaker ノートブックインスタンスの他の場所で再利用してリアルタイム予測を行います。

ヒント

Amazon EC2 インスタンスまたはエッジデバイスにデプロイするためのモデルのコンパイルと最適化の詳細については、」Neo でモデルのコンパイルとデプロイ

(オプション)SageMaker プレディクタを使用してホストされたエンドポイントを再利用する

モデルをエンドポイントに展開した後、エンドポイントをペアリングして新しい SageMaker プレディクタを設定し、他のノートブックで継続的にリアルタイム予測を行うことができます。次のコード例は、SageMaker Predictor クラスを使用して、同じエンドポイントを使用して新しいプレディクタオブジェクトを設定する方法を示しています。使用したエンドポイント名を再使用し、xgb_predictor

import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )

-xgb_predictor_reuse予測変数は、オリジナルとまったく同じ動作をします。xgb_predictor。詳細については、「」を参照してください。SageMaker 予測子クラスでAmazon SageMaker Python SDK

(オプション)Batch 変換による予測の作成

本番環境でエンドポイントをホストする代わりに、1 回限りのバッチ推論ジョブを実行して、SageMaker バッチ変換を使用してテストデータセットで予測を行うことができます。モデルトレーニングが完了したら、見積もりをtransformerオブジェクトに基づいているSageMaker トランスクラス. バッチトランスフォーマーは、指定された S3 バケットから入力データを読み取り、予測を行います。

バッチ変換ジョブを実行するには

  1. 次のコードを実行して、テストデータセットのフィーチャ列を CSV ファイルに変換し、S3 バケットにアップロードします。

    X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
  2. 次に示すように、バッチ変換ジョブの入出力の S3 バケット URI を指定します。

    # The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
  3. 最小数のパラメータを指定するトランスフォーマーオブジェクトを作成します。instance_countおよびinstance_typeパラメーターを使用してバッチ変換ジョブを実行し、output_pathをクリックして、予測データを次のように保存します。

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. バッチ変換ジョブを開始するには、transform()メソッドのtransformer次に示すように、オブジェクトを作成します。

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. バッチ変換ジョブが完了すると、SageMaker はtest.csv.out予測データがbatch_outputパスを使用します。このパスは、次の形式になります。s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction。 次の作業を行います。AWS CLIをクリックして、バッチ変換ジョブの出力データをダウンロードします。

    ! aws s3 cp {batch_output} ./ --recursive

    これにより、test.csv.outファイルを現在の作業ディレクトリの下に置きます。XGBoost トレーニングジョブのロジスティック回帰に基づいて予測される浮動小数点値を確認できます。