我正在尝试使用本地的 sagemaker 资源以编程方式触发 sagemaker 笔记本。我在 sagemaker 管道步骤中遇到了 NotebookJobStep。我已经成功创建了一个管道,并且能够运行运行 .ipynb 笔记本的管道的执行。现在的问题是我需要将参数从 start_pipeline_execution boto3 函数传递到笔记本内部。据我所知,将参数传递给 NotebookJobStep 中的笔记本的唯一方法是在创建 NotebookJobStep 和 Pipeline 期间使用参数属性。对于我的用例,我需要将调用 start_pipeline_execution 的参数传递给 NotebookJobStep,因此每个管道执行都可以使用不同的参数。有什么办法可以做到这一点吗?
我做了什么:
我想做的事:
目前传递任何输入的最简单方法是通过管道参数,您可以在步骤级别或管道级别执行此操作。我不确定为什么您必须重新创建管道,正如您所说,我的建议是拥有一个 S3 位置,其中包含您需要传入的所述输入并定义可以在适当级别注入的参数变量。例如,S3 路径还可用于存储下一步必须可访问的输出。可以在此处找到使用参数的示例:https://aws.amazon.com/blogs/machine-learning/schedule-amazon-sagemaker-notebook-jobs-and-manage-multi-step-notebook-workflows-using- api/.
如果您希望通过管道进行简单的 Python 函数链接,我将使用 SageMaker Pipeline Step Decorator。在这里,您可以定义普通的 Python 代码,并在 Step 装饰器中,以传统的 Python 方式传递输入/输出更简单,而无需使用 Pipeline 参数(也可以在此路线中使用):https://docs .aws.amazon.com/sagemaker/latest/dg/pipelines-step-decorator.html