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 console de SageMaker IA.
Para criar um modelo SageMaker neocompilado, você precisa do seguinte:
-
Um URI do Amazon ECR de imagem do Docker. 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 IA, 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 Treinamento, compilação e implantação do MNIST 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 IA, 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 Modelo do SDK do SageMaker Python MxNet ou a Estrutura de Diretórios do Modelo para. PyTorch Ao usar imagens do Neo Inference Optimized Container com PyTorche MXNetnos tipos de instância de CPU e GPU, o script de inferência deve implementar as seguintes funções:
-
model_fn
: carrega o modelo. (Opcional) -
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 uma GPU: -
-
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 de MXNet 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 cliente SageMaker AI envia o arquivo de imagem como um tipo deapplication/x-image
conteúdo para ainput_handler
função, onde ele é convertido em JSON. O arquivo de imagem convertido é então enviado para o Tensorflow Model Server (TFX)usando a 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_type
Se não houver pré-processamento ou pós-processamento personalizado, o cliente de SageMaker IA converte a imagem do arquivo em JSON de forma semelhante antes de enviá-la para o SageMaker endpoint de IA.
Para obter mais informações, consulte Implantação em endpoints de TensorFlow serviço no SDK do Python SageMaker
.
-
-
O URI do bucket do Amazon S3 que contém os artefatos do modelo compilado.