我可以通过使用生命周期配置自动关闭 sagemaker 实例,如此处所示
https://stackoverflow.com/questions/53609409/automatically-stop-sagemaker-notebook-instance-after-inactivity
有没有办法通过任何“图像终端”命令以编程方式实现此目的? 图像终端是指可以通过“Sagemaker Studio”中的“Launcher”打开的 Linux shell
我的用例是大型计算作业,其中自动解决方案中的空闲非活动时间将非常昂贵。 如果有一个
shutdown_instance()
会很有用,可以在冗长的 shell 脚本中添加为最后一个命令
我试图用 Sagemaker JupyterLab 笔记本做类似的事情。 (我们有一些长期运行的分析,这些分析将最终转移到 lambda 或类似的,但目前是笔记本计划作业)。由于实例捆绑在应用程序中(您会注意到像 List_Instances() 这样的命令不会显示这些实例!),我们需要:
我们将其作为笔记本的最后一个单元格运行。这是使用 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()
- 元数据日志可能包含一个有用的资源名称,您可以按照下面的方式使用,但我尚未验证这一点。