Blog de Amazon Web Services (AWS)

Supervisión de modelos ML en producción a gran escala con Amazon SageMaker Model Monitor

Por Sireesha Muppala, Archana Padmasenan y David Nigenda

 

Los modelos de aprendizaje automático (ML) están impactando las decisiones empresariales de organizaciones de todo el mundo, desde servicios minoristas y financieros hasta vehículos autónomos y exploración espacial. Para estas organizaciones, la capacitación y la implementación de modelos ML en producción es solo un paso hacia el logro de los objetivos empresariales. El rendimiento de los modelos puede degradarse con el tiempo por varias razones, como el cambio de las pautas de compra de los consumidores en la industria minorista y las condiciones económicas cambiantes en la industria financiera. La degradación de la calidad de los modelos tiene un impacto negativo en los resultados empresariales. Para abordar este problema de forma proactiva, supervisar el rendimiento de un modelo implementado es un proceso crítico. El monitoreo continuo de los modelos de producción le permite identificar el momento y la frecuencia adecuados para volver a entrenar y actualizar el modelo. Aunque el re-entrenar con demasiada frecuencia puede ser demasiado caro, no re-entrenar lo suficiente podría dar lugar a predicciones inferiores a las óptimas de su modelo.

Amazon SageMaker es un servicio totalmente gestionado que permite a los desarrolladores y científicos de datos crear, entrenar e implementar de forma rápida y sencilla modelos ML a cualquier escala. Después de entrenar un modelo ML, puede implementarlo en endpoints de SageMaker que están completamente administrados y pueden servir inferencias en tiempo real con baja latencia. Después de implementar el modelo, puede utilizar Amazon SageMaker Model Monitor para supervisar continuamente la calidad de su modelo ML en tiempo real. También puede configurar alertas para notificar y activar acciones si se observa alguna drift en el rendimiento del modelo. La detección temprana y proactiva de estas desviaciones le permite tomar medidas correctivas, como recopilar nuevos datos de formación sobre la verdad en el terreno, modelos de reciclaje y auditoría de sistemas ascendentes, sin tener que monitorear manualmente los modelos o crear herramientas adicionales.

En este post, discutimos el monitoreo de la calidad de un modelo de clasificación a través de métricas de clasificación como precisión, precisión y mucho más.

 

Resumen de la solución

El siguiente diagrama ilustra el flujo de trabajo de alto nivel del Monitor de modelo. Comienza con un endpoint para supervisar y configurar una fracción de los datos de inferencia para que se capturen en tiempo real y se almacenen en un depósito de Amazon Simple Storage Service (Amazon S3) de su elección. Model Monitor permite capturar tanto los datos de entrada enviados a un extremo como las predicciones realizadas por el modelo. Después de eso, puede crear un trabajo de línea base para generar reglas y restricciones estadísticas que sirvan de base para el análisis del modelo más adelante. A continuación, defina el trabajo de supervisión y adjuntarlo a un punto final a través de una programación.

Model Monitor comienza a supervisar los trabajos para analizar los datos de predicción del modelo recopilados durante un período determinado. Para monitorear las características de rendimiento del modelo, como la precisión o la precisión en tiempo real, Model Monitor le permite ingerir las etiquetas de verdad sobre el terreno recogidas de sus aplicaciones. Model Monitor combina automáticamente la información sobre el terreno con datos de predicción para calcular las métricas de rendimiento del modelo.

 

 

Model Monitor ofrece cuatro tipos diferentes de capacidades de monitoreo para detectar y mitigar la deriva del modelo en tiempo real:

  • Calidad de datos : ayuda a detectar cambios en las propiedades estadísticas de variables independientes y le avisa cuando se detecta un data drift.
  • Calidad del modelo : supervisa las características de rendimiento del modelo, como la precisión y la precisión en tiempo real, y le avisa cuando hay una degradación en el rendimiento del modelo.
  • bias del modelo : le ayuda a identificar biass no deseados en sus modelos ML y notificarle cuando se detecta un bias.
  • Explicación del modelo: la detección de drift le avisa cuando hay un cambio en la importancia relativa de las atribuciones de entidades.

