Python 如何从本地环境以编程方式(在Sagemaker笔记本中)运行jupyter笔记本

Python 如何从本地环境以编程方式(在Sagemaker笔记本中)运行jupyter笔记本,python,amazon-web-services,jupyter-notebook,boto3,amazon-sagemaker,Python,Amazon Web Services,Jupyter Notebook,Boto3,Amazon Sagemaker,我可以用boto3启动/停止Sagemaker笔记本电脑,但如何运行内部的jupyter笔记本电脑或.py脚本 这是我将从本地环境或lambda运行的东西(但这没有问题) 启动Sagemaker笔记本实例: import boto3 client = boto3.client('sagemaker') client.start_notebook_instance( NotebookInstanceName='sagemaker-notebook-name' ) 在UI中,我只需单

我可以用boto3启动/停止Sagemaker笔记本电脑,但如何运行内部的jupyter笔记本电脑或
.py
脚本

这是我将从本地环境或lambda运行的东西(但这没有问题)

启动Sagemaker笔记本实例:

import boto3

client = boto3.client('sagemaker')

client.start_notebook_instance(
    NotebookInstanceName='sagemaker-notebook-name'
)

在UI中,我只需单击“打开Jupyter”,然后运行笔记本或其中的
.py
脚本

但我想通过boto3或其他方式编程实现

我的内部文件名为
lemmatize input data.ipynb

这一定是可能的,但我不确定怎么做

我也试过:

import boto3

client = boto3.client('sagemaker')

client.start_notebook_instance(
    NotebookInstanceName='sagemaker-notebook-name'
)
在“开始笔记本”生命周期配置脚本中,在创建名为
test_script.ipynb的简单测试文件后,确定不是我的jupyter笔记本中的某些高级内容导致了错误

set -e

jupyter nbconvert --execute test_script.ipynb
但我得到了一个错误:

[NbConvertApp]警告|模式“test_script.ipynb”未匹配任何文件


我鼓励你调查一下。它在引擎盖下使用nbconvert复制并运行一个模板笔记本。我发现papermill的主要好处是,您可以轻松地对笔记本进行参数化,并通过python字典传入参数。然后,模板的副本维护执行内容和结果的历史记录

您的代码类似于:

import papermill as pm

pm.execute_notebook(
   'lemmatize-input-data.ipynb',
   'lemmatize-input-data-####.ipynb'
)
与######类似的是datetime.now()或任何您希望在笔记本执行时区分笔记本的东西

由于笔记本电脑旨在成为活动文档,因此,如果笔记本电脑发生更改并且您需要在某个时间点重新运行,您需要限制可能会发生中断性更改的外部依赖项的数量。Paperill通过对当时执行的操作进行快照来解决这一问题

更新了解更多背景信息:

我将更新jupyter笔记本,使其包含python代码而不是脚本。笔记本将一个单元一个单元地执行,就像脚本一样。如果需要,还可以在笔记本中打印和显示中间值和最终值。当造纸厂复制并执行模板笔记本时,所有输出都将显示并保存在笔记本中。这对于生成的任何图形都很方便

Papermill还具有在笔记本电脑上聚合数据的功能。请参阅,以获得一篇概述造纸厂概况的好文章。造纸机是由Netflix设计的,他们有一篇关于其背后哲学的好文章,其中提到了机器学习


综上所述,papermill可用于轻松记录在sagemaker中训练机器学习模型的每个步骤。然后使用papemrill的聚合功能,您可以图形化地查看模型随时间的变化。

您拥有在生命周期配置脚本中执行笔记本的正确方法。问题是脚本的工作目录是“/”,而Jupyter服务器是从/home/ec2 user/SageMaker启动的

因此,如果您修改脚本以寻址笔记本文件的绝对路径,它应该可以工作

jupyter nbconvert --execute /home/ec2-user/SageMaker/lemmatize-input-data.ipynb

感谢您使用亚马逊SageMaker

看一看。这可以将您的Jupyter笔记本部署为无服务器功能,然后您可以使用REST端点调用它。

这很酷。但是你能解释一下这是如何帮助在sagemaker中运行jupyter笔记本/python脚本的吗?我是个新手。在帖子中添加了更多信息。请通读我包含的一些链接以获取更多信息。这些建议对你有用吗?我也面临着同样的问题,但它目前不适用于我。有什么想法吗回溯(最后一次调用):文件“/usr/bin/jupyter nbconvert”,第11行,在sys.exit(main())文件“/usr/lib/python3.6/dist packages/jupyter_core/application.py”中,第270行,在launch_instance return super(JupyterApp,cls)中。launch_instance(argv=argv,**kwargs)文件“/usr/lib/python3.6/dist packages/traitlets/config/application.py”,第664行,在启动_instance app.start()文件“/usr/lib/python3.6/dist packages/nbconvert/nbconvertapp.py”中,第340行,在启动。。。