輸入、輸出、環境變數和輔助函數 - Amazon Braket

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

輸入、輸出、環境變數和輔助函數

除了構成完整演算法指令碼的檔案或檔案之外,混合式工作還可以有其他輸入和輸出。當您的混合任務開始時,AmazonBraket 會將在混合任務建立過程中提供的輸入複製到執行演算法指令碼的容器中。混合任務完成後,演算法期間定義的所有輸出都會複製到指定的 Amazon S3 位置。

注意

演算法指標會即時報告,且不遵循此輸出程序。

AmazonBraket 還提供了幾個環境變量和輔助函數,以簡化與容器輸入和輸出的交互。

本節說明 Amazon Braket Python SDK 所提供之AwsQuantumJob.create函式的關鍵概念,以及它們對應至容器檔案結構的關鍵概念。

輸入

輸入數據:輸入數據可以通過指定輸入數據文件提供給混合算法,該文件設置為字典,帶有input_data參數。使用者在 SDK 中的AwsQuantumJob.createinput_data數內定義引數。這會將輸入資料複製到容器檔案系統,位於環境變數所指定的位置"AMZN_BRAKET_INPUT_DIR"。如需如何在混合演算法中使用輸入資料的幾個範例,請參閱 Amazon Braket 混合式任務的 QAOA 以 PennyLane及 Amazon Braket 混合式工作 J upyter 筆記型電腦中的量子機器學習

注意

當輸入資料較大 (>1GB) 時,在提交混合工作之前會有很長的等待時間。這是因為本機輸入資料會先上傳到 S3 儲存貯體,然後 S3 路徑會新增至混合任務請求,最後將混合任務請求提交至 Braket 服務。

超參數:如果您傳入hyperparameters,它們可以在環境變"AMZN_BRAKET_HP_FILE"數下使用。

檢查點:若要指定job-arn要在新混合工作中使用的檢查點,請使用指copy_checkpoints_from_job令。此命令會將檢查點資料複製到新checkpoint_configs3Uri的混合式工作,使其可在工作執行AMZN_BRAKET_CHECKPOINT_DIR時於環境變數指定的路徑中使用。預設值為None,表示新的混合式工作不會使用來自另一個混合工作的檢查點資料。

輸出

量子任務:量子任務結果存放在 S3 位置s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/tasks

Job 結果:演算法指令碼儲存至環境變數指定之目錄的所有內容"AMZN_BRAKET_JOB_RESULTS_DIR"都會複製到中指定的 S3 位置output_data_config。如果未指定此值,則預設值為s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/<timestamp>/data。我們提供 SDK 輔助函數 save_job_result,當從算法腳本調用時,您可以使用它以字典的形式方便地存儲結果。

檢查點:如果要使用檢查點,可以將它們儲存在環境變數所指定的目錄中。"AMZN_BRAKET_CHECKPOINT_DIR"您也可以使用 SDK 輔助函數來save_job_checkpoint代替。

演算法指標:您可以將演算法指標定義為演算法指令碼的一部分,這些指標會在混合任務執行時傳送至 Amazon, CloudWatch 並在 Amazon Braket 主控台中即時顯示。如需如何使用演算法指標的範例,請參閱使用 Amazon Braket 混合任務執行 QAOA 演算法。

環境變數

AmazonBraket 提供了幾個環境變量,以簡化與容器輸入和輸出的交互。下面的代碼列出了 Braket 使用的環境變量。

# the input data directory opt/braket/input/data os.environ["AMZN_BRAKET_INPUT_DIR"] # the output directory opt/braket/model to write job results to os.environ["AMZN_BRAKET_JOB_RESULTS_DIR"] # the name of the job os.environ["AMZN_BRAKET_JOB_NAME"] # the checkpoint directory os.environ["AMZN_BRAKET_CHECKPOINT_DIR"] # the file containing the hyperparameters os.environ["AMZN_BRAKET_HP_FILE"] # the device ARN (AWS Resource Name) os.environ["AMZN_BRAKET_DEVICE_ARN"] # the output S3 bucket, as specified in the CreateJob request’s OutputDataConfig os.environ["AMZN_BRAKET_OUT_S3_BUCKET"] # the entry point as specified in the CreateJob request’s ScriptModeConfig os.environ["AMZN_BRAKET_SCRIPT_ENTRY_POINT"] # the compression type as specified in the CreateJob request’s ScriptModeConfig os.environ["AMZN_BRAKET_SCRIPT_COMPRESSION_TYPE"] # the S3 location of the user’s script as specified in the CreateJob request’s ScriptModeConfig os.environ["AMZN_BRAKET_SCRIPT_S3_URI"] # the S3 location where the SDK would store the quantum task results by default for the job os.environ["AMZN_BRAKET_TASK_RESULTS_S3_URI"] # the S3 location where the job results would be stored, as specified in CreateJob request’s OutputDataConfig os.environ["AMZN_BRAKET_JOB_RESULTS_S3_PATH"] # the string that should be passed to CreateQuantumTask’s jobToken parameter for quantum tasks created in the job container os.environ["AMZN_BRAKET_JOB_TOKEN"]

輔助函數

AmazonBraket 提供了幾個輔助功能,以簡化與容器輸入和輸出的相互作用。這些輔助函數將從用於運行混合 Job 的算法腳本中調用。下面的例子演示了如何使用它們。

get_checkpoint_dir() # get the checkpoint directory get_hyperparameters() # get the hyperparameters as strings get_input_data_dir() # get the input data directory get_job_device_arn() # get the device specified by the hybrid job get_job_name() # get the name of the hybrid job. get_results_dir() # get the path to a results directory save_job_result() # save hybrid job results save_job_checkpoint() # save a checkpoint load_job_checkpoint() # load a previously saved checkpoint