ステップ 5: モデルを Amazon EC2 にデプロイする - アマゾン SageMaker

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

ステップ 5: モデルを Amazon EC2 にデプロイする

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

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

Amazon を使用して Amazon EC2 経由でモデルをホストするには SageMaker、トレーニングしたモデルを展開してくださいトレーニングジョブを作成して実行するを呼ぶことで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) — さまざまな形式の入力データをシリアル化する (a) NumPy 配列、バッファ (バッファ) を CSV 形式の文字列に変換します。XGBoost アルゴリズムでは CSV 形式の入力ファイルを使用できるため、このファイルを使用します。

-deployメソッドはデプロイ可能なモデルを作成し、 SageMakerエンドポイントをホストし、モデルをホストするエンドポイントを起動します。詳細については、『』を参照してください。SageMaker ジェネリック Estimator のデプロイクラスメソッド()アマゾン SageMaker Pythondeploy メソッドで生成されたエンドポイントの名前を取得するには、次のコードを実行します。

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 同じエンドポイントを使用して新しい予測子オブジェクトを設定します。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 Predictorのクラスアマゾン SageMaker Python

(オプション) バッチ変換を使用して予測を行う

本番環境のエンドポイントをホストする代わりに、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. パラメータの最小数を指定する transformer オブジェクトを作成します。次に示すように、instance_countinstance_type のパラメータはバッチ変換ジョブを実行するためのパラメータであり、output_path は予測データを保存するためのパラメータです。

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

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. バッチ変換ジョブが完了すると、 SageMaker を作成しますtest.csv.out予測データはbatch_outputpath。次の形式にする必要があります。s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction。 以下を実行します。AWS CLIバッチ変換ジョブの出力データをダウンロードするには:

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

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