以编程方式“停止”Sagemaker 实例

问题描述 投票:0回答:1

我可以通过使用生命周期配置自动关闭 sagemaker 实例,如此处所示

https://stackoverflow.com/questions/53609409/automatically-stop-sagemaker-notebook-instance-after-inactivity

有没有办法通过任何“图像终端”命令以编程方式实现此目的? 图像终端是指可以通过“Sagemaker Studio”中的“Launcher”打开的 Linux shell

我的用例是大型计算作业,其中自动解决方案中的空闲非活动时间将非常昂贵。 如果有一个

shutdown_instance()
会很有用,可以在冗长的 shell 脚本中添加为最后一个命令

amazon-web-services amazon-sagemaker shutdown
1个回答
0
投票

我试图用 Sagemaker JupyterLab 笔记本做类似的事情。 (我们有一些长期运行的分析,这些分析将最终转移到 lambda 或类似的,但目前是笔记本计划作业)。由于实例捆绑在应用程序中(您会注意到像 List_Instances() 这样的命令不会显示这些实例!),我们需要:

  1. 确定哪个应用程序正在驱动笔记本电脑。
  2. 删除该应用程序。

我们将其作为笔记本的最后一个单元格运行。这是使用 Python 编写的,但您可以在任何 bash 脚本中使用 AWS CLI 中的等效命令来获得相同的效果。


def Cleanup_Notebook_Resouces():
    log_path = '/opt/ml/metadata/resource-metadata.json'
    with open(log_path, 'r') as logs:
        AppDetails = json.load(logs)
    AppDetails

    AppDetails["AppName"] = AppDetails.pop("ResourceName")
    AppDetails.pop("ResourceArn")
    AppDetails.pop("AppImageVersion")

    sage = boto3.client("sagemaker")

    try:
        sage.delete_app(**AppDetails)

    except sage.exceptions.ClientError:
        print("***" + AppDetails["AppName"] + " App Likely already deleted ***")
        print("Current apps:")
        print()
        [print(a, "\n") for a in sage.list_apps()["Apps"]]     

对于真正的笔记本实例,同样的应该...您可以使用

boto3.client("sagemaker").List_Notebook_Instances()
- 元数据日志可能包含一个有用的资源名称,您可以按照下面的方式使用,但我尚未验证这一点。

© www.soinside.com 2019 - 2024. All rights reserved.