As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Pré-requisitos
nota
Siga as instruções nesta seção se você compilou seu modelo usando AWS SDK for Python (Boto3) AWS CLI, ou o SageMaker console.
Para criar um modelo SageMaker neocompilado, você precisa do seguinte:
-
Uma imagem Docker da Amazon ECRURI. Você pode selecionar um que atenda às suas necessidades nesta lista.
-
Um arquivo de script de ponto de entrada:
-
Para PyTorch e MXNet modelos:
Se você treinou seu modelo usando SageMaker, o script de treinamento deve implementar as funções descritas abaixo. O script de treinamento serve como o script de ponto de entrada durante a inferência. No exemplo detalhado em MNISTTreinamento, compilação e implantação com MXNet módulo e SageMaker Neo, o
script de treinamento ( mnist.py
) implementa as funções necessárias.Se você não treinou seu modelo usando SageMaker, precisará fornecer um arquivo script (
inference.py
) de ponto de entrada que possa ser usado no momento da inferência. Com base na estrutura — MXNet ou PyTorch — a localização do script de inferência deve estar em conformidade com a Estrutura de Diretórios do SDK Modelo SageMaker Python para MxNet ou a Estrutura de Diretórios do Modelopara . PyTorch Ao usar imagens do Neo Inference Optimized Container com PyTorche MXNeton CPU e tipos de GPU instância, o script de inferência deve implementar as seguintes funções:
-
model_fn
: carrega o modelo. (Optional) -
input_fn
: converte a carga útil da solicitação recebida em uma matriz numérica. -
predict_fn
: executa a previsão. -
output_fn
: converte a saída de previsão na carga útil de resposta. -
Como alternativa, você pode definir
transform_fn
para combinarinput_fn
,predict_fn
eoutput_fn
.
Veja a seguir exemplos de
inference.py
script em um diretório chamadocode
(code/inference.py
) for PyTorch and MXNet (Gluon and Module). Os exemplos primeiro carregam o modelo e depois o servem em dados de imagem em umGPU: -
-
Para instâncias inf1 ou imagens de contêiner onnx, xgboost e keras
Para todas as outras imagens de contêiner otimizadas pelo Neo Inference ou tipos de instância de inferência, o script de ponto de entrada deve implementar as seguintes funções para o Neo Deep Learning Runtime:
-
neo_preprocess
: converte a carga útil da solicitação recebida em uma matriz numérica. -
neo_postprocess
: converte a saída de previsão do Neo Deep Learning Runtime no corpo da resposta.nota
As duas funções anteriores não usam nenhuma das funcionalidades deMXNet, PyTorch, ou. TensorFlow
Para obter exemplos de como usar essas funções, consulte Blocos de anotações de amostra de compilação de modelos Neo.
-
-
Para TensorFlow modelos
Se seu modelo exigir uma lógica personalizada de pré e pós-processamento antes que os dados sejam enviados ao modelo, você deverá especificar um arquivo de script
inference.py
de ponto de entrada que possa ser usado no momento da inferência. O script deve implementar um par de funçõesinput_handler
eoutput_handler
ou uma única função de manipulador.nota
Observe que, se a função do manipulador for implementada,
input_handler
eoutput_handler
são ignoradas.Veja a seguir um exemplo de código de script
inference.py
que você pode montar com o modelo de compilação para realizar o pré-processamento e o pós-processamento personalizados em um modelo de classificação de imagens. O SageMaker cliente envia o arquivo de imagem como um tipo deapplication/x-image
conteúdo para ainput_handler
função, na qual ele é convertidoJSON. O arquivo de imagem convertido é então enviado para o Tensorflow Model Server (TFX)usando o. 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
Se não houver pré-processamento ou pós-processamento personalizado, o SageMaker cliente converte a imagem do arquivo JSON em uma forma semelhante antes de enviá-la para o SageMaker endpoint.
Para obter mais informações, consulte Implantação para TensorFlow servir endpoints no Python SageMaker
. SDK
-
-
O bucket do Amazon S3 URI que contém os artefatos do modelo compilado.