Para obtener más información, consulte Amazon SageMaker Model Monitor.

El resto de este post se sumerge en un Jupyter notebook con los diversos pasos involucrados en el monitoreo de un modelo de clasificación binaria de churn de clientes XGBoost previamente entrenado e implementado. Puede utilizar un enfoque similar para supervisar un modelo de regresión para aumentar las tasas de error.

Para obtener Jupyter notebookes detallados sobre otras funciones de Model Monitor, consulte los ejemplos de data drift y bias de Jupyter notebookes en GitHub.

Más allá de los pasos descritos en esta publicación, hay otros pasos necesarios para importar bibliotecas y configurar permisos de AWS Identity and Access Management (IAM) y funciones de utilidad definidas en el jupyter notebook, que esta publicación no menciona. Puede recorrer y ejecutar el código con el siguiente jupyter notebook en el repositorio de GitHub.

 

Supervisión de la calidad del modelo

Para monitorear la calidad de nuestro modelo, realizamos dos pasos de alto nivel:

  • Implementar un modelo pre-entrenado con captura de datos habilitada
  • Generar una línea base para el rendimiento de calidad del modelo

Implementación de un modelo precapacitado

En este paso, implementa un modelo de predicción de churn XGBoost preentrenado en un extremo de SageMaker. El modelo fue entrenado usando el notebook Predicción de Churn XGB. Si tiene un modelo preentrenado que desea supervisar, puede utilizar su propio modelo en este paso.

  1. Cargue un artefacto modelo entrenado a un depósito de S3:
s3_key = f"s3://{bucket}/{prefix}" model_url = S3Uploader.upload("model/xgb-churn-prediction-model.tar.gz", s3_key) model_url

Debería ver una salida similar al siguiente código:

s3: //sagemaker-us-west-2-xxxxxxxxxxxx/sagemaker/DEMO-ModelMonitor-20200901/xgb-churn-prediction-model.tar.gz

2. Cree un objeto de modelo de SageMaker:

model_name = f"DEMO-xgb-churn-pred-model-monitor-{datetime.utcnow():%Y-%m-%d-%H%M}"
image_uri = image_uris.retrieve(framework="xgboost", version="0.90-1", region=region)
model = Model(image_uri=image_uri, model_data=model_url, role=role, sagemaker_session=session)

3. Cree una variable para especificar los parámetros de captura de datos. Para habilitar la captura de datos para supervisar la calidad de los datos del modelo, especifique la opción de captura denominada DataCaptureConfig. Puede capturar la carga útil de solicitud, la carga de respuesta o ambos con esta configuración.

endpoint_name = f"DEMO-xgb-churn-model-quality-monitor-{datetime.utcnow():%Y-%m-%d-%H%M}" print("EndpointName =", endpoint_name) data_capture_config = DataCaptureConfig( enable_capture=True, sampling_percentage=100, destination_s3_uri=s3_capture_upload_path) model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge', endpoint_name=endpoint_name, data_capture_config=data_capture_config)

4. Cree el objeto Predictor de SageMaker desde el extremo que se utilizará para invocar el modelo:

rom sagemaker.predictor import Predictor predictor = Predictor(endpoint_name=endpoint_name, sagemaker_session=session, serializer=CSVSerializer())

Generación de una línea base para el rendimiento de calidad del modelo

En este paso, generará una calidad de modelo de línea base que se puede utilizar para supervisar continuamente la calidad del modelo. Para generar la línea base de calidad del modelo, primero invoque el endpoint creado anteriormente mediante datos de validación. Las predicciones del modelo implementado que utilizan estos datos de validación se utilizan como un dataset de línea base. Puede utilizar el dataset de capacitación o validación para crear la línea base. A continuación, utilice el Monitor de modelo para ejecutar un trabajo de línea base que calcula los datos de rendimiento del modelo y sugiere restricciones de calidad del modelo basadas en el dataset de línea base.

  1. Invocar el endpoint con el siguiente código:
