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. ListCandidateForAutoMLJob
API 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:
-
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.
-
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:
-
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.
-
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. -
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 depredicted_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:
-
predicted_label
es igual a1
porque la etiqueta “1” tiene una probabilidad mayor (en este caso,0.9
). -
En el caso de HPO los modelos, es
probability
igual a la probabilidad de0.1
quepositive_class
(0
en este caso) seleccione el piloto automático.Para los modelos de ensamblaje,
probability
es igual a0.9
, que es la probabilidad de lapredicted_label
. -
probabilities
muestra laprobability
de cada etiqueta enlabels
. -
labels
son las etiquetas únicas del conjunto de datos, donde la segunda etiqueta (“0” en este caso) es lapositive_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)