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.
Voraussetzungen
Anmerkung
Folgen Sie den Anweisungen in diesem Abschnitt, wenn Sie Ihr Modell mit AWS SDK for Python (Boto3), AWS CLI oder der Konsole kompiliert haben. SageMaker
Um ein SageMaker NEO-kompiliertes Modell zu erstellen, benötigen Sie Folgendes:
-
Ein Docker-Image von Amazon ECRURI. Sie können aus dieser Liste eine auswählen, die Ihren Anforderungen entspricht.
-
Eine Eintrittspunkt-Skriptdatei:
-
Für PyTorch und MXNet Modelle:
Wenn Sie Ihr Modell mit trainiert haben SageMaker, muss das Trainingsskript die unten beschriebenen Funktionen implementieren. Das Trainingsskript dient als Einstiegsskript für Inferenzen. In dem unter MNISTTraining, Compilation and Deployment with MXNet Module and SageMaker Neo
beschriebenen Beispiel implementiert das Trainingsskript ( mnist.py
) die erforderlichen Funktionen.Wenn Sie Ihr Modell nicht mit trainiert haben SageMaker, müssen Sie eine Einstiegspunktskriptdatei (
inference.py
) bereitstellen, die zum Zeitpunkt der Inferenz verwendet werden kann. Basierend auf dem Framework — MXNet oder PyTorch — muss der Speicherort des Inferenzskripts der SageMaker SDK Python-Modellverzeichnisstruktur für MxNet oder der Modellverzeichnisstrukturfür entsprechen. PyTorch Bei der Verwendung von für Neo Inference optimierten Container-Images mit PyTorchCPUund MXNetauf GPU Instanztypen muss das Inferenzskript die folgenden Funktionen implementieren:
-
model_fn
: Lädt das Modell. (Optional) -
input_fn
: Konvertiert die Nutzdaten der eingehenden Anfrage in ein Numpy-Array. -
predict_fn
: Führt die Vorhersage durch. -
output_fn
: Konvertiert die Vorhersageausgabe in die Antwortnutzlast. -
Alternativ können Sie
transform_fn
so definieren, dassinput_fn
,predict_fn
undoutput_fn
kombiniert werden sollen.
Im Folgenden finden Sie Beispiele für
inference.py
Skripte in einem Verzeichnis mit dem Namencode
(code/inference.py
) für PyTorch und MXNet (Gluon und Module). Die Beispiele laden zuerst das Modell und stellen es dann für Bilddaten auf einem GPU bereit: -
-
Für inf1-Instances oder Onnx-, Xgboost- und Keras-Container-Images
Für alle anderen für Neo Inference optimierten Container-Images oder Inferentia-Instance-Typen muss das Eingangspunkt-Skript die folgenden Funktionen für Neo Deep Learning Laufzeit implementieren:
-
neo_preprocess
: Konvertiert die Nutzdaten der eingehenden Anfrage in ein Numpy-Array. -
neo_postprocess
: Konvertiert die Vorhersageausgabe von Neo Deep Learning Laufzeit in den Antworttext.Anmerkung
Die beiden vorherigen Funktionen verwenden keine der Funktionen von MXNet PyTorch, oder TensorFlow.
Beispiele für die Verwendung dieser Funktionen finden Sie unter Neo Model Compilation Sample Notebooks.
-
-
Für TensorFlow Modelle
Wenn Ihr Modell eine benutzerdefinierte Vor- und Nachverarbeitungslogik erfordert, bevor Daten an das Modell gesendet werden, müssen Sie eine Eintrittspunkt-Skript
inference.py
-Datei angeben, die zum Zeitpunkt der Inferenz verwendet werden kann. Das Skript sollte entweder ein Paar von –input_handler
undoutput_handler
-Funktionen oder eine einzelne Handler-Funktion implementieren.Anmerkung
Beachten Sie, dass wenn die Handler-Funktion implementiert ist,
input_handler
undoutput_handler
ignoriert werden.Im Folgenden finden Sie ein Codebeispiel für ein
inference.py
Skript, das Sie zusammen mit dem Kompilierungsmodell zusammenstellen können, um eine benutzerdefinierte Vor- und Nachbearbeitung eines Bildklassifizierungsmodells durchzuführen. Der SageMaker Client sendet die Bilddatei alsapplication/x-image
Inhaltstyp an dieinput_handler
Funktion, in die sie konvertiert wirdJSON. Die konvertierte Bilddatei wird dann mit dem an den Tensorflow Model Server (TFX)gesendet. REST API import json import numpy as np import json import io from PIL import Image def input_handler(data, context): """ Pre-process request input before it is sent to TensorFlow Serving REST API Args: data (obj): the request data, in format of dict or string context (Context): an object containing request and configuration details Returns: (dict): a JSON-serializable dict that contains request body and headers """ f = data.read() f = io.BytesIO(f) image = Image.open(f).convert('RGB') batch_size = 1 image = np.asarray(image.resize((512, 512))) image = np.concatenate([image[np.newaxis, :, :]] * batch_size) body = json.dumps({"signature_name": "serving_default", "instances": image.tolist()}) return body def output_handler(data, context): """Post-process TensorFlow Serving output before it is returned to the client. Args: data (obj): the TensorFlow serving response context (Context): an object containing request and configuration details Returns: (bytes, string): data to return to client, response content type """ if data.status_code != 200: raise ValueError(data.content.decode('utf-8')) response_content_type = context.accept_header prediction = data.content return prediction, response_content_type
Wenn es keine benutzerdefinierte Vor- oder Nachbearbeitung gibt, konvertiert der SageMaker Client das Dateibild auf JSON ähnliche Weise, bevor er es an den Endpunkt sendet. SageMaker
Weitere Informationen finden Sie unter Deploying to TensorFlow Serving Endpoints in SageMaker Python SDK
.
-
-
Der Amazon S3 S3-BucketURI, der die kompilierten Modellartefakte enthält.