使用 SageMaker Python SDK 建立筆記本工作 - Amazon SageMaker

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

使用 SageMaker Python SDK 建立筆記本工作

若要使用 SageMaker Python SDK 執行獨立筆記本,您需要建立「筆記本作業」步驟、將其附加到管線中,然後使用 Pipel SageMaker ines 提供的公用程式視需求執行 Job,或選擇性地排定一或多個 future 工作。

下列各節說明建立隨選或排程筆記本工作及追蹤執行的基本步驟。此外,如果您需要將參數傳遞至筆記型電腦任務或連線至筆記型電腦中的 Amazon EMR,請參閱下列討論 — 在這些情況下,您需要額外準備 Jupyter 筆記型電腦。您也可以針對的引數子集套用預設值,NotebookJobStep這樣您就不必在每次建立「記事本 Job」步驟時指定它們。

若要檢視示範如何使用 SageMaker Python SDK 排程筆記本工作的範例筆記本,請參閱筆記本工作範例筆記本。

建立筆記本工作的步驟

您可以建立立即執行或按排程執行的筆記本工作。下列指示說明這兩種方法。

若要排程筆記本工作,請完成下列基本步驟:
  1. 建立NotebookJobStep執行個體。如需有關NotebookJobStep參數的詳細資訊,請參閱下垂器工作流程步驟。 NotebookJobStep。您至少可以提供下列引數,如下列程式碼片段所示:

    重要

    如果您使用 SageMaker Python SDK 排程筆記本工作,則只能指定執行筆記本工作的特定影像。如需詳細資訊,請參閱 SageMakerPython SDK 筆記本工作的影像限制

    notebook_job_step = NotebookJobStep( input_notebook=input-notebook, image_uri=image-uri, kernel_name=kernel-name )
  2. 以您的NotebookJobStep單一步驟建立管道,如下列程式碼片段所示:

    pipeline = Pipeline( name=pipeline-name, steps=[notebook_job_step], sagemaker_session=sagemaker-session, )
  3. 視需求執行管線,或選擇性地排定 future 的管線執行。若要啟動立即執行,請使用下列命令:

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

    或者,您可以在預定的間隔內排定單一 future 的管線執行或多次執行。您可以在中指定排程,PipelineSchedule然後使用將排程物件傳送至管線put_triggers。如需管線排程的詳細資訊,請參閱使用 SageMaker Python 開發套件排程管道

    下列範例會將您的管線排程為在世界標準時間 2023 年 12 月 12 日 10:31:32 執行一次。

    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 執行。如需以 Cron 為基礎之排程的詳細資訊,請參閱以 C ron 為基礎的排程

    my_schedule = PipelineSchedule( name="my-schedule“, cron="15 10 ? * 6L 2022-2023" ) pipeline.put_triggers(triggers=[my_schedule])
  4. (選擇性) 在 [筆記本工作] 儀表板中檢視您的 SageMaker 筆記本工作。您提供給「筆記本作業」步驟tags引數的值會控制 Studio UI 擷取和顯示 Job 的方式。如需詳細資訊,請參閱 在 Studio UI 儀表板中檢視筆記本工作

在 Studio UI 儀表板中檢視筆記本工作

如果您指定特定標籤,則您建立為管線步驟的筆記本 Job 會顯示在「Studio 筆記本工作」圖標板中。

注意

只有在 Studio 或本機 JupyterLab 環境中建立的筆記本工作才會建立工作定義。因此,如果您使用 SageMaker Python SDK 建立筆記本工作,則不會在 [筆記本工作] 儀表板中看到工作定義。但是,您可以檢視筆記本工作,如中所述檢視筆記本任務

您可以使用下列標籤來控制哪些小組成員可以檢視您的記事本工作:

  • 若要顯示網域中所有使用者設定檔或空間的記事本,請使用您的網域名稱新增網域標籤。範例顯示如下:

    • 鍵:sagemaker:domain-name,值:d-abcdefghij5k

  • 若要在網域中的特定使用者設定檔中顯示筆記本工作,請同時新增使用者設定檔和網域標籤。使用者設定檔標籤的範例如下所示:

    • 鍵:sagemaker:user-profile-name,值:studio-user

  • 若要在空間中顯示筆記本工作,請同時新增空間和網域標籤。空格標籤的範例如下所示:

    • 鍵:sagemaker:shared-space-name,值:my-space-name

  • 如果您沒有附加任何網域或使用者設定檔或空間標籤,則 Studio UI 不會顯示由管線步驟建立的筆記本工作。在此情況下,您可以在訓練工作主控台中檢視基礎訓練工作,也可以在管線執行清單中檢視狀態。

設定必要的標籤以在儀表板中檢視工作之後,請參閱以檢視筆記本任務取得有關如何檢視工作和下載輸出的指示。

在工作室中檢視您的管線圖

由於您的筆記本作業步驟是管線的一部分,因此您可以在 Studio 中檢視管線圖 (DAG)。在管線圖形中,您可以檢視管線執行的狀態並追蹤歷程。如需詳細資訊,請參閱 檢視管道執行

將參數傳遞到筆記本

如果您想要將參數傳遞至筆記本工作 (使用的parameters引數NotebookJobStep),您需要準備輸入筆記本以接收參數。

PaperMill-based 筆記本工作執行程式會搜尋標記為parameters標籤的 Jupyter 儲存格,並在此儲存格之後立即套用新的參數或參數覆寫。如需詳細資訊,請參閱 對筆記本進行參數化

執行此步驟後,請將參數傳遞給您的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 叢集

如果您從工作室的 Jupyter 筆記本連接到 Amazon EMR 叢集,您可能需要進一步修改 Jupyter 筆記本。查看您是從您的筆記型電腦 Connect 到 Amazon EMR 叢集否需要在筆記本中執行下列任何工作:

  • 將參數傳遞到您的 Amazon EMR 連接命令。Studio 使用 Papermill 執行筆記本。在 SparkMagic核心中,由於造紙廠傳遞資訊的方式,傳遞給 Amazon EMR 連線命令的參數可能無法如預期般運作。 SparkMagic

  • 將使用者憑證傳遞至經過 Kerberos、LDAP 或 HTTP 基本身分驗證的 Amazon EMR 叢集。您必須透過 AWS Secrets Manager.

設定預設選項

SageMaker SDK 為您提供了為參數子集設置默認值的選項,因此您不必每次創建NotebookJobStep實例時都指定這些參數。這些參數為roles3_root_uris3_kms_keyvolume_kms_keysubnets、和security_group_ids。使用組 SageMaker 態檔來設定步驟的預設值。如需設 SageMaker 定檔案的相關資訊,請參閱搭配 SageMaker Python SDK 配置和使用預設值。

若要設定筆記本工作預設值,請將新的預設值套用至組態檔案的筆記本工作區段,如下列程式碼片段所示:

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