

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

# Configurar a saída de inferência em contêineres gerados
<a name="autopilot-automate-model-development-container-output"></a>

O Autopilot gera uma lista [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html) ordenada. Isso pode ser usado para criar um modelo a ser implantado em um pipeline de machine learning. Esse modelo pode ser usado para hospedagem e inferência online. 

Os clientes podem listar as definições de contêiner de inferência com a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html). A lista de definições de contêiner de inferência que representam o melhor candidato também está disponível na resposta [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html).

## Definições de contêiner de inferência para tipos de problemas de regressão e classificação
<a name="autopilot-problem-type-container-output"></a>

O Autopilot gera contêineres de inferência específicos para o [modo de treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode) e o [tipo de problema](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types) do trabalho.

### Definições de contêiner para o modo de otimização de hiperparâmetros (HPO)
<a name="autopilot-problem-type-container-output-hpo"></a>
+ **Regressão**: o HPO gera dois contêineres:

  1. Um contêiner de engenharia de atributos que transforma os atributos originais em atributos nos quais os algoritmos de regressão podem treinar.

  1. Um contêiner de algoritmo que transforma atributos e gera uma pontuação de regressão para o conjunto de dados.
+ **Classificação**: O HPO gera três contêineres:

  1. Um contêiner de engenharia de atributos que transforma os atributos originais em atributos nos quais os algoritmos de classificação podem treinar.

  1. Um contêiner de algoritmo que gera o `predicted_label` com a maior probabilidade. Esse contêiner também pode produzir as várias probabilidades associadas aos resultados da classificação na resposta de inferência.

  1. Um contêiner de engenharia de atributos que realiza o pós-processamento da predição do algoritmo. Por exemplo, ele pode realizar uma transformação inversa na etiqueta prevista e alterá-la para a etiqueta original. 

### Definições de contêiner para o modo de agrupamento
<a name="autopilot-problem-type-container-output-ensemble"></a>

No modo de agrupamento, os tipos de problemas de regressão e classificação têm apenas um contêiner de inferência. Esse contêiner de inferência transforma os atributos e gera as predições com base no tipo de problema. 

## Respostas de inferência por tipo de problema
<a name="autopilot-problem-type-inference-response"></a>

### Respostas de inferência para modelos de classificação
<a name="autopilot-problem-type-inference-response-classification"></a>

Para contêineres de inferência de classificação, você pode selecionar o conteúdo da resposta de inferência usando quatro chaves predefinidas:
+ `predicted_label`: O rótulo com a maior probabilidade de prever o rótulo correto, conforme determinado pelo Autopilot.
+ `probability`: 
  + **Modelos HPO:** a probabilidade da `True` classe para classificação binária. A probabilidade de `predicted_label` para a classificação multiclasse.
  + **Modelos de conjunto:** a probabilidade de `predicted_label` para a classificação binária e multiclasse.
+ `probabilities`: A lista de probabilidades para todas as classes correspondentes.
+ `labels`: A lista de todos os rótulos.

Por exemplo, para um problema de classificação binária, se você passar as chaves de resposta de inferência `['predicted_label', 'probability', 'probabilities', 'labels']` e a resposta de saída aparecer como `[1, 0.1, "[0.9, 0.1]", "['1', '0']"]`, interprete-a da seguinte forma:

1. `predicted_label` é igual a `1` porque o rótulo "1" tem uma probabilidade maior (`0.9` neste caso).

1. Para modelos HPO, `probability` é igual a `0.1` qual é a probabilidade da `positive_class` (`0` neste caso) selecionada pelo Autopilot.

   Para modelos de conjunto, é `probability` igual a `0.9` qual é a probabilidade do `predicted_label`.

1. `probabilities` lista o `probability` de cada etiqueta em `labels`.

1. `labels` são os rótulos exclusivos no conjunto de dados, em que o segundo rótulo (“0” nesse caso) é o `positive_class` selecionado pelo Autopilot.

Por padrão, os contêineres de inferência são configurados para gerar somente o `predicted_label`. Para selecionar conteúdo adicional de inferência, você pode atualizar o `inference_response_keys` parâmetro para incluir até essas três variáveis de ambiente:
+ `SAGEMAKER_INFERENCE_SUPPORTED`: isso é configurado para fornecer dicas sobre o conteúdo que cada contêiner é compatível com.
+ `SAGEMAKER_INFERENCE_INPUT`: isso deve ser definido para as chaves que o contêiner espera na carga útil de entrada.
+ `SAGEMAKER_INFERENCE_OUTPUT`: deve ser preenchido com o conjunto de chaves que o contêiner gera.

### Respostas de inferência para modelos de classificação no modo HPO
<a name="autopilot-problem-type-inference-response-classification-hpo"></a>

Esta seção mostra como configurar a resposta de inferência de modelos de classificação usando o modo de otimização de hiperparâmetros (HPO).

