在筆記本步驟之間傳遞資訊 - Amazon SageMaker AI

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

在筆記本步驟之間傳遞資訊

下列各節說明將資訊作為環境變數和參數傳遞至筆記本的方法。

傳遞環境變數

將環境變數做為字典傳遞至 的引environment_variableNotebookJobStep,如下列範例所示:

environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000} notebook_job_step = NotebookJobStep( ... environment_variables=environment_variables, ... )

您可以使用 使用筆記本中的環境變數os.getenv(),如下列範例所示:

# inside your notebook import os print(f"ParentNotebook: env_key={os.getenv('env_key')}")

傳遞參數

當您將參數傳遞至NotebookJobStep執行個體的第一個筆記本任務步驟時,您可以選擇在 Jupyter 筆記本中標記儲存格,以指出要套用新參數或參數覆寫的位置。如需有關如何在 Jupyter 筆記本中標記儲存格的說明,請參閱 對筆記本進行參數化

您可以透過筆記本任務步驟的parameters參數傳遞參數,如下列程式碼片段所示:

notebook_job_parameters = { "company": "Amazon", } notebook_job_step = NotebookJobStep( ... parameters=notebook_job_parameters, ... )

在您的輸入筆記本中,如果您沒有標記的儲存格,您的參數會在標記有 的儲存格之後套用,parameters或在筆記本開頭套用。

# this cell is in your input notebook and is tagged with 'parameters' # your parameters and parameter overrides are applied after this cell company='default'
# in this cell, your parameters are applied # prints "company is Amazon" print(f'company is {company}')

從上一個步驟擷取資訊

下列討論說明如何從上一個步驟擷取資料至 ,以傳遞至筆記本任務步驟。

使用 properties 屬性

您可以使用下列屬性搭配上一個步驟的properties屬性:

  • ComputingJobName—訓練任務名稱

  • ComputingJobStatus—訓練任務狀態

  • NotebookJobInputLocation—輸入 Amazon S3 位置

  • NotebookJobOutputLocationPrefix- 訓練任務輸出的路徑,更具體地是 {NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz。 包含輸出

  • InputNotebookName—輸入筆記本檔案名稱

  • OutputNotebookName- 輸出筆記本檔案名稱 (如果任務失敗,可能不存在於訓練任務輸出資料夾中)

下列程式碼片段說明如何從屬性屬性擷取參數。

notebook_job_step2 = NotebookJobStep( .... parameters={ "step1_JobName": notebook_job_step1.properties.ComputingJobName, "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus, "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation, "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix, }

使用 JsonGet

如果您想要傳遞上述參數以外的參數,且上一個步驟的 JSON 輸出位於 Amazon S3 中,請使用 JsonGetJsonGet 是可以直接從 Amazon S3 中的 JSON 檔案擷取資料的一般機制。

若要使用 在 Amazon S3 中擷取 JSON 檔案JsonGet,請完成下列步驟:

  1. 將您的 JSON 檔案上傳至 Amazon S3。如果您的資料已上傳至 Amazon S3,請略過此步驟。下列範例示範將 JSON 檔案上傳至 Amazon S3。

    import json from sagemaker.s3 import S3Uploader output = { "key1": "value1", "key2": [0,5,10] } json_output = json.dumps(output) with open("notebook_job_params.json", "w") as file: file.write(json_output) S3Uploader.upload( local_path="notebook_job_params.json", desired_s3_uri="s3://path/to/bucket" )
  2. 將 S3 URI 和 JSON 路徑提供給您要擷取的值。在下列範例中, 會JsonGet傳回物件,其代表與索引鍵 key2() 相關聯值的索引 210

    NotebookJobStep( .... parameters={ # the key job_key1 returns an object representing the value 10 "job_key1": JsonGet( s3_uri=Join(on="/", values=["s3:/", ..]), json_path="key2[2]" # value to reference in that json file ), "job_key2": "Amazon" } )