Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Prérequis
Note
Suivez les instructions de cette section si vous avez compilé votre modèle à l'aide de AWS SDK for Python (Boto3) AWS CLI, ou de la SageMaker console.
Pour créer un modèle SageMaker NEO compilé, vous avez besoin des éléments suivants :
-
Une image Docker Amazon ECRURI. Vous pouvez en sélectionner un répondant à vos besoins dans cette liste.
-
Un fichier de script de point d'entrée :
-
Pour PyTorch et MXNet modèles :
Si vous avez entraîné votre modèle en utilisant SageMaker, le script d'entraînement doit implémenter les fonctions décrites ci-dessous. Le script d'entraînement sert de script de point d'entrée pendant l'inférence. Dans l'exemple détaillé dans MNISTEntraînement, compilation et déploiement avec MXNet Module et SageMaker Neo
, le script d'entraînement ( mnist.py
) implémente les fonctions requises.Si vous n'avez pas entraîné votre modèle avec SageMaker, vous devez fournir un fichier de script de point d'entrée (
inference.py
) qui peut être utilisé au moment de l'inférence. Selon le framework MXNet ou le script d'inférence PyTorch, l'emplacement du script d'inférence doit être conforme à la structure de répertoire de SDK modèles SageMaker Python pour MxNet ou à la structurede répertoire de modèles pour PyTorch . Lorsque vous utilisez des images Neo Inference Optimized Container avec PyTorchCPUet MXNetsur des types d'GPUinstance, le script d'inférence doit implémenter les fonctions suivantes :
-
model_fn
: charge le modèle. (Facultatif) -
input_fn
: convertit la charge utile de demande entrante en un tableau numpy. -
predict_fn
: réalise la prédiction. -
output_fn
: convertit la sortie de la prédiction en charge utile de réponse. -
En variante, vous pouvez définir
transform_fn
de sorte à combinerinput_fn
,predict_fn
etoutput_fn
.
Voici des exemples de
inference.py
script dans un répertoire nommécode
(code/inference.py
) for PyTorch et MXNet (Gluon and Module). Les exemples chargent d'abord le modèle, puis le diffusent sur des données d'image sur un GPU : -
-
Pour les instances inf1 ou les images de conteneur onnx, xgboost, keras
Pour toutes les autres images de conteneur optimisées pour l'inférence Neo, ou les types d'instances Inferentia, le script de point d'entrée doit mettre en œuvre les fonctions suivantes pour le Runtime Deep Learning Neo :
-
neo_preprocess
: convertit la charge utile de demande entrante en un tableau numpy. -
neo_postprocess
: convertit la sortie de la prédiction du Runtime Deep Learning Neo dans le corps de la réponse.Note
Les deux fonctions précédentes n'utilisent aucune des fonctionnalités de MXNet PyTorch, ou TensorFlow.
Pour obtenir des exemples d'utilisation de ces fonctions, veuillez consulter Neo Model Compilation Sample Notebooks (Exemples de blocs-notes de compilation de modèles Neo).
-
-
Pour les TensorFlow modèles
Si votre modèle nécessite une logique de pré- et de post-traitement personnalisée avant l'envoi des données au modèle, vous devez spécifier un fichier script de point d'entrée
inference.py
utilisable au moment de l'inférence. Le script doit mettre en œuvre une paire de fonctionsinput_handler
etoutput_handler
ou une seule fonction de gestionnaire.Note
Veuillez noter que si la fonction de gestionnaire est mise en œuvre,
input_handler
etoutput_handler
sont ignorées.Voici un exemple de code de script
inference.py
que vous pouvez assembler avec le modèle de compilation pour effectuer un pré- et un post-traitement personnalisé sur un modèle de classification d'image. Le SageMaker client envoie le fichier image en tant que type deapplication/x-image
contenu à lainput_handler
fonction, où il est convertiJSON. Le fichier image converti est ensuite envoyé au serveur de modèles Tensorflow (TFX)à l'aide du. 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
S'il n'y a pas de prétraitement ou de post-traitement personnalisé, le SageMaker client convertit l'image du fichier de la même JSON manière avant de l'envoyer au SageMaker point de terminaison.
Pour plus d'informations, consultez le Déploiement vers des points TensorFlow de terminaison de service en SageMaker Python SDK
.
-
-
Le compartiment Amazon S3 URI qui contient les artefacts du modèle compilé.