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.
Conditions préalables
Note
Suivez les instructions de cette section si vous avez compilé votre modèle à l'aide de AWS SDK pour Python (Boto3) AWS CLI, ou de la console SageMaker AI.
Pour créer un SageMaker Neo-compiled modèle, vous avez besoin des éléments suivants :
-
Un URI Amazon ECR d'image Docker. 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 les modèles MXNet :
Si vous avez entraîné votre modèle à l'aide de l' SageMaker IA, 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 MNIST Training, Compilation and Deployment with MXNet Module and SageMaker Neo
, le script de formation ( mnist.py) implémente les fonctions requises.Si vous n'avez pas entraîné votre modèle à l'aide de l' SageMaker IA, vous devez fournir un fichier script de point d'entrée (
inference.py) qui peut être utilisé au moment de l'inférence. Selon le framework (MXNet ou), l'emplacement du script d' PyTorchinférence doit être conforme à la structure de répertoire modèle du SDK SageMaker Python pour ou à la structure de répertoire modèle pour MxNet. PyTorch Lorsque vous utilisez des images de conteneur optimisées pour Neo Inference avec PyTorch et MXNet sur des types d'instances CPU et GPU, 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_fnde sorte à combinerinput_fn,predict_fnetoutput_fn.
Voici des exemples de
inference.pyscript dans un répertoire nommécode(code/inference.py) pour PyTorch et MXNet (Gluon et Module). Les exemples chargent d'abord le modèle, puis le servent 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 Inference-optimized conteneurs Neo ou les types d'instances d'inférence, le script du point d'entrée doit implémenter les fonctions suivantes pour Neo Deep Learning Runtime :
-
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, consultez 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.pyutilisable au moment de l'inférence. Le script doit mettre en œuvre une paire de fonctionsinput_handleretoutput_handlerou une seule fonction de gestionnaire.Note
Veuillez noter que si la fonction de gestionnaire est mise en œuvre,
input_handleretoutput_handlersont ignorées.Voici un exemple de code de script
inference.pyque 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 client SageMaker AI envoie le fichier image en tant que type deapplication/x-imagecontenu à lainput_handlerfonction, où il est converti au format JSON. Le fichier image converti est ensuite envoyé au serveur de modèles Tensorflow (TFX)à l'aide de l'API REST. 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_typeS'il n'y a pas de pré-traitement ou de post-traitement personnalisé, le client SageMaker AI convertit l'image du fichier en JSON de la même manière avant de l'envoyer au point de terminaison SageMaker AI.
Pour plus d'informations, consultez la section Déploiement sur TensorFlow des points de terminaison du SDK SageMaker
Python.
-
-
L'URI du compartiment Amazon S3 qui contient les artefacts du modèle compilé.