Para escolher o conteúdo da resposta de inferência no modo HPO: adicione as `SAGEMAKER_INFERENCE_INPUT` variáveis `SAGEMAKER_INFERENCE_OUTPUT` e ao segundo e terceiro contêineres que são gerados no modo HPO para problemas de classificação.

As chaves compatíveis com o segundo contêiner (algoritmo) são predicted\_label, probability e probabilities. Observe que `labels` isso não foi adicionado deliberadamente `SAGEMAKER_INFERENCE_SUPPORTED`.

As chaves compatíveis com o terceiro contêiner do modelo de classificação são `predicted_label`, `labels`, `probability` e `probabilities`. Portanto, o `SAGEMAKER_INFERENCE_SUPPORTED` ambiente inclui os nomes dessas chaves.

O exemplo de código a seguir atualiza a definição dos contêineres de inferência para receber `predicted_label` e `probability`.

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

O exemplo de código a seguir atualiza a definição dos contêineres de inferência para receber `predicted_label`, `probabilities` e `labels`. Não passe o `labels` para o segundo contêiner (o contêiner do algoritmo), pois ele é gerado pelo terceiro contêiner de forma independente. 

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
```

As seções dobráveis a seguir fornecem exemplos de código para AWS SDK para Python (Boto3) e para o SageMaker SDK para Python. Cada seção mostra como selecionar o conteúdo das respostas de inferência no modo HPO para o respectivo exemplo de código.

#### AWS SDK para Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-hpo-boto3"></a>

```
import boto3

sm_client = boto3.client('sagemaker', region_name='{{<Region>}}')

role = '{{<IAM role>}}'
input_data = '{{<S3 input uri>}}'
output_path = '{{<S3 output uri>}}'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='{{<AutoML Job Name>}}')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['{{CandidateName}}']

best_candidate_containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})

# create model
reponse = sm_client.create_model(
    ModelName = '{{<Model Name>}}',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='{{<Transform Job Name>}}',
    ModelName='{{<Model Name>}}',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': '{{S3Prefix}}',
                'S3Uri': {{input_data}}
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': {{output_path}},
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': '{{ml.m4.xlarge}}',
        'InstanceCount': 1,
    },
)
```

#### SageMaker SDK para Python
<a name="autopilot-problem-type-inference-response-classification-hpo-sdk"></a>

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='{{<AutoML Job Name>}}')
aml_best_model = aml.create_model(name='{{<Model Name>}}',
                                  candidate=None,
                                  inference_response_keys**=['probabilities', 'labels'])

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='{{ml.m5.xlarge}}',
                                            instance_count=1,)

aml_transformer.transform('{{<S3 input uri>}}',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='{{<Transform Job Name>}}',
                          wait=True)
```

### Respostas de inferência para modelos de classificação no modo de agrupamento
<a name="autopilot-problem-type-inference-response-classification-ensemble"></a>

Esta seção mostra como configurar a resposta de inferência de modelos de classificação usando o modo de agrupamento. 

No **modo de agrupamento**, para escolher o conteúdo da resposta de inferência, atualize a variável de ambiente `SAGEMAKER_INFERENCE_OUTPUT`.

As chaves compatíveis com o contêiner do modelo de classificação são `predicted_label`, `labels`, `probability` e `probabilities`. Essas chaves estão incluídas no `SAGEMAKER_INFERENCE_SUPPORTED` ambiente.

Consulte o exemplo de código a seguir para atualizar a definição dos contêineres de inferência para receber `predicted_label` e `probability`.

```
containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

A seção flexível a seguir fornece um exemplo de código para selecionar o conteúdo das respostas de inferência no modo de agrupamento. O exemplo usa AWS SDK para Python (Boto3).

#### AWS SDK para Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-ensembling-boto3"></a>

```
import boto3
sm_client = boto3.client('sagemaker', region_name='{{<Region>}}')

role = '{{<IAM role>}}'
input_data = '{{<S3 input uri>}}'
output_path = '{{<S3 output uri>}}' 

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='{{<AutoML Job Name>}}')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['{{CandidateName}}']

*best_candidate_containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
*
# create model
reponse = sm_client.create_model(
    ModelName = '{{<Model Name>}}',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='{{<Transform Job Name>}}',
    ModelName='{{<Model Name>}}',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': '{{S3Prefix}}',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': '{{ml.m4.xlarge}}',
        'InstanceCount': 1,
    },
)
```

A seção flexível a seguir fornece um exemplo de código idêntico ao exemplo do SageMaker SDK para Python para HPO. Está incluído para a sua conveniência.

#### SageMaker SDK para Python
<a name="autopilot-problem-type-inference-response-classification-ensembling-sdk"></a>

O exemplo de código HPO a seguir usa o SageMaker SDK para Python.

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  *inference_response_keys**=['probabilities', 'labels'])*

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```