本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在筆記本步驟之間傳遞資訊
下列各節說明將資訊作為環境變數和參數傳遞至筆記本的方法。
傳遞環境變數
將環境變數做為字典傳遞至 的引environment_variable
數NotebookJobStep
,如下列範例所示:
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 中,請使用 JsonGet
。 JsonGet
是可以直接從 Amazon S3 中的 JSON 檔案擷取資料的一般機制。
若要使用 在 Amazon S3 中擷取 JSON 檔案JsonGet
,請完成下列步驟:
-
將您的 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
" ) -
將 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" } )