Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Requisitos previos
nota
Siga las instrucciones de esta sección si compiló el modelo con AWS SDK for Python (Boto3) AWS CLI, o con la consola. SageMaker
Para crear un modelo SageMaker compilado en NEO, necesita lo siguiente:
-
Una imagen de Docker Amazon ECRURI. Puede seleccionar uno que se adapte a sus necesidades de esta lista.
-
Un archivo de guión de punto de entrada:
-
Para PyTorch y MXNet modelos:
Si entrenó su modelo con SageMaker, el script de entrenamiento debe implementar las funciones que se describen a continuación. El script de entrenamiento sirve como script de punto de entrada durante la inferencia. En el ejemplo detallado en MNISTEntrenamiento, compilación y despliegue con MXNet Module y SageMaker Neo
, el script de entrenamiento ( mnist.py
) implementa las funciones requeridas.Si no entrenó su modelo con él SageMaker, debe proporcionar un archivo script (
inference.py
) de punto de entrada que pueda usarse en el momento de la inferencia. Según el marco, MXNet o PyTorch la ubicación del script de inferencia debe ajustarse a la estructura de directorios del SDK modelo de SageMaker Python para MxNet o la estructurade directorios del modelo para PyTorch . Cuando se utilizan imágenes de contenedor optimizado para inferencias de Neo con tipos de GPU instancia PyTorchCPUy MXNetactivados, el script de inferencia debe implementar las siguientes funciones:
-
model_fn
: Carga el modelo. (Opcional) -
input_fn
: Convierte la carga útil de la solicitud entrante en una matriz numpy. -
predict_fn
: Realiza la predicción. -
output_fn
: Convierte el resultado de la predicción en la carga útil de respuesta. -
Como alternativa, puede
transform_fn
definir la combinacióninput_fn
,predict_fn
youtput_fn
.
Los siguientes son ejemplos de
inference.py
scripts dentro de un directorio denominadocode
(code/inference.py
) for PyTorch y MXNet (Gluon and Module). Los ejemplos cargan primero el modelo y, a continuación, lo muestran en los datos de imagen de unGPU: -
-
Para instancias inf1 o imágenes de contenedor onnx, xgboost o keras
Para todos los demás tipos de instancias de inferencia o imágenes de contenedor optimizadas para inferencias de Neo, el guión de punto de entrada debe implementar las siguientes funciones para tiempo de ejecución de aprendizaje profundo de Neo:
-
neo_preprocess
: Convierte la carga útil de la solicitud entrante en una matriz numpy. -
neo_postprocess
: Convierte el resultado de la predicción de tiempo de ejecución de aprendizaje profundo de Neo en el cuerpo de la respuesta.nota
Las dos funciones anteriores no utilizan ninguna de las funcionalidades deMXNet, PyTorch, o TensorFlow.
Para ver ejemplos de cómo utilizar estas funciones, consulte los cuadernos de ejemplo de compilación de modelos de Neo.
-
-
Para TensorFlow modelos
Si su modelo requiere una lógica personalizada de preprocesamiento y posprocesamiento antes de enviar los datos al modelo, debe especificar un archivo
inference.py
de guión de punto de entrada que pueda usarse en el momento de la inferencia. El script debe implementar un par de funcionesinput_handler
youtput_handler
o una función de controlador único.nota
Tenga en cuenta que si la función de controlador está implementada
input_handler
youtput_handler
se ignoran.El siguiente es un ejemplo de código de un guión
inference.py
que se puede combinar con el modelo de compilación para realizar un procesamiento previo y posterior personalizado en un modelo de clasificación de imágenes. El SageMaker cliente envía el archivo de imagen como un tipo deapplication/x-image
contenido a lainput_handler
función, donde se convierteJSON. Luego, el archivo de imagen convertido se envía al servidor de modelos de Tensorflow (TFX)mediante. 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
Si no hay un procesamiento previo o posterior personalizado, el SageMaker cliente convierte la imagen del archivo de forma similar antes de enviarla al punto final. JSON SageMaker
Para obtener más información, consulte Implementación en puntos finales de TensorFlow servicio en SageMaker Python SDK
.
-
-
El bucket de Amazon S3 URI que contiene los artefactos del modelo compilado.