Comprobación previa del contenedor de modelos - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Comprobación previa del contenedor de modelos

Esta sección le muestra cómo realizar la comprobación previa de la compatibilidad de las entradas y salidas del contenedor de modelos antes de configurar un punto de conexión. La explicación SageMaker de Clarify es independiente del modelo, pero tiene requisitos para la entrada y salida del contenedor del modelo.

nota

Puede aumentar la eficiencia si configura su contenedor para que admita solicitudes por lotes, que admiten dos o más registros en una sola solicitud. Por ejemplo, un único registro es una sola línea de CSV datos o una sola línea de datos de JSON Lines. SageMaker Clarify intentará enviar primero un minilote de registros al contenedor modelo antes de recurrir a solicitudes de registro único.

Entrada del contenedor de modelos

CSV

El contenedor modelo admite la entrada CSV con el MIME tipo:text/csv. La siguiente tabla muestra ejemplos de entradas que admite SageMaker Clarify.

Entrada del contenedor de modelos (representación de cadena) Comentarios

'1,2,3,4'

Registro único que utiliza cuatro características numéricas.

'1,2,3,4\n5,6,7,8'

Dos registros, separados por un salto de línea '\n'.

'"Este es un buen producto",5'

Registro único que contiene una característica de texto y una característica numérica.

‘"Este es un buen producto",5\n"Mala experiencia de compra",1'

Dos registros.

JSON Lines

SageMaker también admite la entrada en formato de JSON líneas densas con el MIME tipo:application/jsonlines, como se muestra en la siguiente tabla.

Entrada del contenedor de modelos Comentarios

'{"datos":{"características":[1,2,3,4]}}'

Registro único; se puede extraer una lista de características por JMESPath expresióndata.features.

'{"datos":{"características":[1,2,3,4]}}\n{"datos":{"características":[5,6,7,8]}}'

Dos registros.

'{"características":["Este es un buen producto",5]}'

Registro único; se puede extraer una lista de características mediante una JMESPath expresiónfeatures.

'{"características":["Este es un buen producto",5]}\n{"características":["Mala experiencia de compra",1]}'

Dos registros.

Salida del contenedor de modelos

La salida del contenedor de modelos también debe estar en formato denso o en formato de JSON líneas densas. CSV Además, el contenedor del modelo debe incluir las probabilidades de los registros de entrada, que SageMaker Clarify utiliza para calcular las atribuciones de las características.

Los siguientes ejemplos de datos son para salidas de contenedores de modelos en CSV formato.

Probability only

En el caso de problemas de regresión y clasificación binaria, el contenedor de modelos genera un único valor de probabilidad (puntuación) de la etiqueta predicha. Estas probabilidades se pueden extraer utilizando el índice de columna 0. En el caso de problemas con varias clases, el contenedor de modelos genera una lista de probabilidades (puntuaciones). En el caso de problemas con varias clases, si no se proporciona ningún índice, se extraen todos los valores.

Entrada del contenedor de modelos Salida del contenedor de modelos (representación de cadena)

Registro único

'0,6'

Dos registros (resultados en una línea)

'0,6,0,3'

Dos registros (resultados en dos líneas)

'0,6\n0,3'

Registro único de un modelo multiclase (tres clases)

'0,1,0,6,0,3'

Dos registros de un modelo multiclase (tres clases)

'0,1,0,6,0,3\n0,2,0,5,0,3'

Predicted label and probabilities

El contenedor del modelo genera la etiqueta pronosticada seguida de su probabilidad en CSVformato. Estas probabilidades se pueden extraer utilizando el índice 1.

Entrada del contenedor de modelos Salida del contenedor de modelos

Registro único

'1,0,6'

Dos registros

'1,0,6\n0,0,3'

Predicted labels header and probabilities

Se puede configurar un contenedor de modelos de varias clases entrenado por Autopilot para generar la representación en cadena de la lista de etiquetas y probabilidades pronosticadas en formato. CSV En el siguiente ejemplo, las probabilidades se pueden extraer mediante el índice 1. Los encabezados de las etiquetas se pueden extraer mediante el índice 1, y los encabezados de las etiquetas se pueden extraer utilizando el índice 0.

Entrada del contenedor de modelos Salida del contenedor de modelos

Registro único

'"[\'gato\',\'perro\',\'pez\']","[0,1,0,6,0,3]"'

Dos registros

'"[\'gato\',\'perro\',\'pez\']","[0,1,0,6,0,3]"\n"[\'gato\',\'perro\',\'pez\']","[0,2,0,5,0,3]"'

Los siguientes ejemplos de datos son para salidas de contenedores de modelos en JSON formato Lines.

Probability only

En este ejemplo, el contenedor del modelo genera la probabilidad que se puede extraer mediante una JMESPathexpresión score en formato de JSONlíneas.

Entrada del contenedor de modelos Salida del contenedor de modelos

Registro único

'{"puntuación":0,6}'

Dos registros

'{"puntuación":0,6}\n{"puntuación":0,3}'

Predicted label and probabilities

