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
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.
Você pode aumentar a eficiência configurando seu contêiner para oferecer suporte a solicitações em lote, que oferecem suporte a dois ou mais registros em uma única solicitação. Por exemplo, um único registro é uma única linha de CSV dados ou uma única linha de dados de JSON linhas. 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.
- CSV
-
O contêiner do modelo suporta entrada CSV com o MIME tipo: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 recursos 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 recurso de texto e um recurso numérico.
|
'"Este é um bom produto",5\n"Experiência de compra ruim",1'
|
Dois registros.
|
- JSON Lines
-
SageMaker também suporta entrada no formato JSON Lines dense com o MIME tipo: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ãodata.features .
|
'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}'
|
Dois registros.
|
'{"features":["This is a good product",5]}'
|
Registro único; uma lista de recursos pode ser extraída por JMESPath expressãofeatures .
|
'{"features":["This is a good product",5]}\n{"features":["Bad shopping experience",1]}'
|
Dois registros.
|
Entrada de contêiner de modelo
A saída do contêiner do modelo também deve estar no formato JSON Lines dense ou Lines. CSV 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 em CSVformato.
- 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 CSVformato. 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 em 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 JSONLinhas.
- Probability only
-
Neste exemplo, o contêiner do modelo gera a probabilidade que pode ser extraída por JMESPath
expressão score
no formato JSONLinhas.
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 Linhas. JSON 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 Linhas. JSON 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
Recomendamos que você implante seu modelo SageMaker em um endpoint de inferência 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 contêiner do modelo suportar solicitações em lote, você poderá começar com uma única solicitação de registro e depois 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.
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 descritos da seguinte forma:
-
$ENDPOINT NAME
: o nome do endpoint.
-
$CONTENT_TYPE
: o MIME tipo da solicitação (entrada do contêiner do modelo).
-
$ACCEPT_TYPE
: o MIME tipo 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 de 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
.
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 CSV formato e a resposta está no formato JSON Linhas:
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 Linhas e a resposta está no CSV formato:
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 o endpoint de teste.