

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在哪里可以创建笔记本作业
<a name="create-notebook-auto-run"></a>

如果您想创建笔记本作业，您有多种选择。以下内容为您提供了用于创建笔记本作业的 SageMaker AI 选项。

您可以在 Studio 用户界面的 JupyterLab 笔记本中创建作业，也可以使用 SageMaker Python SDK 以编程方式创建作业：
+ 如果在 Studio UI 中创建笔记本作业，提供有关映像和内核、安全配置以及任何自定义变量或脚本的详细信息，作业就会被调度。有关如何使用 SageMaker 笔记本作业安排作业的详细信息，请参阅[在 Studio 中创建笔记本作业](create-notebook-auto-run-studio.md)。
+ 要使用 SageMaker Python SDK 创建笔记本作业，您可以创建一个带有 Notebook Job 步骤的管道并启动按需运行，或者可以选择使用管道调度功能来安排未来的运行。S SageMaker DK 使您可以灵活地自定义管道——您可以将管道扩展到包含多个笔记本作业步骤的工作流程。由于您同时创建了 SageMaker Notebook Job 步骤和管道，因此您可以在 SageMaker Notebook Job 作业控制面板中跟踪管道执行状态，也可以在 Studio 中查看工作流图。有关如何使用 SageMaker Python SDK 安排任务的详细信息以及指向示例笔记本的链接，请参阅[使用 SageMaker AI Python SDK 示例创建笔记本作业](create-notebook-auto-run-sdk.md)。

# 使用 SageMaker AI Python SDK 示例创建笔记本作业
<a name="create-notebook-auto-run-sdk"></a>

要使用 SageMaker Python SDK 运行独立笔记本，您需要创建一个 Notebook Job 步骤，将其附加到管道中，然后使用 Pipelines 提供的实用程序按需运行作业，或者可以选择安排一个或多个未来的作业。以下各节介绍了创建按需或计划笔记本作业以及跟踪运行的基本步骤。此外，如果需要向笔记本作业传递参数或在笔记本中连接 Amazon EMR，请参阅下面的讨论--在这些情况下，需要对 Jupyter Notebook 进行额外的准备。您还可以为 `NotebookJobStep` 的参数子集应用默认值，这样就不必在每次创建笔记本作业步骤时都指定参数。

要查看演示如何使用 SageMaker AI Python SDK 安排笔记本作业的示例笔记本，请参阅[笔记本作业示例笔记本](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step)。

