如何仅在Amazon SageMaker Studio中可视化批量转换模型质量监控违规报告?
在Amazon SageMaker Studio中可视化批量转换模型质量监控违规报告
前提条件
确保你已完成Batch Transform任务的模型质量监控配置,且监控作业已生成违规报告(报告通常存储在指定S3桶中,或可通过SageMaker SDK直接获取)。
步骤1:通过SageMaker SDK加载监控违规数据
在SageMaker Studio的笔记本中,用SageMaker SDK关联你的模型质量监控作业,获取违规记录:
import sagemaker from sagemaker.model_monitor import ModelQualityMonitor # 初始化SageMaker会话 sagemaker_session = sagemaker.Session() # 关联已有的定时监控调度 model_quality_monitor = ModelQualityMonitor.attach( monitoring_schedule_name="你的批量转换监控调度名称", sagemaker_session=sagemaker_session ) # 获取最新违规数据 latest_violations = model_quality_monitor.latest_monitoring_statistics().violations # 若为一次性批量监控(非定时调度),可通过创建后的监控作业对象获取结果 # model_quality_monitor = ModelQualityMonitor.create(...) # latest_violations = model_quality_monitor.latest_monitoring_statistics().violations
步骤2:转换数据并生成可视化图表
将违规数据转为DataFrame,用matplotlib绘制直观的可视化图表:
import pandas as pd import matplotlib.pyplot as plt # 把违规记录转为DataFrame格式 violations_df = pd.DataFrame([v.__dict__ for v in latest_violations]) # 1. 绘制违规指标分布柱状图 plt.figure(figsize=(12, 6)) violations_df['metric_name'].value_counts().plot(kind='bar', color='#1f77b4') plt.title('模型质量监控违规指标分布') plt.xlabel('指标名称') plt.ylabel('违规次数') plt.grid(axis='y', linestyle='--', alpha=0.7) plt.show() # 2. 查看多周期违规趋势(仅适用于定时监控调度) execution_history = model_quality_monitor.list_monitoring_executions() history_df = pd.DataFrame([h.__dict__ for h in execution_history]) # 格式化时间并排序 history_df['start_time'] = pd.to_datetime(history_df['start_time']) history_df = history_df.sort_values('start_time') plt.figure(figsize=(12, 6)) plt.plot(history_df['start_time'], history_df['violation_count'], marker='o', linestyle='-') plt.title('模型质量违规次数趋势') plt.xlabel('监控执行时间') plt.ylabel('违规次数') plt.xticks(rotation=45) plt.grid(linestyle='--', alpha=0.7) plt.show()
步骤3:直接读取S3中的违规报告文件
如果违规报告以CSV/JSON格式存在S3桶中,可直接读取并可视化:
import boto3 import pandas as pd # 初始化S3客户端 s3 = boto3.client('s3') # 替换为你的存储桶和报告路径 bucket_name = "你的监控结果存储桶" report_key = "path/to/monitoring/report/violations.csv" # 读取S3中的报告文件 obj = s3.get_object(Bucket=bucket_name, Key=report_key) violations_df = pd.read_csv(obj['Body']) # 重复步骤2的可视化代码即可生成图表
注意事项
- 确保SageMaker Studio执行角色拥有访问监控作业和对应S3桶的权限(需包含
sagemaker:DescribeMonitoringSchedule、s3:GetObject等权限)。 - 若为一次性批量转换监控,需等待监控作业执行完成后再获取违规数据。
内容的提问来源于stack exchange,提问作者Muhammad Yahya
相关产品推荐
相关产品推荐

