Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Prerequisiti
Nota
Segui le istruzioni in questa sezione se hai compilato il tuo modello utilizzando AWS SDK for Python (Boto3), AWS CLI o la console AI. SageMaker
Per creare un SageMaker Neo-compiled modello, è necessario quanto segue:
-
Un'immagine Docker, un URI Amazon ECR. Puoi selezionarne uno che soddisfi le tue esigenze da questo elenco.
-
Un file di script del punto di ingresso:
-
Modelli PyTorch For e MXNet:
Se hai addestrato il tuo modello utilizzando l' SageMaker intelligenza artificiale, lo script di addestramento deve implementare le funzioni descritte di seguito. Lo script di addestramento funge da script del punto di ingresso durante l'inferenza. Nell'esempio dettagliato in MNIST Training, Compilation and Deployment with MXNet Module e SageMaker Neo
, lo script di training ( mnist.py) implementa le funzioni richieste.Se non hai addestrato il tuo modello utilizzando l' SageMaker intelligenza artificiale, devi fornire un file script (
inference.py) con punto di ingresso che può essere utilizzato al momento dell'inferenza. In base al framework (MXNET o), la posizione dello script di inferenza deve essere conforme PyTorch alla struttura di directory del modello SageMaker Python SDK per o alla struttura della directory del modello per. MxNetPyTorch Quando si utilizzano immagini Neo Inference Optimized Container con PyTorch e MXNet su tipi di istanza CPU e GPU, lo script di inferenza deve implementare le seguenti funzioni:
-
model_fn: carica il modello. (Facoltativo) -
input_fn: converte il payload della richiesta in entrata in una matrice numpy. -
predict_fn: esegue la previsione. -
output_fn: converte l'output della previsione nel payload di risposta. -
In alternativa, puoi definire
transform_fnper combinareinput_fn,predict_fneoutput_fn.
I seguenti sono esempi di
inference.pyscript all'interno di una directory denominatacode(code/inference.py) for PyTorch e MXNet (Gluon and Module). Gli esempi caricano prima il modello e quindi lo utilizzano su dati di immagine su una GPU: -
-
Per istanze inf1 o immagini di container onnx, xgboost, keras
Per tutte le altre immagini del Inference-optimized contenitore Neo, o tipi di istanze inferentia, lo script del punto di ingresso deve implementare le seguenti funzioni per Neo Deep Learning Runtime:
-
neo_preprocess: converte il payload della richiesta in entrata in una matrice numpy. -
neo_postprocess: converte l'output di previsione di Neo Deep Learning Runtime nel corpo della risposta.Nota
Le due funzioni precedenti non utilizzano nessuna delle funzionalità di MXNet,, o. PyTorch TensorFlow
Per esempi su come usare queste funzioni, vedi Notebook di esempio di compilazione del modello Neo.
-
-
Per i modelli TensorFlow
Se il modello richiede una logica di pre e post elaborazione personalizzata prima che i dati vengano inviati al modello, devi specificare un file di script
inference.pydel punto di ingresso che possa essere utilizzato al momento dell'inferenza. Lo script deve implementare una coppia di funzioniinput_handlereoutput_handlero una singola funzione di gestore.Nota
Nota che se la funzione di gestore è implementata
input_handlereoutput_handlervengono ignorati.Di seguito è riportato un esempio di codice di script
inference.pyche è possibile combinare con il modello di compilazione per eseguire la pre e post elaborazione personalizzata su un modello di classificazione delle immagini. Il client SageMaker AI invia il file di immagine come tipo diapplication/x-imagecontenuto allainput_handlerfunzione, dove viene convertito in JSON. Il file di immagine convertito viene quindi inviato al Tensorflow Model Server (TFX)mediante 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_typeSe non c'è alcuna pre-elaborazione o post-elaborazione personalizzata, il client SageMaker AI converte l'immagine del file in JSON in modo simile prima di inviarla all'endpoint AI. SageMaker
Per ulteriori informazioni, consulta Deploying to TensorFlow Serving Endpoints nell'SDK Python. SageMaker
-
-
L'URI del bucket Amazon S3 che contiene gli artefatti del modello compilato.