

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á.

# Implante a lógica de pré-processamento em um modelo de ML em um único endpoint usando um pipeline de inferência na Amazon SageMaker
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker"></a>

*Mohan Gowda Purushothama, Gabriel Rodriguez Garcia e Mateusz Zaremba, Amazon Web Services*

## Resumo
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-summary"></a>

Esse padrão explica como implantar vários objetos de modelo de pipeline em um único endpoint usando um [pipeline de inferência](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) na Amazon. SageMaker O objeto do modelo de pipeline representa diferentes estágios do fluxo de trabalho de machine learning (ML), como pré-processamento, inferência de modelos e pós-processamento. [Para ilustrar a implantação de objetos de modelo de pipeline conectados em série, esse padrão mostra como implantar um contêiner [Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/sklearn.html) de pré-processamento e um modelo de regressão baseado no algoritmo linear do aluno incorporado.](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) SageMaker A implantação é hospedada por trás de um único endpoint em SageMaker.

**nota**  
A implantação neste padrão usa o tipo de instância ml.m4.2xlarge. Recomendamos usar um tipo de instância que se alinhe aos seus requisitos de tamanho de dados e à complexidade do seu fluxo de trabalho. Para obter mais informações, consulte [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/). Esse padrão usa [imagens do Docker pré-construídas para o Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-docker-containers-scikit-learn-spark.html), mas você pode usar seus próprios contêineres do Docker e integrá-los ao seu fluxo de trabalho.

## Pré-requisitos e limitações
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)
+ [SDK para Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) [e biblioteca Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Função do AWS Identity and Access Management (AWS IAM) com [permissões](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) básicas e SageMaker [permissões](https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html) do Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)

**Versões do produto**
+ [SDK 2.49.2 para Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/v2.49.2/)

## Arquitetura
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon SageMaker
+  SageMaker Estúdio Amazon
+ Amazon Simple Storage Service (Amazon S3)
+ Endpoint de [inferência em tempo real](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) para a Amazon SageMaker

**Arquitetura de destino**

O diagrama a seguir mostra a arquitetura para a implantação de um objeto de modelo de SageMaker pipeline da Amazon.

![Arquitetura para implantação do objeto de modelo de SageMaker pipeline](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/1105d51b-752f-46d7-962c-acef1fb3399f/images/12f06715-b1c2-4de0-b277-99ce87308152.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um SageMaker notebook implanta um modelo de pipeline.

1. Um bucket do S3 armazena os artefatos do modelo.

1. O Amazon ECR obtém as imagens do contêiner de origem do bucket do S3.

## Ferramentas
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-tools"></a>

**Ferramentas da AWS**
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+  SageMakerA [Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) é um serviço gerenciado de ML que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção.
+ O [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) é um ambiente de desenvolvimento integrado (IDE) baseado na web para ML que permite criar, treinar, depurar, implantar e monitorar seus modelos de ML.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Código **

O código desse padrão está disponível no GitHub [Inference Pipeline com o repositório Scikit-learn e Linear](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.ipynb) Learner.

## Épicos
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-epics"></a>

### Prepare o conjunto de dados
<a name="prepare-the-dataset"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Prepare o conjunto de dados para sua tarefa de regressão. | [Abra um caderno](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-open) no Amazon SageMaker Studio.<br />Para importar todas as bibliotecas necessárias e inicializar seu ambiente de trabalho, use o código de exemplo a seguir em seu notebook:<pre>import sagemaker<br />from sagemaker import get_execution_role<br /><br />sagemaker_session = sagemaker.Session()<br /><br /># Get a SageMaker-compatible role used by this Notebook Instance.<br />role = get_execution_role()<br /><br /># S3 prefix<br />bucket = sagemaker_session.default_bucket()<br />prefix = "Scikit-LinearLearner-pipeline-abalone-example"</pre><br />Para baixar um conjunto de dados de exemplo, adicione o seguinte código ao seu caderno:<pre>! mkdir abalone_data<br />! aws s3 cp s3://sagemaker-sample-files/datasets/tabular/uci_abalone/abalone.csv ./abalone_data</pre>** **O exemplo neste padrão usa o [Abalone Data Set](https://archive.ics.uci.edu/ml/datasets/abalone) do UCI Machine Learning Repository. | Cientista de dados | 
| Faça upload do conjunto de dados em um bucket do S3. | No caderno em que você preparou seu conjunto de dados anteriormente, adicione o código a seguir para carregar seus dados de amostra em um bucket do S3:<pre>WORK_DIRECTORY = "abalone_data"<br /><br />train_input = sagemaker_session.upload_data(<br />    path="{}/{}".format(WORK_DIRECTORY, "abalone.csv"),<br />    bucket=bucket,<br />    key_prefix="{}/{}".format(prefix, "train"),<br />)</pre> | Cientista de dados | 

### Crie o pré-processador de dados usando SKLearn
<a name="create-the-data-preprocessor-using-sklearn"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Prepare o script preprocessor.py. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.html) | Cientista de dados | 
| Crie o objeto do SKLearn pré-processador. | Para criar um objeto SKLearn pré-processador (chamado SKLearn Estimator) que você possa incorporar ao seu pipeline de inferência final, execute o seguinte código em seu notebook: SageMaker <pre>from sagemaker.sklearn.estimator import SKLearn<br /><br />FRAMEWORK_VERSION = "0.23-1"<br />script_path = "sklearn_abalone_featurizer.py"<br /><br />sklearn_preprocessor = SKLearn(<br />    entry_point=script_path,<br />    role=role,<br />    framework_version=FRAMEWORK_VERSION,<br />    instance_type="ml.c4.xlarge",<br />    sagemaker_session=sagemaker_session,<br />)<br />sklearn_preprocessor.fit({"train": train_input})</pre> | Cientista de dados | 
| Teste a inferência do pré-processador. | Para confirmar se seu pré-processador está definido corretamente, inicie um [trabalho de transformação em lote](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) inserindo o seguinte código em seu SageMaker notebook:<pre># Define a SKLearn Transformer from the trained SKLearn Estimator<br />transformer = sklearn_preprocessor.transformer(<br />    instance_count=1, instance_type="ml.m5.xlarge", assemble_with="Line", accept="text/csv"<br />)<br /><br /><br /># Preprocess training input<br />transformer.transform(train_input, content_type="text/csv")<br />print("Waiting for transform job: " + transformer.latest_transform_job.job_name)<br />transformer.wait()<br />preprocessed_train = transformer.output_path</pre> |  | 

