本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
解讀結果
當您執行基準處理工作並取得資料集的統計資料和限制條件之後,您就可以執行監控工作來計算統計資料,並列出與基準限制條件相關的任何違規。根據預設,您的帳戶也會報告 Amazon CloudWatch 指標。如需有關在 Amazon SageMaker Studio 中檢視監控結果的資訊,請參閱 在 Amazon SageMaker Studio 中視覺化即時端點的結果。
列出執行
排程會依指定的間隔開始監控工作。下列程式碼列出最近的五個執行。如果您在建立每小時排程後執行此程式碼,則執行可能是空的,而且可能需要等到超過小時界限 (在 中UTC) 才能看到執行開始。下列程式碼包含等待的邏輯。
mon_executions = my_default_monitor.list_executions() print("We created a hourly schedule above and it will kick off executions ON the hour (plus 0 - 20 min buffer.\nWe will have to wait till we hit the hour...") while len(mon_executions) == 0: print("Waiting for the 1st execution to happen...") time.sleep(60) mon_executions = my_default_monitor.list_executions()
檢查特定執行
在上一個步驟中,您挑選最近完成或失敗的排程執行。你可以探索對錯情況。終端機狀態為:
-
Completed
– 監控執行完成,在違規報告中找不到任何問題。 -
CompletedWithViolations
– 執行完成,但偵測到限制條件違規。 -
Failed
– 監控執行失敗,可能是因為用戶端錯誤 (例如角色問題) 或基礎結構問題。若要識別原因,請參閱FailureReason
和ExitMessage
。
latest_execution = mon_executions[-1] # latest execution's index is -1, previous is -2 and so on.. time.sleep(60) latest_execution.wait(logs=False) print("Latest execution status: {}".format(latest_execution.describe()['ProcessingJobStatus'])) print("Latest execution result: {}".format(latest_execution.describe()['ExitMessage'])) latest_job = latest_execution.describe() if (latest_job['ProcessingJobStatus'] != 'Completed'): print("====STOP==== \n No completed executions to inspect further. Please wait till an execution completes or investigate previously reported failures.")
report_uri=latest_execution.output.destination print('Report Uri: {}'.format(report_uri))
列出產生的報告
使用下列程式碼列出產生的報告。
from urllib.parse import urlparse s3uri = urlparse(report_uri) report_bucket = s3uri.netloc report_key = s3uri.path.lstrip('/') print('Report bucket: {}'.format(report_bucket)) print('Report key: {}'.format(report_key)) s3_client = boto3.Session().client('s3') result = s3_client.list_objects(Bucket=report_bucket, Prefix=report_key) report_files = [report_file.get("Key") for report_file in result.get('Contents')] print("Found Report Files:") print("\n ".join(report_files))
違規報告
如果有違反基準的情形,則會顯示在違規報告中。使用下面的程式碼列出違規。
violations = my_default_monitor.latest_monitoring_constraint_violations() pd.set_option('display.max_colwidth', -1) constraints_df = pd.io.json.json_normalize(violations.body_dict["violations"]) constraints_df.head(10)
這只適用於包含表格式資料的資料集。下列結構描述檔案指定計算的統計資料和監控的違規。
表格式資料集的輸出檔案
檔案名稱 | 描述 |
---|---|
statistics.json |
針對所分析資料集的每個特徵,包含單欄式統計資料。請在下一個主題中查看此檔案的結構描述。 注意此檔案僅為了資料品質監控而建立。 |
constraint_violations.json |
與 |
根據預設, 會為每個功能Amazon SageMaker Model Monitor 預建容器儲存一組 Amazon CloudWatch 指標。
容器程式碼可以在此位置發出 CloudWatch 指標:/opt/ml/output/metrics/cloudwatch
。