Stellen Sie ein kompiliertes Modell bereit mit SageMaker SDK - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Stellen Sie ein kompiliertes Modell bereit mit SageMaker SDK

Sie müssen den Abschnitt mit den Voraussetzungen erfüllen, wenn das Modell mit AWS SDK for Python (Boto3) AWS CLI, oder der SageMaker Amazon-Konsole kompiliert wurde. Folgen Sie einem der folgenden Anwendungsfälle, um ein mit SageMaker Neo kompiliertes Modell bereitzustellen, das auf der Art und Weise basiert, wie Sie Ihr Modell kompiliert haben.

Wenn Sie Ihr Modell mit dem kompiliert haben SageMaker SDK

Das Objekthandle sagemaker.Model für das kompilierte Modell liefert die Funktion deploy(), mit der Sie einen Endpunkt für Inferenzanforderungen erstellen können. Die Funktion ermöglicht es Ihnen, die Anzahl der Instances und Instance-Typen festzulegen, die für den Endpunkt verwendet werden. Sie müssen eine Instance wählen, für die Sie Ihr Modell kompiliert haben. In dem Job, der im Abschnitt Compile a Model (Amazon SageMaker SDK) kompiliert wurde, ist dies beispielsweiseml_c5.

predictor = compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.c5.4xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)

Wenn Sie Ihr Modell mit MXNet oder kompiliert haben PyTorch

Erstellen Sie das SageMaker Modell und stellen Sie es mithilfe von deploy () API unter dem Framework-spezifischen Modell bereit. APIs Denn MXNet es ist MXNetModelund für PyTorch, es ist. PyTorchModel Wenn Sie ein SageMaker Modell erstellen und bereitstellen, müssen Sie die MMS_DEFAULT_RESPONSE_TIMEOUT Umgebungsvariable auf festlegen 500 und den entry_point Parameter als Inferenzskript (inference.py) und den source_dir Parameter als Verzeichnispfad (code) des Inferenzskripts angeben. Um das Inferenzskript (inference.py) vorzubereiten, folgen Sie dem Schritt Voraussetzungen.

Das folgende Beispiel zeigt, wie Sie diese Funktionen verwenden, um ein kompiliertes Modell mithilfe von SageMaker SDK for Python bereitzustellen:

MXNet
from sagemaker.mxnet import MXNetModel # Create SageMaker model and deploy an endpoint sm_mxnet_compiled_model = MXNetModel( model_data='insert S3 path of compiled MXNet model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.8.0', py_version='py3', image_uri='insert appropriate ECR Image URI for MXNet', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) # Replace the example instance_type below to your preferred instance_type predictor = sm_mxnet_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
PyTorch 1.4 and Older
from sagemaker.pytorch import PyTorchModel # Create SageMaker model and deploy an endpoint sm_pytorch_compiled_model = PyTorchModel( model_data='insert S3 path of compiled PyTorch model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.4.0', py_version='py3', image_uri='insert appropriate ECR Image URI for PyTorch', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) # Replace the example instance_type below to your preferred instance_type predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
PyTorch 1.5 and Newer
from sagemaker.pytorch import PyTorchModel # Create SageMaker model and deploy an endpoint sm_pytorch_compiled_model = PyTorchModel( model_data='insert S3 path of compiled PyTorch model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.5', py_version='py3', image_uri='insert appropriate ECR Image URI for PyTorch', ) # Replace the example instance_type below to your preferred instance_type predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
Anmerkung

Die AmazonS3ReadOnlyAccess Richtlinien AmazonSageMakerFullAccess und müssen der AmazonSageMaker-ExecutionRole IAM Rolle angehängt werden.

Wenn Sie Ihr Modell mit Boto3, der SageMaker Konsole oder dem for kompiliert haben CLI TensorFlow

Konstruieren Sie ein TensorFlowModel Objekt und rufen Sie anschließend deploy auf:

role='AmazonSageMaker-ExecutionRole' model_path='S3 path for model file' framework_image='inference container arn' tf_model = TensorFlowModel(model_data=model_path, framework_version='1.15.3', role=role, image_uri=framework_image) instance_type='ml.c5.xlarge' predictor = tf_model.deploy(instance_type=instance_type, initial_instance_count=1)

Weitere Informationen finden Sie unter Direktes Deployment aus Modellartefakten.

Sie können aus dieser Liste ein Docker-Image von Amazon auswählen ECRURI, das Ihren Anforderungen entspricht.

Weitere Informationen zum Konstruieren eines TensorFlowModel Objekts finden Sie unter SageMaker SDK.

Anmerkung

Ihre erste Inferenzanforderung kann eine hohe Latenz aufweisen, wenn Sie Ihr Modell auf einem GPU bereitstellen. Dies liegt daran, dass bei der ersten Inferenzanforderung ein optimierter Rechenkern erstellt wird. Wir empfehlen Ihnen, eine Aufwärmdatei mit Inferenzanfragen zu erstellen und diese zusammen mit Ihrer Modelldatei zu speichern, bevor Sie sie an a senden. TFX Dies wird als „Aufwärmen“ des Modells bezeichnet.

Der folgende Codeausschnitt zeigt im Abschnitt mit den Voraussetzungen, wie die Aufwärmdatei für die Bildklassifizierung erstellt wird:

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())

Weitere Informationen zum „Aufwärmen“ Ihres Modells finden Sie auf der Seite. TensorFlow TFX