limit = 200 #Need at least 200 samples to compute standard deviations i = 0 with open(f"test_data/{validate_dataset}", "w") as baseline_file: baseline_file.write("probability,prediction,label\n") # our header with open('test_data/validation.csv', 'r') as f: for row in f: (label, input_cols) = row.split(",", 1) probability = float(predictor.predict(input_cols)) prediction = "1" if probability > churn_cutoff else "0" baseline_file.write(f"{probability},{prediction},{label}\n") i += 1 if i > limit: break print(".", end="", flush=True) sleep(0.5)

2. Examine las predicciones del modelo:

!head test_data/validation_with_predictions.csv

Puede ver una salida similar al siguiente código:

probabilidad, predicción, etiqueta
0.01516005303710699,0,0

0.1684480607509613,0,0

0.21427156031131744,0,0

0.06330718100070953,0,0

0.02791607193648815,0,0

0.014169521629810333,0,0

0.00571369007229805,0,0

0.10534518957138062,0,0

0.025899196043610573,0,0

A continuación, configure un trabajo de procesamiento para generar reglas y restricciones estadísticas (denominadas línea base) contra las cuales se puede detectar la deriva de calidad del modelo. El Monitor de modelo sugiere un conjunto de restricciones y estadísticas de línea base predeterminadas. También puede introducir restricciones de línea base personalizadas.

3. Comience cargando los datos de validación y las predicciones en Amazon S3:

baseline_dataset_uri = S3Uploader.upload(f"test_data/{validate_dataset}", baseline_data_uri) baseline_dataset_uri

4. Cree el monitor de calidad del modelo:

churn_model_quality_monitor = ModelQualityMonitor( role=role, instance_count=1, instance_type='ml.m5.xlarge', volume_size_in_gb=20, max_runtime_in_seconds=1800, sagemaker_session=session

5. Ejecute el trabajo de procesamiento de sugerencias de línea base:

job = churn_model_quality_monitor.suggest_baseline (

job_name=baseline_job_name,

baseline_dataset=baseline_dataset_uri,

dataset_format=DatasetFormat.csv (header=true),

output_s3_uri = baseline_results_uri,

problem_type='BinaryClassification',

inference_attribute= “predição”,

probability_attribute= “probabilidade”,

ground_truth_attribute= “rótulo”
  • )

job.wait (logs=false)

Quando o job de baseline estiver concluído, você pode explorar as métricas e restrições geradas.

6. Vea las métricas de clasificación binaria con el siguiente código:

binary_metrics = baseline_job.baseline_statistics () .body_dict ["binary_classification_metrics"]

pd.json_normalize (linha de base ["binary_classification_metrics"]) .T

La siguiente captura de pantalla muestra los resultados.

 

 

7. Ver las restricciones generadas:

constraints = json.loads(S3Downloader.read_file(constraints_file))
constraints["binary_classification_constraints"]
{'recall': {'threshold': 0.5714285714285714, 'comparison_operator': 'LessThanThreshold'},
 'precision': {'threshold': 1.0,             'comparison_operator': 'LessThanThreshold'},
 'accuracy': {'threshold': 0.9402985074626866,'comparison_operator': 'LessThanThreshold'),
 'true_positive_rate': {'threshold': 0.5714285714285714,'comparison_operator': 'LessThanThreshold'},
 'true_negative_rate': {'threshold': 1.0, 'comparison_operator': 'LessThanThreshold'},
 'false_positive_rate': {'threshold': 0.0,'comparison_operator': 'GreaterThanThreshold'),
 'false_negative_rate': {'threshold': 0.4285714285714286,'comparison_operator': 'GreaterThanThreshold'},
 'auc': {'threshold': 1.0, 'comparison_operator': 'LessThanThreshold'},
 'f0_5': {'threshold': 0.8695652173913042,'comparison_operator': 'LessThanThreshold'},
 'f1': {'threshold': 0.7272727272727273,'comparison_operator': 'LessThanThreshold'},
 'f2': {'threshold': 0.625, 'comparison_operator': 'LessThanThreshold'}}

A partir de las restricciones generadas, puede ver que la supervisión del modelo se asegura de que la puntuación de recuperación de su modelo no retrocede y caiga por debajo de 0.571. Del mismo modo, se asegura de que reciba una alerta cuando la precisión cae por debajo de 1.0. Esto puede ser demasiado agresivo, pero puede modificar las restricciones generadas en función de su caso de uso y las necesidades empresariales.

 

Configuración de la supervisión continua de modelos

Ahora que tiene la línea base de la calidad del modelo, configura un trabajo de supervisión continua del modelo que supervisa la calidad del modelo desplegado con respecto a la línea base para identificar la deriva de calidad del modelo.

Además de la línea base generada, Model Monitor necesita dos entradas adicionales: las predicciones realizadas por el extremo del modelo desplegado y los datos de verdad de tierra que debe proporcionar la aplicación que consume el modelo. Dado que ya ha habilitado la captura de datos en el endpoint, los datos de predicción se capturan en Amazon S3. Los datos de verdad sobre el terreno dependen de lo que predice su modelo y cuál es el caso de uso del negocio. En este caso, debido a que el modelo predice el cambio de clientes, los datos de verdad de fondo pueden indicar si el cliente realmente abandonó la empresa o no. A los efectos de este cuaderno, se generan datos sintéticos como verdad de tierra.

  1. Primero genere tráfico al endpoint implementado. Si no hay tráfico, los trabajos de supervisión se marcan como Error porque no hay datos que procesar. Consulte el siguiente código:
def invoke_endpoint (ep_name, file_name):

with open (file_name, 'r') as f:

i = 0

for line in f:

payload = linha.rstrip ('\ n')

response = session.sagemaker_runtime_client.invoke_endpoint (

endpointName=Endpoint_name,

contentType='Text/CSV',

body=payload,

inferenceId=str (i), # ID exclusivo por linha

) ["Corpo"] .read ()

i += 1

sleep (1)




def invoke_endpoint_forever ():

while True:

invoke_endpoint (endpoint_name, 'test_data/test-dataset-input-cols.csv')




thread = Thread (alvo = invoke_endpoint_forever)

thread.start ()

2. Vea los datos capturados con el siguiente código:

for _ in range (120):

capture_files = labled(s3Downloader.list (f "{s3_capture_upload_path}/{endpoint_name}”))

if capture_files:

capture_file = S3Downloader.read_file (capture_files [-1]) .split (“\ n”)

capture_record = json.loads (capture_file [0])

if “InferenceId” in capture_record ["eventMetadata"]:

break

print (”.“, end="”, flush=true)

sleep (1)
  • print ()
  • print (“Arquivos de captura encontrados:”)
print (“\ n “.join (capture_files [-5:])

Puede ver una salida similar a la siguiente:

Found Capture Files:
s3: //sagemaker-US-West-2-303008809627/Sagemaker/churn-modelo-qualitymonitor-20201129/datacapture/demo-xgb-churn-modelo-qualidade-monitor-2020-12-01-2214/Alltraffic/2020/12/01/22/23-36-108-9df12912-2696-431e-a4ef-A76b3c3f7D32.jsonl

 s3: //sagemaker-US-West-2-303008809627/Sagemaker/churn-modelQuality Monitor-20201129/DataCapture/demo-XGB-churn-modelo-qualidade-monitor-2020-12-01-2214/Alltraffic/2020/12/01/22/24-36-254-DF884bcb-405C-4277-9CC8-517F3F31b56f.Jsonl

3. Ver el contenido de un único archivo:

print (json.dumps (capture_record, indent=2))

Puede ver una salida similar a la siguiente:

{

  “CaptureData”: {

    “EndPointInput”: {

      “observedContentType”: “text/csv”,

      “mode”: “INPUT”,

      “data”: “75,0,109.0,88,259.3,120,182.1,119,13.3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0

      “encoding”: “CSV”

    },

    “EndPointOutput”: {

      “observedContentType”: “text/csv; charset=utf-8",

      “mode”: “SAÍDA”,

      “data”: “0.7990730404853821",

      “encoding”: “CSV”

    }

  },

  “EventMetadata”: {

    “EventID”: “01e27fce-a00a-4707-847e-9748d6a8e580",

    “InferenceTime”: “2020-12-01T 22:24:36 Z”

  },

  “EventVersion”: “0"

}

A continuación, generas ground truth sintetica. Model Monitor le permite ingerir los datos de verdad sobre el terreno recopilados periódicamente de su aplicación y combinarlos con datos de predicción para calcular las métricas de rendimiento del modelo. Puede cargar periódicamente las ground truth a medida que lleguen y carguen a Amazon S3. Model Monitor combina automáticamente ground truth con datos de predicción y evalúa el rendimiento del modelo con la verdad del terreno. Los datos combinados se almacenan en Amazon S3 y se puede acceder posteriormente para volver a entrenar sus modelos. Puede cifrar los datos de este depósito y configurar políticas de seguridad detalladas, mecanismos de control de acceso y políticas de retención de datos.

4. Introduzca el siguiente código para generar la verdad de terreno de la manera que espera el contenedor de fusión de primera parte de SageMaker:

Import random

def ground_truth_with_id (inference_id):

seed (inference_id) # para obter resultados consistentes

rand = aleatório ()

return {

'GroundTruthData': {

data: “1" if rand < 0.7 else “0", # geram aleatoriamente rótulos positivos 70% do tempo

' encoding ':' CSV '

},

'EventMetadata': {

'eventId': str (inference_id),

},

'eventVersion': '0',

}

def upload_ground_truth (records, upload_time):

fake_records = [json.dumps (r) for r in records]

data_to_upload = “\ n” .join (fake_records)

target_s3_uri = f "{ground_truth_upload_path}/{upload_time: %Y/%M/%D/%H/%M%s} .jsonl”

print (f"Uploading {len (fake_records)} records for”, target_s3_uri)

    s3uploader.upload_string_as_file_body (data_to_upload, target_s3_uri)

El trabajo de calidad del modelo falla si falta la captura de datos o los datos de verdad de tierra.

A continuación, configure una programación de supervisión que supervise el rendimiento en tiempo real del modelo con respecto a la línea base.

5. Establezca el nombre del programador de supervisión:

churn_monitor_schedule_name =

f"Demo-xgb-churn-monitoring-schedule- {datetime.utcnow () :%Y-%M-%D-%H%M}”

Ahora se crea el objeto EndpointInput . Para la programación de supervisión, debe especificar cómo interpretar la salida de un punto final. Dado que el punto final de este jupyter notebook genera datos CSV, el código siguiente especifica que la primera columna de la salida, 0, contiene una probabilidad (de churn en este ejemplo). Además, especifica 0.5 como el límite utilizado para determinar una etiqueta positiva (es decir, predecir que un cliente se producirá).

6. Cree el objeto EndpointInput con el código siguiente:

EndPointInput = EndPointInput (endpoint_name=predictor.endpoint_name,

probability_attribute="0",

probability_threshold_attribute=0.8,

destination='/opt/ml/processing/input_data')

7. Cree la programación de supervisión. Especifique la frecuencia con la que se ejecuta el trabajo de supervisión mediante ScheduleExpression. En el siguiente código, establecemos la programación en una vez por hora. Para MonitoringType, especifique ModelQuality.

response = churn_model_quality_monitor.create_monitoring_schedule (

monitor_schedule_name=churn_monitor_schedule_name,

endpoint_input=EndpointInput,

output_s3_uri = baseline_results_uri,

problem_type='BinaryClassification',

ground_truth_input=ground_truth_upload_path,

constraints=baseline_job.suggested_constraints (),

schedule_cron_expression=CronExpressionGenerator.hourly (),

enable_cloudwatch_metrics=True

      )

Cada vez que se ejecuta el trabajo de supervisión de calidad del modelo, primero ejecuta un trabajo de merge y, a continuación, un trabajo de supervisión. El trabajo de fusión combina dos conjuntos de datos diferentes: datos de inferencia recopilados por captura de datos habilitada en el endpoint y datos de inferencia de verdad de tierra proporcionados por usted.

8. Examine una sola ejecución del trabajo de supervisión programado:

executions = churn_model_quality_monitor.list_executions ()
  • latest_execution = executions [-1]
  • describe ()
  • status = executions['MonitoringExecutionStatus']
while status in ["Pending”, “InProgress"]:

print (“Aguardando a execução terminar”, end= "”)

wait (logs=falso)

latest_job = latest_execution.describe ()

print ()

print (f "{latest_job ['ProcessingJobName']} job status:”, latest_job ['ProcessingJobStatus'])

print (f "{latest_job ['ProcessingJobName']} mensagem de saída do trabalho, se houver:”, latest_job.get ('exitMessage'))

print (f "{latest_job ['ProcessingJobName']} motivo da falha de trabalho, se houver:”, latest_job.get ('FailureReason'))

sleep (30) # execuções de qualidade do modelo consistem em dois trabalhos de processamento, aguarde o segundo trabalho para começar

latest_execution = churn_model_quality_monitor.list_executions () [-1]

execução = churn_model_quality_monitor.describe_schedule () ["lastMonitoringExecutionSummary"]

status = execução ['MonitoringExecutionStatus']




print (“Status de execução é:”, status)




if status != 'Ready':

print (execution)

    print (“====STOP====\ n Nenhuma execução concluída para inspecionar mais. Aguarde até que uma execução seja concluída ou investigue falhas relatadas anteriormente.“

9. Compruebe las infracciones con las restricciones de línea base:

  • options.display.max_colwidth = Nenhum
  • violations = latest_execution.constraint_violations () .body_dict ["violações"]
  • violations_df = pd.json_normalize (violations)
violations_df.head (10)

La siguiente captura de pantalla muestra las diversas infracciones generadas.

 

 

En esta lista, puede ver que la tasa de falsos positivos y la tasa de falsos negativos son mayores que las restricciones generadas o modificadas durante el paso de referencia. Del mismo modo, las métricas de precisión y precisión son menores de lo esperado, lo que indica la degradación de la calidad del modelo.

 

Análisis de la calidad del modelo con métricas de Amazon CloudWatch

Además de las infracciones, la programación de supervisión también emite métricas de Amazon CloudWatch . En este paso, visualizará las métricas generadas y configurará una alarma de CloudWatch para activarse cuando la calidad del modelo se desvía de los umbrales de línea base. También puede usar alarmas de CloudWatch para activar acciones correctivas, como readiestrar el modelo o actualizar el conjunto de datos de formación.

  1. Para ver la lista de las métricas de CloudWatch generadas, introduzca el código siguiente:
cw_client = boto3.session () .client ('cloudwatch')

namespace='AWS/SAGEMaker/Endpoints/Model-métricas'

cw_dimenstions= [

{

'Name': 'Ponto de extremidade',

'Value': endpoint_name

},

{

'Name': 'MonitoringSchedule',

'Value': churn_monitor_schedule_name

}

]




paginator = cw_client.get_paginator ('list_metrics')

for response in paginator.paginate (dimensions=CW_dimenstions, namespace=Namespace):

model_quality_metrics = response ['Metrics']




for metric in model_quality_metrics:
        print (metric ['metricName'])

Puede ver una salida similar a la siguiente:

f0_5_best_constant_classifier

f2_best_constant_classifier

f1_best_constant_classifier

auc

precision

accuracy_best_constant_classifier

true_positive_rate

f1

precision

false_positive_rate

f0_5

true_negative_rate

false_negative_rate

recall_best_constant_classifier

precision_best_constant_classifier

recall

f2

2. Cree una alarma para cuando una métrica específica no cumpla con el umbral configurado. En el siguiente código, creamos una alarma si el valor F2 del modelo cae por debajo del umbral sugerido por las restricciones de línea base:

ALARM_NAME='MODEL_QUALITY_F2_SCORE'

alarm_desc='Aciona um alarme do cloudwatch quando a pontuação f2 se afasta das restrições da linha de base'

mdoel_quality_f2_drift_threshold=0.625 # #Definindo este limite propositalmente lento para ver o alarme rapidamente.

metric_name='f2'

namespace='AWS/SAGEMaker/Endpoints/Model-métricas'




#endpoint_name =endpoint_name

#monitoring_schedule_name =mon_schedule_name




put_metric_alarm (

alarmName=alarm_name,

alarmdescription=alarm_desc,

actionSenabled=True,

#AlarmActions = [sns_notifications_topic],

metricName=Metric_name,

namespace=Namespace,

Statistic='Média',

Dimensions = [

{

'Name': 'Ponto de extremidade',

'Value': endpoint_name

},

{

'Name': 'MonitoringSchedule',

'Value': churn_monitor_schedule_name

}

],

Period=600,

EvaluationPeriods=1,

DataPointsToalarm=1,

Threshold=MDOEL_QUALITY_F2_DRIFT_THRESHOLD,

comparisOnOperator='LessthanOrequalToThreshold',

treatMissingData='Violation'
)

En unos minutos, debería ver una alarma de CloudWatch creada. La alarma muestra primero el estado Datos insuficientes y, a continuación, cambia a Alerta. Puede ver su estado en la consola de CloudWatch.

 

 

Después de generar la alarma, puede decidir qué acciones desea realizar en estas alertas. Una posible acción podría ser actualizar los datos de capacitación y readiestrar el modelo.

Visualización de los informes en Amazon SageMaker Studio

Puede recopilar todas las métricas que emite Model Monitor y verlas en Amazon SageMaker Studio, un entorno de desarrollo (IDE) visual totalmente integrado para ML para que pueda analizar visualmente el rendimiento del modelo sin escribir código ni utilizar herramientas de terceros. También puede ejecutar análisis ad hoc en los informes generados en una instancia de jupyter notebook de SageMaker.

La siguiente figura muestra métricas y gráficos de ejemplo en Studio. Ejecute el jupyter notebook en el entorno de Studio para ver todas las métricas y gráficos relacionados con el ejemplo de churn del cliente.

 

 

Conclusión

SageMaker Model Monitoring es una herramienta muy potente que permite a las organizaciones que emplean modelos ML crear un ciclo continuo de monitoreo y actualización de modelos. En esta publicación se analiza la capacidad de monitoreo con un enfoque en la supervisión de la calidad de un modelo ML implementado. El jupyter notebook incluido con la publicación proporciona instrucciones detalladas sobre el monitoreo de un modelo de clasificación binaria XGBoost, junto con una vista de las restricciones de línea base generadas y las infracciones contra las restricciones de línea base, y configura las respuestas automatizadas a las infracciones usando Alertas de CloudWatch. Este flujo de trabajo integral le permite crear canalizaciones de actualización de modelos, supervisión y formación continua de modelos. Pruebe Model Monitor y deje sus comentarios en los comentarios.

 

Este artículo fue traducido del Blog da AWS en Inglês.

 


Sobre los autores

Sireesha Muppala es Arquitecto de Soluciones Especializadas en AI/ML en AWS, que proporciona orientación a los clientes sobre la arquitectura e implementación de soluciones de aprendizaje automático a escala. Recibió su doctorado en Ciencias de la Computación de la Universidad de Colorado, Colorado Springs. En su tiempo libre, Sireesha le encanta correr y caminar por los senderos de Colorado.

 

 

 

David Nigenda es ingeniero de desarrollo de software en el equipo de Amazon SageMaker. Su trabajo actual se centra en proporcionar información útil sobre los flujos de trabajo de aprendizaje automático de producción. En su tiempo libre trata de mantenerse al día con sus hijos.

 

 

 

 

Archana Padmasenan es directora de producto senior de Amazon SageMaker. Le gusta construir productos que deleitan a los clientes.

 

 

 

 

Revisor

Sergio Beltrán es Arquitecto de Soluciones especialista en AI/ML en AWS. En su rol apoya a los clientes a encontrar la mejor solución y arquitectura para sus necesidades y aprovechar los servicios de  AI/ML para generar innovación y mejorar la productividad. Antes de AWS, trabajó como data scientist y gerente de business development en la industria Telco