### Criar um modelo de machine learning
<a name="create-a-machine-learning-model"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um objeto modelo. | Para criar um objeto de modelo com base no algoritmo linear do aluno, insira o seguinte código em seu SageMaker caderno:<pre>import boto3<br />from sagemaker.image_uris import retrieve<br /><br />ll_image = retrieve("linear-learner", boto3.Session().region_name)<br />s3_ll_output_key_prefix = "ll_training_output"<br />s3_ll_output_location = "s3://{}/{}/{}/{}".format(<br />    bucket, prefix, s3_ll_output_key_prefix, "ll_model"<br />)<br /><br />ll_estimator = sagemaker.estimator.Estimator(<br />    ll_image,<br />    role,<br />    instance_count=1,<br />    instance_type="ml.m4.2xlarge",<br />    volume_size=20,<br />    max_run=3600,<br />    input_mode="File",<br />    output_path=s3_ll_output_location,<br />    sagemaker_session=sagemaker_session,<br />)<br /><br />ll_estimator.set_hyperparameters(feature_dim=10, predictor_type="regressor", mini_batch_size=32)<br /><br />ll_train_data = sagemaker.inputs.TrainingInput(<br />    preprocessed_train,<br />    distribution="FullyReplicated",<br />    content_type="text/csv",<br />    s3_data_type="S3Prefix",<br />)<br /><br />data_channels = {"train": ll_train_data}<br />ll_estimator.fit(inputs=data_channels, logs=True)</pre><br />O código anterior recupera a imagem do Docker do Amazon ECR do Registro público do Amazon ECR para o modelo, cria um objeto estimador e, em seguida, usa esse objeto para treinar o modelo de regressão. | Cientista de dados | 

### Implanta o pipeline final
<a name="deploy-the-final-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implantar o modelo de pipeline. | Para criar um objeto de modelo de pipeline (ou seja, um objeto de pré-processador) e implantar o objeto, insira o seguinte código em seu SageMaker notebook:<pre>from sagemaker.model import Model<br />from sagemaker.pipeline import PipelineModel<br />import boto3<br />from time import gmtime, strftime<br /><br />timestamp_prefix = strftime("%Y-%m-%d-%H-%M-%S", gmtime())<br /><br />scikit_learn_inferencee_model = sklearn_preprocessor.create_model()<br />linear_learner_model = ll_estimator.create_model()<br /><br />model_name = "inference-pipeline-" + timestamp_prefix<br />endpoint_name = "inference-pipeline-ep-" + timestamp_prefix<br />sm_model = PipelineModel(<br />    name=model_name, role=role, models= [scikit_learn_inferencee_model, linear_learner_model]<br />)<br /><br />sm_model.deploy(initial_instance_count=1, instance_type="ml.c4.xlarge", endpoint_name=endpoint_name)</pre>É possível ajustar o tipo de instância usado no objeto do modelo para atender às suas necessidades. | Cientista de dados | 
| Teste a inferência | Para confirmar se o endpoint está funcionando corretamente, execute o seguinte exemplo de código de inferência em seu SageMaker notebook:<pre>from sagemaker.predictor import Predictor<br />from sagemaker.serializers import CSVSerializer<br /><br />payload = "M, 0.44, 0.365, 0.125, 0.516, 0.2155, 0.114, 0.155"<br />actual_rings = 10<br />predictor = Predictor(<br />    endpoint_name=endpoint_name, sagemaker_session=sagemaker_session, serializer=CSVSerializer()<br />)<br /><br />print(predictor.predict(payload))</pre> | Cientista de dados | 

## Recursos relacionados
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-resources"></a>
+ [Pré-processe os dados de entrada antes de fazer previsões usando os pipelines de SageMaker inferência da Amazon e o Scikit-learn (blog do AWS](https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/) Machine Learning)
+ [Machine Learning de ponta a ponta com a Amazon SageMaker](https://github.com/aws-samples/amazon-sagemaker-build-train-deploy) (GitHub)