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

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

Amazon SageMaker ホスティングサービスにモデルをデプロイするには、Amazon SageMaker Python SDK または AWS SDK for Python (Boto3) を使用します。この演習では、両方のライブラリのコード例を用意しています。

Amazon SageMaker Python SDK はいくつかの実装詳細を抽象化します。これは、簡単に使用できます。初めて Amazon SageMaker を使用する場合は、使用することをお勧めします。詳細については、https://sagemaker.readthedocs.io/en/stable/overview.html を参照してください。

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

トレーニングジョブを作成して実行する (Amazon SageMaker Python SDK) でトレーニングしたモデルをデプロイするには、sagemaker.estimator.Estimator オブジェクトの deploy メソッドを呼び出します。これはモデルのトレーニングに使用したものと同じオブジェクトです。deploy メソッドを呼び出すときに、エンドポイントをホストするのに使用する ML インスタンスの数とタイプを指定します。

xgb_predictor = xgb_model.deploy(initial_instance_count=1, content_type='text/csv', instance_type='ml.t2.medium' )

この deploy メソッドはデプロイ可能なモデルを作成し、Amazon SageMaker ホスティングサービスエンドポイントを設定し、モデルをホストするエンドポイントを起動します。詳細については、https://sagemaker.readthedocs.io/en/stable/estimators.html#sagemaker.estimator.Estimator.deploy を参照してください。

また、sagemaker.predictor.RealTimePredictor オブジェクトも返ります。このオブジェクトは、モデルから推論を取得するのに使用することができます。詳細については、https://sagemaker.readthedocs.io/en/stable/predictors.html#sagemaker.predictor.RealTimePredictor を参照してください。

次のステップ

ステップ 7: モデルを検証する

Amazon SageMaker ホスティングサービス (AWS SDK for Python (Boto3)) にモデルをデプロイします。

AWS SDK for Python (Boto 3) を使用してモデルをデプロイするには、3 つのプロセスを行います。

  1. Amazon SageMaker でのモデルの作成 – CreateModel リクエストを送信して、モデルアーティファクトが格納されている S3 バケットの場所や推論コードが格納されているイメージのレジストリパスなどの情報を提供します。

  2. エンドポイント設定の作成 – CreateEndpointConfig リクエストを送信して、ホスティングのリソース設定を提供します。これには、モデルをデプロイするために起動する ML コンピューティングインスタンスの種類と数が含まれます。

  3. エンドポイントを作成する – CreateEndpoint リクエストを送信してエンドポイントを作成します。Amazon SageMaker が ML コンピューティングインスタンスを起動し、モデルをデプロイします。Amazon SageMaker によってエンドポイントが返ります。アプリケーションは、推論のリクエストをこのエンドポイントに送信できます。

モデルをデプロイするには (AWS SDK for Python (Boto 3))

以下の各ステップで、ステップ 3: Jupyter ノートブックを作成する で作成した Jupyter ノートブックのセルにコードを貼り付けて、そのセルを実行します。

  1. モデルアーティファクトの場所と推論コードが格納されている Docker イメージを特定することで、デプロイ可能なモデルを作成します。

    model_name = training_job_name + '-mod' info = sm.describe_training_job(TrainingJobName=training_job_name) model_data = info['ModelArtifacts']['S3ModelArtifacts'] print(model_data) primary_container = { 'Image': container, 'ModelDataUrl': model_data } create_model_response = sm.create_model( ModelName = model_name, ExecutionRoleArn = role, PrimaryContainer = primary_container) print(create_model_response['ModelArn'])
  2. モデルをデプロイする ML コンピューティングインスタンスを指定することで、Amazon SageMaker エンドポイント設定を作成します。

    endpoint_config_name = 'DEMO-XGBoostEndpointConfig-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print(endpoint_config_name) create_endpoint_config_response = sm.create_endpoint_config( EndpointConfigName = endpoint_config_name, ProductionVariants=[{ 'InstanceType':'ml.m4.xlarge', 'InitialVariantWeight':1, 'InitialInstanceCount':1, 'ModelName':model_name, 'VariantName':'AllTraffic'}]) print("Endpoint Config Arn: " + create_endpoint_config_response['EndpointConfigArn'])
  3. Amazon SageMaker エンドポイントを作成します。

    %%time import time endpoint_name = 'DEMO-XGBoostEndpoint-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print(endpoint_name) create_endpoint_response = sm.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name) print(create_endpoint_response['EndpointArn']) resp = sm.describe_endpoint(EndpointName=endpoint_name) status = resp['EndpointStatus'] print("Status: " + status) while status=='Creating': time.sleep(60) resp = sm.describe_endpoint(EndpointName=endpoint_name) status = resp['EndpointStatus'] print("Status: " + status) print("Arn: " + resp['EndpointArn']) print("Status: " + status)

    このコードは、エンドポイントに障害が発生するか、サービスが開始されるまで、while ループ内で describe_endpoint コマンドを継続的に呼び出してから、エンドポイントのステータスを出力します。ステータスが InService に変わったら、エンドポイントは推論要求を処理する準備ができています。

次のステップ

ステップ 7: モデルを検証する