Schedule model quality monitoring jobs
After you create your baseline, you can call the
                    create_monitoring_schedule() method of your
                    ModelQualityMonitor class instance to schedule an hourly model
                quality monitor. The following sections show you how to create a model quality
                monitor for a model deployed to a real-time endpoint as well as for a batch
                transform job.
Important
You can specify either a batch transform input or an endpoint input, but not both, when you create your monitoring schedule.
Unlike data quality monitoring, you need to supply Ground Truth labels if you want to monitor model quality. However, Ground Truth labels could be delayed. To address this, specify offsets when you create your monitoring schedule.
Model monitor offsets
Model quality jobs include StartTimeOffset and
                        EndTimeOffset, which are fields of the
                        ModelQualityJobInput parameter of the
                        create_model_quality_job_definition method that work as
                    follows:
- 
                        StartTimeOffset- If specified, jobs subtract this time from the start time.
- 
                        EndTimeOffset- If specified, jobs subtract this time from the end time.
The format of the offsets are, for example, -PT7H, where 7H is 7 hours. You
                    can use -PT#H or -P#D, where H=hours, D=days, and M=minutes, and # is the
                    number. In addition, the offset should be in ISO 8601 duration
                        format
For example, if your Ground Truth starts coming in after 1 day, but is not complete
                    for a week, set StartTimeOffset to -P8D and
                        EndTimeOffset to -P1D. Then, if you schedule a job
                    to run at 2020-01-09T13:00, it analyzes data from between
                        2020-01-01T13:00 and 2020-01-08T13:00.
Important
The schedule cadence should be such that one execution finishes before the
                        next execution starts, which allows the Ground Truth merge job and monitoring job
                        from the execution to complete. The maximum runtime of an execution is
                        divided between the two jobs, so for an hourly model quality monitoring job,
                        the value of MaxRuntimeInSeconds specified as part of
                            StoppingCondition should be no more than 1800.
Model quality monitoring for models deployed to real-time endpoints
To schedule a model quality monitor for a real-time endpoint, pass your
                        EndpointInput instance to the endpoint_input
                    argument of your ModelQualityMonitor instance, as shown in the
                    following code sample:
from sagemaker.model_monitor import CronExpressionGenerator model_quality_model_monitor = ModelQualityMonitor( role=sagemaker.get_execution_role(), ... ) schedule = model_quality_model_monitor.create_monitoring_schedule( monitor_schedule_name=schedule_name, post_analytics_processor_script=s3_code_postprocessor_uri, output_s3_uri=s3_report_path, schedule_cron_expression=CronExpressionGenerator.hourly(), statistics=model_quality_model_monitor.baseline_statistics(), constraints=model_quality_model_monitor.suggested_constraints(), schedule_cron_expression=CronExpressionGenerator.hourly(), enable_cloudwatch_metrics=True, endpoint_input=EndpointInput( endpoint_name=endpoint_name, destination="/opt/ml/processing/input/endpoint", start_time_offset="-PT2D", end_time_offset="-PT1D", ) )
Model quality monitoring for batch transform jobs
To schedule a model quality monitor for a batch transform job, pass your
                        BatchTransformInput instance to the
                        batch_transform_input argument of your
                        ModelQualityMonitor instance, as shown in the following code
                    sample:
from sagemaker.model_monitor import CronExpressionGenerator model_quality_model_monitor = ModelQualityMonitor( role=sagemaker.get_execution_role(), ... ) schedule = model_quality_model_monitor.create_monitoring_schedule( monitor_schedule_name=mon_schedule_name, batch_transform_input=BatchTransformInput( data_captured_destination_s3_uri=s3_capture_upload_path, destination="/opt/ml/processing/input", dataset_format=MonitoringDatasetFormat.csv(header=False), # the column index of the output representing the inference probablity probability_attribute="0", # the threshold to classify the inference probablity to class 0 or 1 in # binary classification problem probability_threshold_attribute=0.5, # look back 6 hour for transform job outputs. start_time_offset="-PT6H", end_time_offset="-PT0H" ), ground_truth_input=gt_s3_uri, output_s3_uri=s3_report_path, problem_type="BinaryClassification", constraints = constraints_path, schedule_cron_expression=CronExpressionGenerator.hourly(), enable_cloudwatch_metrics=True, )