You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

作为AWS管理员,如何限制用户SageMaker实例及训练任务的运行时长?

限制SageMaker Notebook实例与训练任务运行时长的解决方案

一、限制Notebook实例运行时长

方法1:通过生命周期配置添加自动停止脚本

SageMaker生命周期配置支持在实例启动时执行自定义脚本,你可以通过脚本设置定时停止逻辑:

  1. 编写启动脚本(示例命名为auto-stop-notebook.sh):
#!/bin/bash
# 设置超时阈值(示例为8小时,单位:秒)
TIMEOUT_SECONDS=28800

# 等待指定时长后调用API停止实例
sleep $TIMEOUT_SECONDS
aws sagemaker stop-notebook-instance --notebook-instance-name $NOTEBOOK_INSTANCE_NAME
  1. 在SageMaker控制台创建生命周期配置,将上述脚本上传为启动脚本。
  2. 将该配置关联到目标Notebook实例(新建或编辑实例时选择对应配置)。
  3. 确保Notebook实例绑定的IAM角色拥有sagemaker:StopNotebookInstance权限。

方法2:用EventBridge + Lambda批量管控

适合统一管理所有实例,无需逐个配置:

  1. 创建Lambda函数,编写实例检查与停止逻辑:
import boto3
from datetime import datetime, timezone

def lambda_handler(event, context):
    sagemaker_client = boto3.client('sagemaker')
    # 允许的最大运行时长(单位:小时)
    MAX_RUN_HOURS = 8

    # 获取所有运行中的Notebook实例
    running_instances = sagemaker_client.list_notebook_instances(
        NotebookInstanceStatusEquals='InService'
    )['NotebookInstances']

    for instance in running_instances:
        instance_name = instance['NotebookInstanceName']
        start_time = instance['CreationTime']
        # 计算已运行时长
        run_duration_hours = (datetime.now(timezone.utc) - start_time).total_seconds() / 3600

        if run_duration_hours > MAX_RUN_HOURS:
            print(f"Stopping instance {instance_name} - 已运行{run_duration_hours:.2f}小时")
            sagemaker_client.stop_notebook_instance(NotebookInstanceName=instance_name)
  1. 创建EventBridge规则,设置定时触发(比如每小时执行一次),关联上述Lambda函数。
  2. 给Lambda的IAM角色添加sagemaker:ListNotebookInstances和sagemaker:StopNotebookInstance权限。

二、限制训练任务运行时长

方法1:创建任务时指定最大运行时间

在创建训练任务时,通过MaxRuntimeInSeconds参数设置超时阈值,超过后任务会自动终止:

  • 控制台创建:在「高级设置」中找到「最大运行时间」,输入秒数(比如86400=24小时)。
  • CLI/API创建:调用CreateTrainingJob时添加参数:
aws sagemaker create-training-job \
  --training-job-name my-training-task \
  --max-runtime-in-seconds 86400 \
  # 其他必要参数(算法、数据存储等)

方法2:用IAM策略强制规范时长

如果要确保所有用户必须设置不超过上限的运行时间,可添加如下拒绝策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "sagemaker:CreateTrainingJob",
            "Resource": "*",
            "Condition": {
                "Or": [
                    {
                        "Null": {
                            "sagemaker:MaxRuntimeInSeconds": true
                        }
                    },
                    {
                        "NumericGreaterThan": {
                            "sagemaker:MaxRuntimeInSeconds": 86400
                        }
                    }
                ]
            }
        }
    ]
}

该策略会拒绝两种请求:未设置MaxRuntimeInSeconds,或设置的值超过86400秒(24小时)。

内容的提问来源于stack exchange,提问作者Abdo Sheham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:17:21