Configure el resultado de la inferencia en los contenedores generados - 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.

Configure el resultado de la inferencia en los contenedores generados

Piloto automático genera una lista ContainerDefinition ordenada. Esto se puede usar para crear un modelo e implementarlo en una canalización de machine learning. Este modelo se puede utilizar para el alojamiento en línea y la inferencia.

Los clientes pueden enumerar las definiciones de los contenedores de inferencia con la. ListCandidateForAutoMLJobAPI La lista de definiciones de contenedores de inferencia que representan el mejor candidato también está disponible en la respuesta DescribeAutoMLJob.

Definiciones de contenedores de inferencia para tipos de problemas de regresión y clasificación

Piloto automático genera contenedores de inferencia específicos para el modo de entrenamiento y el tipo de problema del trabajo.

Definiciones de contenedores para el modo de optimización de hiperparámetros () HPO

  • Regresión: HPO genera dos contenedores:

    1. Un contenedor de ingeniería de características que transforma las características originales en características sobre las que pueden entrenarse los algoritmos de regresión.

    2. Un contenedor de algoritmos que transforma las características y genera una puntuación de regresión para el conjunto de datos.

  • Clasificación: HPO genera tres contenedores:

    1. Un contenedor de ingeniería de características que transforma las características originales en características sobre las que pueden entrenarse los algoritmos de clasificación.

    2. Un contenedor de algoritmos que genera el predicted_label con la probabilidad más alta. Este contenedor también puede generar las diversas probabilidades asociadas a los resultados de la clasificación en la respuesta de inferencia.

    3. Un contenedor de ingeniería de características que realiza el posprocesamiento de la predicción del algoritmo. Por ejemplo, puede realizar una transformación inversa en la etiqueta prevista y cambiarla por la etiqueta original.

Definiciones de contenedores para el modo de ensamblaje

En el modo de ensamblaje, los tipos de problemas de regresión y clasificación tienen un solo contenedor de inferencias. Este contenedor de inferencias transforma las características y genera las predicciones en función del tipo de problema.

Respuestas de inferencias por tipo de problema

Respuestas de inferencias para modelos de clasificación

En los contenedores de inferencias de clasificación, puede seleccionar el contenido de la respuesta de inferencia mediante cuatro claves predefinidas.

  • predicted_label: la etiqueta con la mayor probabilidad de predecir la etiqueta correcta, según lo determinado por Piloto automático.

  • probability:

    • HPOmodelos: la probabilidad de la True clase de clasificación binaria. La probabilidad de predicted_label para la clasificación multiclase.

    • Modelos de ensamblaje: la probabilidad de predicted_label para la clasificación binaria y multiclase.

  • probabilities: la lista de probabilidades de todas las clases correspondientes.

  • labels: la lista de todas las etiquetas.

Por ejemplo, para un problema de clasificación binaria, si pasa las claves de respuesta de inferencias ['predicted_label', 'probability', 'probabilities', 'labels'] y la respuesta de salida aparece como [1, 0.1, "[0.9, 0.1]", "['1', '0']"], debe interpretarla de la siguiente manera:

  1. predicted_label es igual a 1 porque la etiqueta “1” tiene una probabilidad mayor (en este caso, 0.9).

  2. En el caso de HPO los modelos, es probability igual a la probabilidad de 0.1 que positive_class (0en este caso) seleccione el piloto automático.

    Para los modelos de ensamblaje, probability es igual a 0.9, que es la probabilidad de la predicted_label.

  3. probabilities muestra la probability de cada etiqueta en labels.

  4. labels son las etiquetas únicas del conjunto de datos, donde la segunda etiqueta (“0” en este caso) es la positive_class seleccionada por Piloto automático.

De forma predeterminada, los contenedores de inferencias están configurados para generar solo la predicted_label. Para seleccionar contenido de inferencia adicional, puede actualizar el parámetro inference_response_keys para incluir hasta las siguientes tres variables de entorno.

  • SAGEMAKER_INFERENCE_SUPPORTED: configurado para proporcionarle sugerencias sobre el contenido que admite cada contenedor.

  • SAGEMAKER_INFERENCE_INPUT: debe configurarse con las claves que el contenedor espera en la carga de entrada.

  • SAGEMAKER_INFERENCE_OUTPUT: debe rellenarse con el conjunto de claves que genera el contenedor.

Respuestas de inferencia para los modelos de clasificación en modo HPO

En esta sección se muestra cómo configurar la respuesta de inferencia de los modelos de clasificación mediante el modo de optimización de hiperparámetros ()HPO.

Para elegir el contenido de la respuesta de inferencia en el HPO modo: añada las SAGEMAKER_INFERENCE_OUTPUT variables SAGEMAKER_INFERENCE_INPUT y a los contenedores segundo y tercero que se generan en el HPO modo para los problemas de clasificación.

Las claves que admite el segundo contenedor (algoritmo) son predicted_label, probability y probabilities. Tenga en cuenta que, de forma deliberada, labels no se ha agregado a SAGEMAKER_INFERENCE_SUPPORTED.

Las claves que admite el contenedor del modelo de tercera clasificación son predicted_label, labels, probability y probabilities. Por lo tanto, el entorno SAGEMAKER_INFERENCE_SUPPORTED incluye los nombres de estas claves.

A fin de actualizar la definición de los contenedores de inferencia de modo que reciban a predicted_label y probability, utilice el siguiente ejemplo de código.

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'})

El siguiente ejemplo de código actualiza la definición de los contenedores de inferencia de modo que reciban a predicted_label, labels y probabilities. No transfiera labels al segundo contenedor (el contenedor del algoritmo), ya que el tercer contenedor lo genera de forma independiente.

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'})

Las siguientes secciones plegables proporcionan ejemplos de código para AWS SDK for Python (Boto3) y SageMaker SDK para Python. En cada sección se muestra cómo seleccionar el contenido de las respuestas de inferencia en el HPO modo correspondiente al ejemplo de código correspondiente.

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, }, )
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)

Respuestas de inferencias para modelos de clasificación en el modo ensamblaje

En esta sección, se muestra cómo configurar la respuesta de inferencias de los modelos de clasificación mediante el modo de ensamblaje.

En el modo de ensamblaje, para elegir el contenido de la respuesta de inferencia, actualice la variable de entorno SAGEMAKER_INFERENCE_OUTPUT.

Las claves que admite el contenedor del modelo de clasificación son predicted_label, labels, probability y probabilities. Estas claves se incluyen en el entorno SAGEMAKER_INFERENCE_SUPPORTED.

A fin de actualizar la definición de los contenedores de inferencia de modo que reciban a predicted_label y probability, consulte el siguiente ejemplo de código.

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

La siguiente sección contraíble proporciona un ejemplo de código para seleccionar el contenido de las respuestas de inferencia en el modo de ensamblaje. El ejemplo usa AWS SDK for Python (Boto3).

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, }, )

La siguiente sección plegable proporciona un ejemplo de código que es idéntico al ejemplo de Python SageMaker SDK paraHPO. Se incluye aquí para acceder con comodidad.

El siguiente ejemplo HPO de código se usa 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)