

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

# Verifique previamente o recipiente modelo
<a name="clarify-online-explainability-precheck"></a>

Esta seção mostra como verificar previamente a compatibilidade das entradas e saídas do contêiner do modelo antes de configurar um endpoint. O SageMaker explicador do Clarify é **independente do modelo**, mas tem requisitos para entrada e saída do contêiner do modelo.

**nota**  
Você pode aumentar a eficiência configurando seu contêiner para oferecer compatibilidade com solicitações em lote, que oferecem apoio a dois ou mais registros em uma única solicitação. Por exemplo, um único registro é uma única linha de dados CSV ou uma única linha de dados de linhas JSON. SageMaker O Clarify tentará enviar primeiro um pequeno lote de registros para o contêiner do modelo, antes de retornar às solicitações de registro único.

## Entrada de contêiner de modelo
<a name="clarify-online-explainability-input"></a>

------
#### [ CSV ]

O contêiner do modelo é compatível com entrada em CSV com o tipo MIME: `text/csv`. A tabela a seguir mostra exemplos de entradas compatíveis com o SageMaker Clarify.


| Entrada de contêiner do modelo (representação de string) | Comentários | 
| --- | --- | 
| '1,2,3,4' | Registro único que usa quatro atributos numéricos. | 
| '1,2,3,4\\n5,6,7,8' | Dois registros, separados por quebra de linha '\\n'. | 
| '"Este é um bom produto",5' | Registro único que contém um atributo de texto e um atributo numérico. | 
| '"Este é um bom produto",5\\n"Experiência de compra ruim",1' | Dois registros. | 

------
#### [ JSON Lines ]

SageMaker O AI também suporta entrada no [formato denso de linhas JSON](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-jsonlines) com o tipo MIME:`application/jsonlines`, conforme mostrado na tabela a seguir.


| Entrada de contêiner de modelo | Comentários | 
| --- | --- | 
| '{"data":{"features":[1,2,3,4]}}' | Registro único; uma lista de recursos pode ser extraída por JMESPath expressão`data.features`. | 
| '{"data":{"features":[1,2,3,4]}}\\n{"data":{"features":[5,6,7,8]}}' | Dois registros. | 
| '{"features":["Este é um bom produto",5]}' | Registro único; uma lista de recursos pode ser extraída por JMESPath expressão`features`. | 
| '{"features":["Este é um bom produto",5]}\\n{"features":["Experiência de compra ruim",1]}' | Dois registros. | 

------

## Entrada de contêiner de modelo
<a name="clarify-online-explainability-output"></a>

A saída do contêiner do modelo também deve estar no formato denso CSV ou JSON Lines. Além disso, o contêiner do modelo deve incluir as probabilidades dos registros de entrada, que o SageMaker Clarify usa para calcular as atribuições de recursos.

Os exemplos de dados a seguir são para saídas de contêiner de modelo no **formato CSV**.

------
#### [ Probability only ]

Para problemas de regressão e classificação binária, o contêiner do modelo gera um único valor de probabilidade (pontuação) do rótulo previsto. Essas probabilidades podem ser extraídas usando o índice da coluna 0. Para problemas de várias classes, o contêiner do modelo gera uma lista de probabilidades (pontuações). Para problemas de várias classes, se nenhum índice for fornecido, todos os valores serão extraídos.


| Entrada de contêiner de modelo | Saída do contêiner do modelo (representação de string) | 
| --- | --- | 
| Registro único | '0.6' | 
| Dois registros (resultados em uma linha) | '0.6,0.3' | 
| Dois registros (resultados em duas linhas) | '0.6\\n0.3' | 
| Registro único de um modelo multiclasse (três classes) | '0.1,0.6,0.3' | 
| Dois registros de um modelo multiclasse (três classes) | '0.1,0.6,0.3\\n0.2,0.5,0.3' | 

------
#### [ Predicted label and probabilities ]

O contêiner do modelo gera o rótulo previsto seguido por sua probabilidade no **formato CSV**. As probabilidades podem ser extraídas usando o índice `1`.


| Entrada de contêiner de modelo | Entrada de contêiner de modelo | 
| --- | --- | 
| Registro único | '1,0.6' | 
| Dois registros | '1,0.6\\n0,0.3' | 

