選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 CloudWatch 和 Lambda 設定自動訓練任務終止的 Debugger

焦點模式
使用 CloudWatch 和 Lambda 設定自動訓練任務終止的 Debugger - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

偵錯工具規則會監控訓練工作狀態,而 CloudWatch 事件規則會監看偵錯工具規則訓練工作評估狀態。下列各節概述使用 CloudWatch 和 Lambda 自動化訓練任務終止所需的程序。

步驟 1:建立 Lambda 函數

建立 Lambda 函式
  1. 在 https://https://console.aws.amazon.com/lambda/ 開啟 AWS Lambda 主控台。

  2. 在導覽面板上,選擇函式,然後選擇建立函式

  3. 建立函式頁面上,選擇從頭開始撰寫

  4. 基本資訊區段中,輸入函式名稱 (例如 debugger-rule-stop-training-job)。

  5. 針對執行期,選擇 Python 3.7

  6. 針對許可,請展開下拉式清單選項,然後選擇變更預設執行角色

  7. 針對執行角色,選擇使用現有角色,然後選擇您在 SageMaker AI 上用於訓練任務的 IAM 角色。

    注意

    確保您使用的執行角色連接 AmazonSageMakerFullAccessAWSLambdaBasicExecutionRole。否則,Lambda 函式將無法正確回應訓練工作的 Debugger 規則狀態變更。如果您不確定正在使用哪個執行角色,請在 Jupyter 筆記本儲存格中執行下列程式碼,以擷取執行角色輸出:

    import sagemaker sagemaker.get_execution_role()
  8. 請在頁面底部,選擇建立函式

下圖顯示建立函式頁面的範例,其輸入欄位和選取已完成。

建立函式頁面。

步驟 2:設定 Lambda 函式

配置 Lambda 函式
  1. 在設定頁面的函式程式碼區段中,將下列 Python 指令碼貼到 Lambda 程式碼編輯器窗格中。lambda_handler 功能會監控 CloudWatch 收集的偵錯工具規則評估狀態,並觸發 StopTrainingJob API 作業。client for AWS SDK for Python (Boto3) SageMaker AI 提供高階方法 stop_training_job,可觸發 StopTrainingJob API 操作。

    import json import boto3 import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): training_job_name = event.get("detail").get("TrainingJobName") logging.info(f'Evaluating Debugger rules for training job: {training_job_name}') eval_statuses = event.get("detail").get("DebugRuleEvaluationStatuses", None) if eval_statuses is None or len(eval_statuses) == 0: logging.info("Couldn't find any debug rule statuses, skipping...") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } # should only attempt stopping jobs with InProgress status training_job_status = event.get("detail").get("TrainingJobStatus", None) if training_job_status != 'InProgress': logging.debug(f"Current Training job status({training_job_status}) is not 'InProgress'. Exiting") return { 'statusCode': 200, 'body': json.dumps('Nothing to do') } client = boto3.client('sagemaker') for status in eval_statuses: logging.info(status.get("RuleEvaluationStatus") + ', RuleEvaluationStatus=' + str(status)) if status.get("RuleEvaluationStatus") == "IssuesFound": secondary_status = event.get("detail").get("SecondaryStatus", None) logging.info( f'About to stop training job, since evaluation of rule configuration {status.get("RuleConfigurationName")} resulted in "IssuesFound". ' + f'\ntraining job "{training_job_name}" status is "{training_job_status}", secondary status is "{secondary_status}"' + f'\nAttempting to stop training job "{training_job_name}"' ) try: client.stop_training_job( TrainingJobName=training_job_name ) except Exception as e: logging.error( "Encountered error while trying to " "stop training job {}: {}".format( training_job_name, str(e) ) ) raise e return None

    如需 Lambda 程式碼編輯器介面的詳細資訊,請參閱使用 AWS Lambda 主控台編輯器建立函數

  2. 略過所有其他設定,然後選擇組態頁面頂端的儲存

步驟 3:建立 CloudWatch 事件規則,並連結至 Debugger 的 Lambda 函數

建立 CloudWatch 事件規則並連結至偵錯工具的 Lambda 函式
  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 在左側導覽窗格內的事件下,選擇規則

  3. 選擇建立規則

  4. 步驟 1:建立規則頁面的事件來源區段中,選擇服務名稱SageMaker AI,然後選擇事件類型的 SageMaker AI 訓練任務狀態變更。事件模式預覽看起來應該如下列範例的 JSON 字串所示:

    { "source": [ "aws.sagemaker" ], "detail-type": [ "SageMaker Training Job State Change" ] }
  5. 目標區段, 選擇新增目標*,然後選擇您建立的 Lambda 函式 debugger-rule-stop-training-job。此步驟會將 CloudWatch 事件規則與 Lambda 函式相連結。

  6. 選擇設定詳細資訊,然後前往步驟 2:設定規則詳細資訊頁面。

  7. 指定 CloudWatch 規則定義名稱。例如 debugger-cw-event-rule

  8. 選擇建立規則以完成。

  9. 返回 Lambda 函式組態頁面,並重新整理頁面。在設計工具面板中確認已正確設定。CloudWatch 事件規則應該註冊為 Lambda 函式的觸發器。組態設計看起來應該類似下列範例:

    CloudWatch 設定的設計工具面板。
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。