En este ejemplo, un contenedor de modelos de varias clases genera una lista de encabezados de etiquetas junto con una lista de probabilidades en JSON formato de líneas. Las probabilidades se pueden extraer mediante la expresión de JMESPath probability y los encabezados de las etiquetas se pueden extraer mediante la expresión de JMESPath predicted labels.

Entrada del contenedor de modelos Salida del contenedor de modelos

Registro único

'{"etiquetas_predichas":["gato","perro","pez"],"probabilidades":[0,1,0,6,0,3]}'

Dos registros

'{"etiquetas_predichas":["gato","perro","pez"],"probabilidades":[0,1,0,6,0.3]}\n{"etiquetas_predichas":["gato","perro","pez"],"probabilidades":[0,2,0,5,0,3]}'

Predicted labels header and probabilities

En este ejemplo, un contenedor de modelos multiclase genera una lista de encabezados de etiquetas y probabilidades en formato Lines. JSON Las probabilidades se pueden extraer mediante la expresión de JMESPath probability y los encabezados de las etiquetas se pueden extraer mediante la expresión de JMESPath predicted labels.

Entrada del contenedor de modelos Salida del contenedor de modelos

Registro único

'{"etiquetas_predichas":["gato","perro","pez"],"probabilidades":[0,1,0,6,0,3]}'

Dos registros

'{"etiquetas_predichas":["gato","perro","pez"],"probabilidades":[0,1,0,6,0.3]}\n{"etiquetas_predichas":["gato","perro","pez"],"probabilidades":[0,2,0,5,0,3]}'

Validación del contenedor de modelos

Se recomienda implementar el modelo en un punto final de inferencia SageMaker en tiempo real y enviar las solicitudes al punto final. Examine manualmente las solicitudes (entradas del contenedor de modelos) y las respuestas (salidas del contenedor de modelos) para asegurarse de que ambas cumplan con los requisitos de las secciones Entrada del contenedor de modelos y Salida del contenedor de modelos. Si el contenedor de modelos admite solicitudes por lotes, puede empezar con una sola solicitud de registro y, a continuación, probar con dos o más registros.

En los siguientes comandos se muestra cómo solicitar una respuesta mediante la AWS CLI. Viene AWS CLI preinstalado en las instancias de SageMaker Studio Classic y SageMaker Notebook. Si necesita instalar el AWS CLI, siga esta guía de instalación.

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

Los parámetros se definen como sigue:

  • $ENDPOINT NAME: el nombre del punto de conexión.

  • $CONTENT_TYPE: El MIME tipo de solicitud (entrada del contenedor modelo).

  • $ACCEPT_TYPE: El MIME tipo de respuesta (salida del contenedor modelo).

  • $REQUEST_DATA: la cadena de carga solicitada.

  • $CLI_BINARY_FORMAT: el formato del parámetro de la interfaz de línea de comandos (CLI). Para la AWS CLI versión 1, este parámetro debe permanecer en blanco. En la versión 2, este parámetro debe establecerse en --cli-binary-format raw-in-base64-out.

En los ejemplos siguientes se utiliza v1: AWS CLI

Request and response in CSV format
  • La solicitud consta de un único registro y la respuesta es su valor de probabilidad.

    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

    Salida:

    0.6

  • La solicitud consta de dos registros, la respuesta incluye sus probabilidades y el modelo separa las probabilidades con una coma. La expresión $'content' en --body indica al comando que debe interpretar \n en el contenido como un salto de línea.

    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

    Salida:

    0.6,0.3

  • La solicitud consta de dos registros, la respuesta incluye sus probabilidades y el modelo separa las probabilidades con un salto de línea.

    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

    Salida:

    0.6

    0.3

  • La solicitud consta de un único registro y la respuesta son los valores de probabilidad (modelo multiclase, tres clases).

    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

    Salida:

    0.1,0.6,0.3

  • La solicitud consta de dos registros y la respuesta incluye sus valores de probabilidad (modelo multiclase, tres clases).

    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

    Salida:

    0.1,0.6,0.3

    0.2,0.5,0.3

  • La solicitud consta de dos registros y la respuesta incluye la probabilidad y la etiqueta predicha.

    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

    Salida:

    1,0.6

    0,0.3

  • La solicitud consta de dos registros y la respuesta incluye los encabezados de la etiqueta y las probabilidades.

    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

    Salida:

    "['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
  • La solicitud consta de un único registro y la respuesta es su valor de probabilidad.

    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

    Salida:

    {"score":0.6}

  • La solicitud contiene dos registros y la respuesta incluye la probabilidad y la etiqueta predicha.

    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

    Salida:

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

    {"predicted_label":0,"probability":0.3}

  • La solicitud contiene dos registros y la respuesta incluye los encabezados de la etiqueta y las probabilidades.

    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

    Salida:

    {"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
  • La solicitud está en CSV formato y la respuesta está en formato de JSON líneas:

    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

    Salida:

    {"probability":0.6}

    {"probability":0.3}

  • La solicitud está en formato de JSON líneas y la respuesta tiene el siguiente 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

    Salida:

    0.6

    0.3

Una vez finalizadas las validaciones, elimine el punto de conexión de prueba.