------
#### [ Predicted labels header and probabilities ]

Um contêiner de modelo multiclasse treinado pelo Autopilot pode ser configurado para gerar **a representação em sequência** da lista de rótulos e probabilidades previstos no formato **CSV**. No exemplo a seguir, as probabilidades podem ser extraídas por índice `1`. Os cabeçalhos dos rótulos podem ser extraídos pelo índice `1` e os cabeçalhos dos rótulos podem ser extraídos usando o índice `0`.


| Entrada de contêiner de modelo | Entrada de contêiner de modelo | 
| --- | --- | 
| Registro único | '"[\\'gato\\',\\'cachorro\\',\\'peixe\\']","[0.1,0.6,0.3]"' | 
| Dois registros | '"[\\'gato\\',\\'cachorro\\',\\'peixe\\']", "[0.1,0.6,0.3]"\\n"[\\'gato\\',\\'cachorro\\',\\'peixe\\']","[0.2,0.5,0.3]"' | 

------

Os exemplos de dados a seguir são para saídas de contêineres de modelos no formato **JSON Lines**.

------
#### [ Probability only ]

Neste exemplo, o contêiner do modelo gera a probabilidade que pode ser extraída pela expressão [https://jmespath.org/](https://jmespath.org/) no formato `score` **JSON Lines**.


| Entrada de contêiner de modelo | Entrada de contêiner de modelo | 
| --- | --- | 
| Registro único | '{"score":0.6}' | 
| Dois registros | '{"score":0.6}\\n{"score":0.3}' | 

------
#### [ Predicted label and probabilities ]

Neste exemplo, um contêiner de modelo multiclasse gera uma lista de cabeçalhos de rótulos junto com uma lista de probabilidades no formato **JSON Lines.** As probabilidades podem ser extraídas pela `JMESPath` expressão `probability` e os cabeçalhos dos rótulos podem ser extraídos pela expressão `JMESPath` `predicted labels`.


| Entrada de contêiner de modelo | Entrada de contêiner de modelo | 
| --- | --- | 
| Registro único | '{"predicted\_labels":["gato","cachorro","peixe"],"probabilities":[0.1,0.6,0.3]}' | 
| Dois registros | '{"predicted\_labels":["gato","cachorro","peixe"],"probabilities":[0.1,0.6,0.3]}\\n{"predicted\_labels":["gato","cachorro","peixe"],"probabilities":[0.2,0.5,0.3]}' | 

------
#### [ Predicted labels header and probabilities ]

Neste exemplo, um contêiner de modelo multiclasse gera uma lista de cabeçalhos e probabilidades de rótulos no formato **JSON Lines**. As probabilidades podem ser extraídas pela `JMESPath` expressão `probability` e os cabeçalhos dos rótulos podem ser extraídos pela expressão `JMESPath` `predicted labels`.


| Entrada de contêiner de modelo | Entrada de contêiner de modelo | 
| --- | --- | 
| Registro único | '{"predicted\_labels":["gato","cachorro","peixe"],"probabilities":[0.1,0.6,0.3]}' | 
| Dois registros | '{"predicted\_labels":["gato","cachorro","peixe"],"probabilities":[0.1,0.6,0.3]}\\n{"predicted\_labels":["gato","cachorro","peixe"],"probabilities":[0.2,0.5,0.3]}' | 

------

## Validação de contêiner
<a name="clarify-online-explainability-container-validation"></a>

Recomendamos que você implante seu modelo em um endpoint de inferência de SageMaker IA em tempo real e envie solicitações para o endpoint. Examine manualmente as solicitações (entradas do contêiner do modelo) e as respostas (saídas do contêiner do modelo) para garantir que ambas estejam em conformidade com os requisitos na seção **Entrada do contêiner do modelo** e na seção **Saída do contêiner do modelo**. Se o seu contêiner de modelo oferecer compatibilidade com solicitações em lote, você poderá começar com uma única solicitação de registro e, em seguida, tentar dois ou mais registros.

Os comandos a seguir mostram como solicitar uma resposta usando o AWS CLI. O AWS CLI vem pré-instalado nas instâncias SageMaker Studio Classic e SageMaker Notebook. Se você precisar instalar o AWS CLI, siga este [guia de instalação](https://aws.amazon.com/cli/).

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

Os parâmetros são definidos da seguinte forma:
+ `$ENDPOINT NAME`: o nome do endpoint.
+ `$CONTENT_TYPE`: o tipo MIME da solicitação (entrada do contêiner do modelo).
+ `$ACCEPT_TYPE`: o tipo MIME da resposta (saída do contêiner do modelo).
+ `$REQUEST_DATA`: a string de carga útil solicitada.
+ `$CLI_BINARY_FORMAT`: o formato do parâmetro da Interface da linha de comando (CLI). Para AWS CLI v1, esse parâmetro deve permanecer em branco. Para v2, esse parâmetro deve ser definido como `--cli-binary-format raw-in-base64-out`.

**nota**  
AWS CLI [v2 passa parâmetros binários como strings codificadas em base64 padrão.](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam)

Os exemplos a seguir usam AWS CLI v1:

------
#### [ Request and response in CSV format ]
+ A solicitação consiste em um único registro e a resposta é seu valor de probabilidade.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-sagemaker-xgboost-model \
    --content-type text/csv \
    --accept text/csv \
    --body '1,2,3,4' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `0.6`
+ A solicitação consiste em dois registros, e a resposta inclui suas probabilidades, e o modelo separa as probabilidades por uma vírgula. A `$'content'` expressão no `--body` diz ao comando para interpretar `\n` o conteúdo como uma quebra de linha.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-sagemaker-xgboost-model \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `0.6,0.3`
+ A solicitação consiste em dois registros, a resposta inclui suas probabilidades e o modelo separa as probabilidades com uma quebra de linha.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-1 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `0.6`

  `0.3`
+ A solicitação consiste em um único registro e a resposta são valores de probabilidade (modelo multiclasse, três classes).

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-1 \
    --content-type text/csv \
    --accept text/csv \
    --body '1,2,3,4' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `0.1,0.6,0.3`
+ A solicitação consiste em dois registros e a resposta inclui seus valores de probabilidade (modelo multiclasse, três classes).

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-1 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `0.1,0.6,0.3`

  `0.2,0.5,0.3`
+ A solicitação consiste em dois registros, e a resposta inclui rótulo e probabilidade previstos.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-2 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `1,0.6`

  `0,0.3`
+ A solicitação consiste em dois registros e a resposta inclui cabeçalhos e probabilidades dos rótulos.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-3 \
    --content-type text/csv \
    --accept text/csv \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `"['cat','dog','fish']","[0.1,0.6,0.3]"`

  `"['cat','dog','fish']","[0.2,0.5,0.3]"`

------
#### [ Request and response in JSON Lines format ]
+ A solicitação consiste em um único registro e a resposta é seu valor de probabilidade.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines \
    --content-type application/jsonlines \
    --accept application/jsonlines \
    --body '{"features":["This is a good product",5]}' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `{"score":0.6}`
+ A solicitação contém dois registros e a resposta inclui rótulo e probabilidade previstos.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines-2 \
    --content-type application/jsonlines \
    --accept application/jsonlines \
    --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `{"predicted_label":1,"probability":0.6}`

  `{"predicted_label":0,"probability":0.3}`
+ A solicitação contém dois registros e a resposta inclui cabeçalhos e probabilidades dos rótulos.

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines-3 \
    --content-type application/jsonlines \
    --accept application/jsonlines \
    --body $'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}`

  `{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}`

------
#### [ Request and response in different formats ]
+ A solicitação está no formato CSV e a resposta está no formato JSON Lines:

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-csv-in-jsonlines-out \
    --content-type text/csv \
    --accept application/jsonlines \
    --body $'1,2,3,4\n5,6,7,8' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `{"probability":0.6}`

  `{"probability":0.3}`
+ A solicitação está no formato JSON Lines e a resposta está no formato CSV:

  ```
  aws sagemaker-runtime invoke-endpoint \
    --endpoint-name test-endpoint-jsonlines-in-csv-out \
    --content-type application/jsonlines \
    --accept text/csv \
    --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
    /dev/stderr 1>/dev/null
  ```

  Saída:

  `0.6`

  `0.3`

------

Depois que as validações forem concluídas, [exclua](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-delete-resources.html) o endpoint de teste.