Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用SageMaker生命周期配置在启动时执行jupyter笔记本_Python_Amazon Web Services_Jupyter Notebook_Lifecycle_Amazon Sagemaker - Fatal编程技术网

Python 使用SageMaker生命周期配置在启动时执行jupyter笔记本

Python 使用SageMaker生命周期配置在启动时执行jupyter笔记本,python,amazon-web-services,jupyter-notebook,lifecycle,amazon-sagemaker,Python,Amazon Web Services,Jupyter Notebook,Lifecycle,Amazon Sagemaker,我想设置一些运行SageMaker笔记本的自动时间表。 目前我找到了如下链接: 我按照步骤设置lamda、cloudwatch和生命周期配置。 在不同的实验中,有时on_start lifecycle配置可以执行jupyter笔记本(在笔记本中我只安装了一些包并加载包,并将加载状态保存到S3 bucket)。然而,它失败了,因为它无法停止笔记本 然后,我为我的IAM角色添加了SageMaker autostop的权限。现在可以打开和关闭笔记本实例。但我再也看不到任何上传到S3的内容了。我想知道

我想设置一些运行SageMaker笔记本的自动时间表。
目前我找到了如下链接:

我按照步骤设置lamda、cloudwatch和生命周期配置。
在不同的实验中,有时on_start lifecycle配置可以执行jupyter笔记本(在笔记本中我只安装了一些包并加载包,并将加载状态保存到S3 bucket)。然而,它失败了,因为它无法停止笔记本

然后,我为我的IAM角色添加了SageMaker autostop的权限。现在可以打开和关闭笔记本实例。但我再也看不到任何上传到S3的内容了。我想知道on_启动是否在完成步骤之前过早启动自动停止

下面是我当前生命周期配置的脚本

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日志中看到了echo“完成运行jupyter笔记本”。但这通常是我从日志中看到的第一件事,它会立即出现——比我预期的时间要快

此外,目前笔记本电脑只运行一些假的任务。真正的任务可能需要一个多小时

任何建议都有帮助!感谢您抽出时间阅读我的问题。

当您说

我确实从cloudwatch日志中看到了echo“完成jupyter笔记本的运行”。但这通常是我从日志中看到的第一件事,它会立即出现——比我预期的时间要快

当脚本中有这一行时,这是意料之中的

nohup jupyter nbconvert--executeprocessor.timeout=-1--executeprocessor.kernel\u name=python3--executeprocessor.NOTEBOOK\u FILE&

帮助进程即使从终端注销也能保持运行。 将进程发送到后台。 因此,下一个命令将在这一行之后立即运行

您可能在这里使用了“nohup”和“&”,因为运行笔记本所花费的时间超过了LifecycleConfiguration脚本允许的最大时间,这在我看来是好的


现在可以打开和关闭笔记本实例。但我再也看不到任何上传到S3的内容了。我想知道on_启动是否在完成步骤之前过早启动自动停止

你的剧本里有

(crontab-l2>/dev/null;echo“*/1****/bin/bash-c'/usr/bin/python3$DIR/autostop.py--time${IDLE\u time}| tee-a/home/ec2 user/SageMaker/auto stop IDLE.log')| crontab-

这是设置每分钟运行的作业。作业执行$DIR/autostop.py脚本(看起来$DIR的值没有被设置)。并且autostop.py脚本使用$IDLE_TIME来确定是否应该调用stop_notebook_实例API

没有详细了解autostop.py脚本的功能。您可能需要调整Cron作业的频率,或者调整$IDLE\u时间

另一个想法是,既然你说你真正的笔记本需要1个多小时,也许你可以让笔记本在最后一个单元调用stop_notebook_实例API


六月

我也有同样的问题。笔记本实例还没有机会启动。Lambda触发notebook实例启动,然后触发在notebook实例中运行特定ipynb文件的生命周期配置。在我的例子中,我查看了笔记本实例,发现它仍然处于“待定”状态。我想我需要在lifecycle配置文件中加入一些空闲时间,但我不确定如何做到这一点。