Programe trabajos de supervisión
El monitor de modelos de Amazon SageMaker le permite supervisar los datos recopilados de sus puntos de conexión en tiempo real. Puede supervisar sus datos de forma periódica o puede supervisarlos una vez, de forma inmediata. Puede crear una programación de supervisión con la API CreateMonitoringSchedule.
Con una programación de supervisión, SageMaker AI puede empezar a procesar trabajos para analizar los datos recopilados durante un período determinado. En el trabajo de procesamiento, SageMaker AI compara el conjunto de datos para el análisis actual con las estadísticas de referencia y las restricciones que proporcione. A continuación, SageMaker AI genera un informe de infracciones. Además, se emiten métricas de CloudWatch para cada característica que se está analizando.
SageMaker AI proporciona un contenedor prediseñado para realizar análisis en conjuntos de datos tabulares. Como alternativa, puede elegir utilizar su propio contenedor como se describe en el tema Compatibilidad con sus propios contenedores con el Monitor de modelos de Amazon SageMaker.
Puede crear una programación de supervisión modelo para su trabajo de transformación por lotes o de punto de conexión en tiempo real. Utilice los recursos de referencia (restricciones y estadísticas) para comparar con las entradas del trabajo por lotes o el tráfico en tiempo real.
ejemplo asignaciones de referencia
En el siguiente ejemplo, el conjunto de datos de entrenamiento utilizado para entrenar el modelo se cargó en Amazon S3. Si ya lo tiene en Amazon S3, puede apuntar a él directamente.
# copy over the training dataset to Amazon S3 (if you already have it in Amazon S3, you could reuse it) baseline_prefix = prefix + '/baselining' baseline_data_prefix = baseline_prefix + '/data' baseline_results_prefix = baseline_prefix + '/results' baseline_data_uri = 's3://{}/{}'.format(bucket,baseline_data_prefix) baseline_results_uri = 's3://{}/{}'.format(bucket, baseline_results_prefix) print('Baseline data uri: {}'.format(baseline_data_uri)) print('Baseline results uri: {}'.format(baseline_results_uri))
training_data_file = open("test_data/training-dataset-with-header.csv", 'rb') s3_key = os.path.join(baseline_prefix, 'data', 'training-dataset-with-header.csv') boto3.Session().resource('s3').Bucket(bucket).Object(s3_key).upload_fileobj(training_data_file)
ejemplo programación de análisis periódico
Si va a programar un monitor de modelos para un punto de conexión en tiempo real, utilice las restricciones y las estadísticas de referencia para comparar con el tráfico en tiempo real. El siguiente fragmento de código muestra el formato general que se utiliza para programar un monitor de modelos para un punto de conexión en tiempo real. En este ejemplo, se programa el monitor de modelos para que se ejecute cada hora.
from sagemaker.model_monitor import CronExpressionGenerator from time import gmtime, strftime mon_schedule_name = 'my-model-monitor-schedule-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) my_default_monitor.create_monitoring_schedule( monitor_schedule_name=mon_schedule_name, endpoint_input=EndpointInput( endpoint_name=endpoint_name, destination="/opt/ml/processing/input/endpoint" ), post_analytics_processor_script=s3_code_postprocessor_uri, output_s3_uri=s3_report_path, statistics=my_default_monitor.baseline_statistics(), constraints=my_default_monitor.suggested_constraints(), schedule_cron_expression=CronExpressionGenerator.hourly(), enable_cloudwatch_metrics=True, )
ejemplo programación de un análisis único
También puede programar el análisis para que se ejecute una vez sin que se repita pasando argumentos como los siguientes al método create_monitoring_schedule:
schedule_cron_expression=CronExpressionGenerator.now(), data_analysis_start_time="-PT1H", data_analysis_end_time="-PT0H",
En estos argumentos, el parámetro schedule_cron_expression programa el análisis para que se ejecute una vez, inmediatamente, con el valorCronExpressionGenerator.now(). Para cualquier programación con esta configuración, se requieren los parámetros data_analysis_start_time y data_analysis_end_time. Estos parámetros establecen la hora de inicio y la hora de finalización de una ventana de análisis. Defina estos tiempos como desplazamientos relativos a la hora actual y utilice el formato de duración ISO 8601. En este ejemplo, las horas -PT1H y -PT0H defina un intervalo entre una hora pasada y la hora actual. Con esta programación, el análisis evalúa solo los datos que se recopilaron durante el período especificado.
ejemplo programación de un trabajo de transformación por lotes
El siguiente fragmento de código muestra el formato general que se utiliza para programar un monitor de modelos para un trabajo de transformación por lotes.
from sagemaker.model_monitor import ( CronExpressionGenerator, BatchTransformInput, MonitoringDatasetFormat, ) from time import gmtime, strftime mon_schedule_name = 'my-model-monitor-schedule-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) my_default_monitor.create_monitoring_schedule( monitor_schedule_name=mon_schedule_name, batch_transform_input=BatchTransformInput( destination="opt/ml/processing/input", data_captured_destination_s3_uri=s3_capture_upload_path, dataset_format=MonitoringDatasetFormat.csv(header=False), ), post_analytics_processor_script=s3_code_postprocessor_uri, output_s3_uri=s3_report_path, statistics=my_default_monitor.baseline_statistics(), constraints=my_default_monitor.suggested_constraints(), schedule_cron_expression=CronExpressionGenerator.hourly(), enable_cloudwatch_metrics=True, )
desc_schedule_result = my_default_monitor.describe_schedule() print('Schedule status: {}'.format(desc_schedule_result['MonitoringScheduleStatus']))