View a markdown version of this page

SageMaker SDK を使ってコンパイル済みモデルをデプロイする - Amazon SageMaker AI

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

SageMaker SDK を使ってコンパイル済みモデルをデプロイする

モデルが または Amazon SageMaker AI コンソールを使用してコンパイルされている場合は AWS SDK for Python (Boto3) AWS CLI、前提条件セクションを満たす必要があります。次のいずれかのユースケースに従い、モデルをコンパイルした方法に応じて、SageMaker Neo でコンパイル済みのモデルをデプロイします。

SageMaker SDK を使ってモデルをコンパイルした場合

コンパイル済みモデルの sagemaker.Model オブジェクトハンドルは、推論リクエストを処理するエンドポイントの作成を可能にする deploy() 関数を提供します。この関数を使用すると、エンドポイントに使用されるインスタンスの数と種類を設定できます。モデルをコンパイルしたインスタンスを選択する必要があります。例えば、「モデルをコンパイルする (Amazon SageMaker SDK)」セクションでコンパイルされたジョブでは、これは ml_c5 です。

from sagemaker.serve import ModelBuilder model_builder = ModelBuilder( model=compiled_model, role_arn=role, instance_type='ml.c5.4xlarge', ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.c5.4xlarge' ) # Print the name of newly created endpoint print(endpoint.endpoint_name)

MXNet または PyTorch を使ってモデルをコンパイルした場合

を使用して SageMaker AI モデルを作成してデプロイしますModelBuilder。コンパイル済みモデルアーカイブへの S3 パスとして s3_model_data_urlパラメータを指定し、実行ロールとして role_arnパラメータを指定し、ターゲットインスタンスの instance_typeパラメータを指定します。また、MMS_DEFAULT_RESPONSE_TIMEOUT環境変数を に設定する必要があります500

次の例は、これらの関数を使用して SageMaker Python SDK を使用してコンパイルされたモデルをデプロイする方法を示しています。

from sagemaker.serve import ModelBuilder # V3 uses a unified ModelBuilder approach for all frameworks model_builder = ModelBuilder( s3_model_data_url='insert S3 path of compiled model archive', role_arn='AmazonSageMaker-ExecutionRole', instance_type='ml.p3.2xlarge', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.p3.2xlarge' ) # Print the name of newly created endpoint print(endpoint.endpoint_name)
注記

AmazonSageMaker-ExecutionRole IAM ロールに AmazonSageMakerFullAccess ポリシーと AmazonS3ReadOnlyAccess ポリシーをアタッチする必要があります。

Boto3、SageMaker コンソール、または CLI を使って TensorFlow モデルをコンパイルした場合

モデルオブジェクトを作成し、デプロイを呼び出します。

from sagemaker.serve import ModelBuilder model_builder = ModelBuilder( s3_model_data_url='S3 path for model file', role_arn=role, instance_type='ml.c5.xlarge', ) endpoint = model_builder.build().deploy( initial_instance_count=1, instance_type='ml.c5.xlarge' )

詳細については、「モデルアーティファクトから直接デプロイする」を参照してください。

こちらのリストから、ニーズを満たす Docker イメージの Amazon ECR URI を選択できます。

TensorFlowModel オブジェクトを構築する方法については、SageMaker SDK を参照してください。

注記

モデルを GPU にデプロイした場合、最初の推論リクエストではレイテンシーが高くなる可能性があります。これは、最初の推論リクエストで最適化されたコンピューティングカーネルが作成されるためです。TFX にモデルファイル送る前に、推論リクエストのウォームアップファイルを作成し、モデルファイルと一緒に保存しておくことを推奨します。これをモデルの「ウォームアップ」と呼びます。

次のコードスニペットは、前提条件セクションにあるイメージ分類の例のためにウォームアップファイルを作成する方法を示しています。

import tensorflow as tf from tensorflow_serving.apis import classification_pb2 from tensorflow_serving.apis import inference_pb2 from tensorflow_serving.apis import model_pb2 from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_log_pb2 from tensorflow_serving.apis import regression_pb2 import numpy as np with tf.python_io.TFRecordWriter("tf_serving_warmup_requests") as writer: img = np.random.uniform(0, 1, size=[224, 224, 3]).astype(np.float32) img = np.expand_dims(img, axis=0) test_data = np.repeat(img, 1, axis=0) request = predict_pb2.PredictRequest() request.model_spec.name = 'compiled_models' request.model_spec.signature_name = 'serving_default' request.inputs['Placeholder:0'].CopyFrom(tf.compat.v1.make_tensor_proto(test_data, shape=test_data.shape, dtype=tf.float32)) log = prediction_log_pb2.PredictionLog( predict_log=prediction_log_pb2.PredictLog(request=request)) writer.write(log.SerializeToString())

モデルを「ウォームアップ」する方法の詳細については、TensorFlow TFX のページを参照してください。