翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 5: Amazon にモデルをデプロイする EC2
予測を取得するには、Amazon EC2を使用してモデルを Amazon にデプロイします SageMaker。
トピック
SageMaker ホスティングサービスへのモデルのデプロイ
Amazon EC2を使用して Amazon を介してモデルをホストするには SageMaker、推定器の deploy
メソッドを呼び出しトレーニングジョブを作成して実行するて、 xgb_model
でトレーニングしたモデルをデプロイします。deploy
メソッドを呼び出すときは、エンドポイントのホストに使用する ML EC2 インスタンスの数とタイプを指定する必要があります。
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、モデルをホストするエンドポイントを起動します。詳細については、Amazon SageMaker Python SDKdeploy
メソッドで生成されたエンドポイントの名前を取得するには、次のコードを実行します。
xgb_predictor.endpoint_name
これにより xgb_predictor
のエンドポイント名が返されます。エンドポイント名の形式は "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"
になります。このエンドポイントは機械学習インスタンスでアクティブなままとなるため、後でシャットダウンしない限り、いつでも瞬時に予測を行うことができます。このエンドポイント名をコピーして保存し、 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
とまったく同じ動作をします。詳細については、Amazon Python のSageMaker 「Predictor
(オプション) バッチ変換を使用して予測を行う
本番環境でエンドポイントをホストする代わりに、1 回限りのバッチ推論ジョブを実行して、 SageMaker バッチ変換を使用してテストデータセットで予測を行うことができます。モデルトレーニングが完了したら、SageMakerTransformertransformer
オブジェクトに推定器を拡張できます。バッチトランスフォーマーは、指定された S3 バケットの入力データを読み込み、予測を行います。
バッチ変換ジョブを実行するには
次のコードを実行して、テストデータセットの特徴列を 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')
次に示すように、バッチ変換ジョブの入力と出力URIsの S3 バケットを指定します。
# 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)
パラメータの最小数を指定する transformer オブジェクトを作成します。次に示すように、
instance_count
とinstance_type
のパラメータはバッチ変換ジョブを実行するためのパラメータであり、output_path
は予測データを保存するためのパラメータです。transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
次に示すように、
transformer
オブジェクトのtransform()
メソッドを実行して、バッチ変換ジョブを開始します。transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
バッチ変換ジョブが完了すると、 は
batch_output
パスに保存されたtest.csv.out
予測データ SageMaker を作成します。これは の形式である必要がありますs3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction
。以下を実行します。 AWS CLI バッチ変換ジョブの出力データをダウンロードするには:! aws s3 cp {batch_output} ./ --recursive
これにより、現在の作業ディレクトリの下に
test.csv.out
ファイルが作成されます。XGBoost トレーニングジョブのロジスティック回帰に基づいて予測される浮動小数点値を確認できます。