

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 您可以在其中建立筆記本任務
<a name="create-notebook-auto-run"></a>

如果您想要建立筆記本任務，您有多個選項。以下提供 SageMaker AI 選項，供您建立筆記本任務。

您可以在 Studio UI 的 JupyterLab 筆記本中建立任務，或以程式設計方式使用 SageMaker Python SDK 建立任務：
+ 如果您在 Studio UI 中建立筆記本任務，您可以提供有關映像和核心、安全組態，以及任何自訂變數或指令碼的詳細資訊，且已排程您的任務。如需如何使用 SageMaker 筆記本任務來排程任務的詳細資訊，請參閱[在 Studio 中建立筆記本任務](create-notebook-auto-run-studio.md)。
+ 若要使用 SageMaker Python SDK 建立筆記本任務，您可以使用筆記本任務步驟建立管道，並啟動隨需執行，或選擇性地使用管道排程功能來排程未來的執行。SageMaker SDK 可讓您靈活地自訂管道 - 您可以將管道擴展到具有多個筆記本任務步驟的工作流程。由於您同時建立 SageMaker 筆記本任務步驟和管道，因此您可以在 SageMaker 筆記本任務儀表板中追蹤管道執行狀態，也可以在 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 執行獨立筆記本，您需要建立筆記本任務步驟、將其連接至管道，並使用 Pipelines 提供的公用程式來隨需執行任務，或選擇性地排程一或多個未來任務。下列各節描述建立隨需或排程筆記本任務並追蹤執行的基本步驟。此外，如果您需要將參數傳遞至筆記本任務或連線到筆記本中的 Amazon EMR，請參閱下列討論 - 在這些情況下，需要額外準備 Jupyter 筆記本。您也可以套用 `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 SDK 排程管道](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 Notebook 任務儀表板中。

**注意**  
只有 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 筆記本連線至 Amazon EMR 叢集，您可能需要進一步修改 Jupyter 筆記本。請查看[從您的筆記本連線至 Amazon EMR 叢集](scheduled-notebook-connect-emr.md)，您是否需要在筆記本中執行下列任何任務：
+ **將參數傳遞到您的 Amazon EMR 連線命令。**Studio 使用 Papermill 執行筆記本。在 SparkMagic 核心中，由於 Papermill 傳遞資訊至 SparkMagic 的方式，因此您傳遞至 Amazon EMR 連線命令的參數可能無法如預期運作。
+ **將使用者憑證傳遞至經過 Kerberos、LDAP 或 HTTP 基本身分驗證的 Amazon EMR 叢集**。您必須透過 AWS Secrets Manager傳遞使用者憑證。

## 設定預設選項
<a name="create-notebook-auto-run-intdefaults"></a>

SageMaker SDK 可讓您選擇為參數子集設定預設值，以便您不必在每次建立 `NotebookJobStep` 執行個體時指定這些參數。這些參數為 `role`、`s3_root_uri`、`s3_kms_key`、`volume_kms_key`、`subnets` 和 `security_group_ids`。使用 SageMaker AI 組態檔案來設定步驟的預設值。如需 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 訓練和 Pipelines 服務建置的。如果筆記本工作失敗，您可能會看到與這些服務相關的錯誤。以下提供如何在 Studio UI 中建立筆記本任務的相關資訊。

SageMaker 筆記本任務提供您使用 Notebook 任務小工具建立和管理非互動式筆記本任務的工具。您可以建立工作、檢視您建立的工作，以及暫停、停止或繼續現有工作。您也可以修改筆記本排程。

當您使用小工具建立排程的筆記本任務時，排程器會嘗試推論所選的預設選項，並自動填入表單，協助您快速開始使用。如果使用 Studio，則您至少無需設定任何選項就能提交隨需工作。您只需提供特定時間的排程資訊，即可提交 (已排程的) 筆記本工作定義。如果排程的工作需要特殊設定，您可以自訂其他欄位。如果您正在執行本機 Jupyter 筆記本，排程器擴充功能會提供一項功能，讓您可以自行指定預設值 (適用於選項的子集)，這樣您就不必每次都手動插入相同的值。

建立筆記本任務時，您可以包含其他檔案，例如資料集、映像和本機指令碼。若要這樣做，請選擇**使用輸入資料夾執行任務**。筆記本任務現在將可以存取輸入檔案資料夾下的所有檔案。當筆記本任務執行時，目錄的檔案結構保持不變。

若要對筆記本工作進行排程，請完成下列步驟。

1. 開啟**建立工作**表單。

   在本機 JupyterLab 環境中，選擇任務列中的**建立筆記本工作**圖示 (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/zh_tw/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_tw/sagemaker/latest/dg/images/icons/notebook-schedule.png))。

1. 填寫快顯表單。表單會顯示下列欄位：
   + **工作名稱**：您為工作指定的描述性名稱。
   + **輸入檔案**：您要排程在非互動模式下執行的筆記本的名稱。
   + **運算類型**：您要在其中執行筆記本的 Amazon EC2 執行個體的類型。
   + **參數**：您可以選擇性地指定為筆記本輸入的自訂參數。若要使用此特徵，您可以選擇性地使用 **parameters** 標籤來標記 Jupyter 筆記本中的特定儲存格，以控制參數的套用位置。如需詳細資訊，請參閱[對筆記本進行參數化](notebook-auto-run-troubleshoot-override.md)。
   + (選用) **使用輸入資料夾執行任務**：如果選取，排程任務將可以存取與**輸入檔案**位於相同資料夾中的所有檔案。
   + **其他選項**：您可以為工作指定其他自訂項目。例如，您可以指定映像或核心、輸入和輸出資料夾、任務重試和逾時選項、加密詳細資料以及自訂初始化指令碼。如需可套用之自訂項目的完整清單，請參閱[可用選項](create-notebook-auto-execution-advanced.md)。

1. 安排您的工作。您可以隨需執行或按固定排程執行筆記本。
   + 若要隨需執行 Jupyter 筆記本，請完成下列步驟：
     + 選取**立即執行**。
     + 選擇**建立**。
     + 系統隨即會顯示**筆記本工作**。選擇**重新載入**，將工作載入儀表板。
   + 若要按固定排程執行 Jupyter 筆記本，請完成下列步驟：
     + 選擇**按排程執行**。
     + 選擇**間隔**下拉式清單，然後選取間隔。間隔可選範圍從每分鐘到每月。您也可以選取**自訂排程**。
     + 根據您選擇的間隔，系統會顯示其他欄位，以協助您進一步指定所需的執行日期和時間。例如，如果您為每日執行選取**日**，則系統會顯示其他欄位供您指定所需的時間。請注意，您指定的任何時間都採用 UTC 格式。另請注意，如果選擇較小的間隔時間 (例如一分鐘)，則如果下一個工作開始時，先前的工作未完成，則工作會重疊。

       如果選取自訂排程，您可以在運算式方塊中使用 Cron 語法來指定確切的執行日期和時間。Cron 語法是以空格分隔的數字清單，每個清單都代表從秒到幾年的時間單位。如需 Cron 語法的說明，您可以在運算式方塊下選擇**取得 Cron 語法相關協助**。
     + 選擇**建立**。
     + 系統隨即會顯示**筆記本工作定義**標籤。選擇**重新載入**，將工作定義載入儀表板。

# 設定本機筆記本的預設選項
<a name="create-notebook-auto-execution-advanced-default"></a>

**重要**  
自 2023 年 11 月 30 日起，先前的 Amazon SageMaker Studio 體驗現在命名為 Amazon SageMaker Studio Classic。下節專門介紹如何使用 Studio Classic 應用程式。如需使用已更新 Studio 體驗的資訊，請參閱 [Amazon 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](studio-launch.md) 中的指示開啟 Amazon SageMaker Studio Classic 主控台。

1. 在左側面板的**檔案瀏覽器**中，以滑鼠右鍵按一下要作為排程工作執行的筆記本。

1. 選擇**建立筆記本**。

1. 選擇**其他選項**以展開筆記本任務設定的索引標籤。您可以在此處檢視預設設定。

**若要為您的未來筆記本任務設定新的預設值，請完成下列步驟：**

1. 遵循 [啟動 Amazon SageMaker Studio Classic](studio-launch.md) 中的指示開啟 Amazon SageMaker Studio Classic 主控台。

1. 從 Studio Classic 頂端功能表中，選擇**設定**，然後選擇**進階設定編輯器**。

1. 從**設定**下方的清單中選擇 **Amazon SageMaker 排程器**。預設可能已開啟此項目。

1. 您可以直接在此 UI 頁面或使用 JSON 編輯器更新預設設定。
   + 在 UI 中，您可以插入**角色 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_tw/sagemaker/latest/dg/images/icons/Notebook_save.png))。關閉編輯器並不會儲存變更。

**如果您之前已進行過變更，現在想要重設使用者定義的預設值，請完成下列步驟：**

1. 從 Studio Classic 頂端功能表中，選擇**設定**，然後選擇**進階設定編輯器**。

1. 從**設定**下方的清單中選擇 **Amazon SageMaker 排程器**。預設可能已開啟此項目。

1. 您可以直接使用此 UI 頁面或使用 JSON 編輯器來還原預設值。
   + 在 UI 中，您可以選擇右上角的**還原至預設值**。預設值會還原為空字串。只有在您先前變更過預設值時，才能看到此選項。
   + (選用) 若要使用 **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_tw/sagemaker/latest/dg/images/icons/Notebook_save.png))。關閉編輯器並不會儲存變更。