View a markdown version of this page

Stellen Sie ein kompiliertes Modell mithilfe des SDK SageMaker bereit - Amazon SageMaker KI

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 mithilfe des SDK SageMaker bereit

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

Wenn Sie Ihr Modell mit dem SageMaker SDK kompiliert haben

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 beispielsweise der Fallml_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)

Wenn Sie Ihr Modell mit MXNet kompiliert haben oder PyTorch

Erstellen und implementieren Sie das SageMaker KI-Modell mitModelBuilder. Geben Sie den s3_model_data_url Parameter als S3-Pfad zu Ihrem kompilierten Modellarchiv, den role_arn Parameter als Ihre Ausführungsrolle und den instance_type Parameter für Ihre Zielinstanz an. Sie müssen die MMS_DEFAULT_RESPONSE_TIMEOUT Umgebungsvariable auch auf setzen500.

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

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

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

Wenn Sie Ihr Modell mit Boto3, SageMaker Console oder der CLI für kompiliert haben TensorFlow

Konstruieren Sie ein Modellobjekt und rufen Sie dann deploy auf:

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

Weitere Informationen finden Sie unter Direktes Deployment aus Modellartefakten.

Sie können aus dieser Liste einen Amazon ECR-URI für ein Docker-Image auswählen, der Ihren Anforderungen entspricht.

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

Anmerkung

Ihre erste Inferenzanforderung kann eine hohe Latenz haben, wenn Sie Ihr Modell auf einer 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 ein TFX senden. 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 TensorFlow TFX-Seite.