**Topics**
+ [

## 创建笔记本作业的步骤
](#create-notebook-auto-run-overall)
+ [

## 在 Studio UI 面板上查看笔记本作业
](#create-notebook-auto-run-dash)
+ [

## 在 Studio 中查看管道图
](#create-notebook-auto-run-graph)
+ [

## 向笔记本传递参数
](#create-notebook-auto-run-passparam)
+ [

## 在输入笔记本中连接 Amazon EMR 集群
](#create-notebook-auto-run-emr)
+ [

## 设置默认选项
](#create-notebook-auto-run-intdefaults)

## 创建笔记本作业的步骤
<a name="create-notebook-auto-run-overall"></a>

您可以创建一个立即运行或按计划运行的笔记本作业。以下说明介绍了这两种方法。

**要计划笔记本作业，请完成以下基本步骤：**

1. 创建一个 `NotebookJobStep` 实例。有关`NotebookJobStep`参数的详细信息，请参阅 [sagemaker.workflow.steps。 NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep)。至少可以提供以下参数，如以下代码片段所示：
**重要**  
如果您使用 SageMaker Python SDK 安排笔记本作业，则只能指定某些图像来运行笔记本作业。有关更多信息，请参阅 [SageMaker AI Python SDK 笔记本作业的图像限制](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk)。

   ```
   notebook_job_step = NotebookJobStep(
       input_notebook=input-notebook,
       image_uri=image-uri,
       kernel_name=kernel-name
   )
   ```

1. 创建一个管道，将 `NotebookJobStep` 作为一个步骤，如以下代码所示：

   ```
   pipeline = Pipeline(
       name=pipeline-name,
       steps=[notebook_job_step],
       sagemaker_session=sagemaker-session,
   )
   ```

1. 按需运行管道，或选择性地安排未来的管道运行。要启动立即运行，请使用以下命令：

   ```
   execution = pipeline.start(
       parameters={...}
   )
   ```

   您还可以选择安排未来单次管道运行或按预定时间间隔安排多次运行。您可以在 `PipelineSchedule` 中指定日程表，然后用 `put_triggers` 将时间表对象传递给管道。有关管道调度的更多信息，请参阅 [使用 SageMaker Python 软件开发工具包安排管道](pipeline-eventbridge.md#build-and-manage-scheduling)。

   下面的示例安排管道在 2023 年 12 月 12 日 10:31:32 UTC 运行一次。

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) 
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

   以下示例将管道调度为在 2022 年至 2023 年期间每月最后一个星期五上午 10:15 UTC 运行。有关基于 cron 的调度的详细信息，请参阅[基于 cron 的调度](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#cron-based)。

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       cron="15 10 ? * 6L 2022-2023"
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

1. （可选）在 “笔记本作业” 控制面板中查看您的 SageMaker 笔记本作业。您为笔记本作业步骤的 `tags` 参数提供的值可控制 Studio UI 捕捉和显示作业的方式。有关更多信息，请参阅 [在 Studio UI 面板上查看笔记本作业](#create-notebook-auto-run-dash)。

## 在 Studio UI 面板上查看笔记本作业
<a name="create-notebook-auto-run-dash"></a>

如果您指定了某些标签，作为管道步骤创建的笔记本作业就会出现在 Studio 笔记本作业控制面板中。

**注意**  
只有在 Studio 或本地 JupyterLab 环境中创建的笔记本作业才能创建作业定义。因此，如果您使用 SageMaker Python SDK 创建笔记本作业，则在 “笔记本作业” 控制面板中看不到作业定义。不过，您可以按照 [查看笔记本作业](view-notebook-jobs.md) 中的说明查看笔记本作业。

您可以使用以下标签控制哪些团队成员可以查看您的笔记本作业：
+ 要将笔记本显示到域中的所有用户配置文件或[空格](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html)，请使用域添加域标签。下面展示了一个示例：
  + 键：`sagemaker:domain-name`，值：`d-abcdefghij5k`
+ 要向域中的某个用户配置文件显示笔记本作业，请同时添加用户配置文件和域标签。用户配置文件标签示例如下：
  + 键：`sagemaker:user-profile-name`，值：`studio-user`
+ 要将笔记本作业显示为[空格](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html)，请同时添加空格和域标签。空格标签示例如下：
  + 键：`sagemaker:shared-space-name`，值：`my-space-name`
+ 如果不附加任何域、用户配置文件或空间标签，Studio UI 就不会显示管道步骤创建的笔记本作业。在这种情况下，您可以在训练作业管理控制台中查看基础训练作业，也可以在[管道执行列表](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-studio-view-execution.html)中查看状态。

一旦设置了在控制面板上查看作业所需的标签，请参阅 [查看笔记本作业](view-notebook-jobs.md) 了解如何查看作业和下载输出结果。

## 在 Studio 中查看管道图
<a name="create-notebook-auto-run-graph"></a>

由于笔记本作业步骤是管道的一部分，因此可以在 Studio 中查看管道图 (DAG)。在管道图中，您可以查看管道运行的状态，并跟踪管道沿线。有关更多信息，请参阅 [查看管道运行的详细信息](pipelines-studio-view-execution.md)。

## 向笔记本传递参数
<a name="create-notebook-auto-run-passparam"></a>

如果您要向笔记本作业传递参数（使用 `NotebookJobStep` 的 `parameters` 参数），则需要准备好接收参数的输入笔记本。

基于 Papermill 的笔记本作业执行器会搜索带有 `parameters` 标记的 Jupyter 单元，并在该单元后立即应用新参数或参数重载。有关更多信息，请参阅 [参数化笔记本](notebook-auto-run-troubleshoot-override.md)。

完成此步骤后，将参数传递给 `NotebookJobStep`，如下例所示：

```
notebook_job_parameters = {
    "company": "Amazon"
}

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input-notebook,
    parameters=notebook_job_parameters,
    ...
)
```

## 在输入笔记本中连接 Amazon EMR 集群
<a name="create-notebook-auto-run-emr"></a>

如果您通过 Studio 中的 Jupyter Notebook 连接到 Amazon EMR 集群，可能需要进一步修改 Jupyter Notebook。如果您需要在笔记本中执行以下任务，请参阅 [从笔记本连接到 Amazon EMR 集群](scheduled-notebook-connect-emr.md)：
+ **将参数传递到 Amazon EMR 连接命令中。**Studio 使用 Papermill 来运行笔记本。在 SparkMagic内核中，由于 Papermill 向其传递信息的方式，您传递给 Amazon EMR 连接命令的参数可能无法按预期工作。 SparkMagic
+ **将用户凭证传递给经过 Kerberos、LDAP 或 HTTP Basic Auth 身份验证的 Amazon EMR 集群**。您必须通过 AWS Secrets Manager传递用户凭证。

## 设置默认选项
<a name="create-notebook-auto-run-intdefaults"></a>

S SageMaker DK 为您提供了为部分参数设置默认值的选项，这样您就不必在每次创建`NotebookJobStep`实例时都指定这些参数。这些参数是 `role`、`s3_root_uri`、`s3_kms_key`、`volume_kms_key`、`subnets` 和 `security_group_ids`。使用 A SageMaker I 配置文件为该步骤设置默认值。有关 SageMaker AI 配置文件的信息，请参阅[在 SageMaker Python SDK 中配置和使用默认值。](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk) 。

要设置笔记本作业默认值，请将新的默认值应用到配置文件的笔记本作业部分，如下文所示：

```
SageMaker:
  PythonSDK:
    Modules:
      NotebookJob:
        RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
        S3RootUri: 's3://amzn-s3-demo-bucket/my-project'
        S3KmsKeyId: 's3kmskeyid'
        VolumeKmsKeyId: 'volumekmskeyid1'
        VpcConfig:
          SecurityGroupIds:
            - 'sg123'
          Subnets:
            - 'subnet-1234'
```

# 在 Studio 中创建笔记本作业
<a name="create-notebook-auto-run-studio"></a>

**注意**  
笔记本调度器由 Amazon EventBridge、 SageMaker Training 和 Pipelines 服务构建。如果笔记本作业失败，您可能会看到与这些服务相关的错误。下面将介绍如何在 Studio UI 中创建笔记本作业。

SageMaker Notebook Jobs 为你提供了使用 “笔记本作业” 控件创建和管理非交互式笔记本作业的工具。您可以创建作业，查看创建的作业，以及暂停、停止或恢复现有作业。您也可以修改笔记本计划。

当您使用小工具创建预定的笔记本作业时，调度程序会尝试选择默认选项，并自动填充表单，帮助您快速上手。如果您使用的是 Studio，则至少可以在不设置任何选项的情况下提交按需作业。您也可以提交（计划的）笔记本作业定义，仅提供特定于时间的计划信息。但是，如果您的计划作业需要专门的设置，可以自定义其他字段。如果您运行的是本地 Jupyter 笔记本，则调度器扩展程序提供一项特征，让您可以指定自己的默认值（针对部分选项），这样就不必每次都手动插入相同的值。

创建笔记本作业时，可以包含数据集、映像和本地脚本等附加文件。为此，选择**运行带有输入文件夹**的作业。笔记本作业现在可以访问输入文件文件夹下的所有文件。笔记本作业运行时，目录的文件结构保持不变。

要计划笔记本作业，请完成以下步骤：

1. 打开**创建作业**表单。

   在本地 JupyterLab 环境中，选择任务栏中的**创建笔记本作业**图标 (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/icons/notebook-schedule.png))。如果没有看到该图标，请按照[安装指南](scheduled-notebook-installation.md)中的说明进行安装。

   在 Studio 中，请通过以下两种方式之一打开表单：
   + 使用**文件浏览器**

     1. 在左侧面板的**文件浏览器**中，右键单击要作为计划作业运行的笔记本。

     1. 选择**创建笔记本作业**。
   + 在 Studio 笔记本中
     + 在要作为计划作业运行的 Studio 笔记本中，选择 Studio 工具栏中的**创建笔记本作业**图标 (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/icons/notebook-schedule.png))。

1. 填写弹出表单。该表单显示以下字段：
   + **作业名称**：您为作业指定的描述性名称。
   + **输入文件**：您计划在非交互模式下运行的笔记本的名称。
   + **计算类型**：您要在其中运行笔记本的 Amazon EC2 实例的类型。
   + **参数**：自定义参数，您可以选择将其指定为笔记本的输入。要使用此功能，您可能需要在 Jupyter Notebook 中的特定单元格上标记 **parameters** 标签，以控制参数的应用位置。有关更多详细信息，请参阅[参数化笔记本](notebook-auto-run-troubleshoot-override.md)。
   + （可选）**使用输入文件夹运行任务**：如果选择此选项，计划任务将可以访问与**输入文件**位于同一文件夹中的所有文件。
   + **其他选项**：您可以为作业指定其他自定义项。例如，您可以指定映像或内核、输入和输出文件夹、作业重试和超时选项、加密详细信息以及自定义初始化脚本。有关您可以应用的自定义项的完整列表，请参阅[可用选项](create-notebook-auto-execution-advanced.md)。

1. 计划您的作业。您可以按需运行笔记本，也可以按固定计划运行笔记本。
   + 要按需运行笔记本，请完成以下步骤：
     + 选择**立即运行**。
     + 选择**创建**。
     + 此时将显示**笔记本作业**选项卡。选择**重新加载**以将作业加载到控制面板。
   + 要按固定计划运行笔记本，请完成以下步骤：
     + 选择**按计划运行**。
     + 选择**间隔**下拉列表并选择间隔。间隔从每分钟到每月不等。也可以选择**自定义计划**。
     + 根据所选的间隔，系统会显示其他字段，以帮助您进一步指定所需的运行日期和时间。例如，如果选择**日**进行每日运行，则系统会显示一个附加字段供您指定所需的时间。请注意，您指定的任何时间均采用 UTC 格式。另请注意，如果您选择较小的间隔（例如一分钟），则当下一个作业开始时，如果前一个作业尚未完成，您的作业就会重叠。

       如果选择自定义计划，则可以在表达式框中使用 cron 语法来指定确切的运行日期和时间。cron 语法是一个以空格分隔的数字列表，每个数字代表一个时间单位，从秒到年不等。要获取有关 cron 语法的帮助，可以在表达式框下选择**获取有关 cron 语法的帮助**。
     + 选择**创建**。
     + 此时将显示**笔记本作业定义**选项卡。选择**重新加载**以将作业定义加载到控制面板中。

# 为本地笔记本设置默认选项
<a name="create-notebook-auto-execution-advanced-default"></a>

**重要**  
截至 2023 年 11 月 30 日，之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用 Studio Classic 应用程序。有关使用更新的 Studio 体验的信息，请参阅 [亚马逊 SageMaker Studio](studio-updated.md)。  
Studio Classic 仍针对现有工作负载进行维护，但不再可供入门使用。您只能停止或删除现有的 Studio Classic 应用程序，不能创建新的应用程序。我们建议您将[工作负载迁移到全新 Studio 体验](studio-updated-migrate.md)。

创建笔记本作业时，可以设置默认选项。如果您计划创建多个笔记本作业，并使用与提供的默认值不同的选项，这可以节省您的时间。下面将介绍如何设置本地笔记本的默认选项。

如果必须在**创建作业**表单中手动键入（或粘贴）自定义值，则可以存储新的默认值，并且每当您创建新的作业定义时，调度器扩展程序都会插入新值。此特征可用于以下选项：
+ **角色 ARN**
+ **S3 输入文件夹**
+ **S3 输出文件夹**
+ **输出加密 KMS 密钥**（如果打开**配置作业加密**）。
+ **作业实例卷加密 KMS 密钥**（如果打开**配置作业加密**）。

如果您插入的值与提供的默认值不同，并且在将来的作业运行中继续使用这些值，则此特征可以为您节省时间。您选择的用户设置存储在运行 JupyterLab 服务器的计算机上，并借助本机 API 进行检索。如果您为一个或多个而不是全部五个选项提供了新的默认值，那么您没有自定义的选项将使用以前的默认值。

以下说明将向您介绍如何预览现有默认值、设置新的默认值以及重置笔记本作业的默认值。

**要预览笔记本作业的现有默认值，请完成以下步骤：**

1. 按照中的说明打开 Amazon SageMaker Studio Classic 主机[推出亚马逊 SageMaker Studio 经典版](studio-launch.md)。

1. 在左侧面板的**文件浏览器**中，右键单击要作为计划作业运行的笔记本。

1. 选择**创建笔记本作业**。

1. 选择**附加选项**，展开笔记本作业设置选项卡。您可以在此处查看默认设置。

**要为未来的笔记本作业设置新的默认值，请完成以下步骤：**

1. 按照中的说明打开 Amazon SageMaker Studio Classic 主机[推出亚马逊 SageMaker Studio 经典版](studio-launch.md)。

1. 在 Studio Classic 的顶部菜单中选择**设置**，然后选择 **高级设置编辑器**。

1. 从 “**设置**” 下方的列表中选择 **Amazon SageMaker 日程安排**。默认情况下可能已经打开。

1. 您可以直接在此用户界面页面或使用 JSON 编辑器更新默认设置。
   + 在用户界面中，您可以为**角色 ARN**、**S3 输入文件夹**、**S3 输出文件夹**、**输出加密 KMS 键**或**任务实例卷加密 KMS 键**插入新值。如果更改了这些值，在**其他选项**下创建下一个笔记本作业时，就会看到这些字段的新默认值。
   + （可选）要使用 **JSON 设置编辑器**更新用户默认设置，请完成以下步骤：

     1. 在右上角，选择 **JSON 设置编辑器**。

     1. 在 **“设置”** 左侧栏中，选择 **Amazon SageMaker AI 计划程序**。默认情况下可能已经打开。

        您可以在**用户偏好**面板中查看当前默认值。

        您可以在**系统默认**面板中查看系统默认值。

     1. 要更新默认值，请将 JSON 代码片段从**系统默认值**面板复制并粘贴到**用户首选项**面板，然后更新字段。

     1. 如果更新了默认值，请选择右上角的**保存用户设置**图标 (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/icons/Notebook_save.png))。关闭编辑器并不会保存更改。

**如果您之前进行过更改，而现在想要重置用户定义的默认值，请完成以下步骤：**

1. 在 Studio Classic 的顶部菜单中选择**设置**，然后选择 **高级设置编辑器**。

1. 从 “**设置**” 下方的列表中选择 **Amazon SageMaker 日程安排**。默认情况下可能已经打开。

1. 您可以直接使用此 UI 页面或使用 JSON 编辑器恢复默认值。
   + 在用户界面中，您可以选择右上角的**恢复默认值**。您的默认值将恢复为空字符串。仅当您之前更改过默认值时，才会看到此选项。
   + （可选）要使用 **JSON 设置编辑器**重新启动默认设置，请完成以下步骤：

     1. 在右上角，选择 **JSON 设置编辑器**。

     1. 在 **“设置”** 左侧栏中，选择 **Amazon SageMaker AI 计划程序**。默认情况下可能已经打开。

        您可以在**用户偏好**面板中查看当前默认值。

        您可以在**系统默认**面板中查看系统默认值。

     1. 要恢复当前默认设置，请将**系统默认**面板中的内容复制到**用户偏好**面板。

     1. 选择右上角的**保存用户设置**图标 (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/icons/Notebook_save.png))。关闭编辑器并不会保存更改。