【发布时间】:2021-02-03 13:35:16
【问题描述】:
我想设置一些自动计划来运行我的 SageMaker Notebook。
目前我找到了这样的链接:
https://towardsdatascience.com/automating-aws-sagemaker-notebooks-2dec62bc2c84
我按照步骤设置了 lamda、cloudwatch 和 Lifecycle 配置。
在不同的实验中,有时 on_start 生命周期配置可以执行 jupyter 笔记本(在笔记本中我只是安装一些包并加载包并将加载状态保存到 S3 存储桶)。但是,由于无法停止笔记本而失败。
然后,我为我的 IAM 角色添加了 SageMaker 自动停止权限。现在可以打开和关闭笔记本实例。但我再也看不到任何上传到我的 S3 的内容了。我想知道 on_start 是否在完成步骤之前过早地启动了自动停止?
下面是我当前生命周期配置的脚本
set -e
ENVIRONMENT=python3
NOTEBOOK_FILE="/home/ec2-user/SageMaker/Test Notebook.ipynb"
AUTO_STOP_FILE="/home/ec2-user/SageMaker/auto-stop.py"
source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &
echo "Finishing running the jupyter notebook"
source /home/ec2-user/anaconda3/bin/deactivate
# PARAMETERS
IDLE_TIME=60 # 1 minute
echo "Fetching the autostop script"
wget -O autostop.py https://raw.githubusercontent.com/mariokostelac/sagemaker-setup/master/scripts/auto-stop-idle/autostop.py
echo "Starting the SageMaker autostop script in cron"
(crontab -l 2>/dev/null; echo "*/1 * * * * /bin/bash -c '/usr/bin/python3 $DIR/autostop.py --time ${IDLE_TIME} | tee -a /home/ec2-user/SageMaker/auto-stop-idle.log'") | crontab -
请注意,我确实从 cloudwatch 日志中看到了“正在完成运行 jupyter 笔记本”的回显。但这通常是我从日志中看到的第一件事,它会立即显示 - 比我预期的需要多长时间。
另外,目前笔记本只运行一些假任务。真正的任务可能需要一个多小时。
任何建议都有帮助!感谢您花时间阅读我的问题。
【问题讨论】:
-
我遇到了同样的问题。笔记本实例没有机会启动。 Lambda 触发 notebook-instance 启动,然后触发此生命周期配置,该配置在 notebook 实例中运行特定的 ipynb 文件。就我而言,我查看笔记本实例,发现它仍处于“待处理”状态。我想我需要在生命周期配置文件中建立一些空闲时间,但我不知道该怎么做。
标签: python amazon-web-services jupyter-notebook lifecycle amazon-sagemaker