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 AI-Konsole kompiliert haben. SageMaker
Um ein SageMaker NEO-kompiliertes Modell zu erstellen, benötigen Sie Folgendes:
-
Ein Amazon ECR-URI für ein Docker-Image. 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 SageMaker KI trainiert haben, muss das Trainingsskript die unten beschriebenen Funktionen implementieren. Das Trainingsskript dient als Einstiegsskript für Inferenzen. In dem in MNIST Training, 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 SageMaker KI trainiert haben, müssen Sie eine Einstiegspunkt-Skriptdatei (
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 Python SDK Model Directory Structure for MxNet oder Model Directory Structurefor entsprechen. PyTorch Bei der Verwendung von Neo Inference Optimized Container-Images mit PyTorchund MXNetauf CPU- und 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 einer 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 AI-Client sendet die Bilddatei alsapplication/x-image
Inhaltstyp an dieinput_handler
Funktion, wo sie in JSON konvertiert wird. Die konvertierte Bilddatei wird dann mithilfe der REST-API an den Tensorflow Model Server (TFX)gesendet. 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 Nachverarbeitung gibt, konvertiert der SageMaker AI-Client das Dateibild auf ähnliche Weise in JSON, bevor er es an den SageMaker KI-Endpunkt sendet.
Weitere Informationen finden Sie unter Deploying to TensorFlow Serving Endpoints im SageMaker Python-SDK
.
-
-
Die Amazon-S3-Bucket-URI, die die kompilierten Modellartefakte enthält.