本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
输入、输出、环境变量和辅助函数
除了构成完整算法脚本的一个或多个文件外,您的混合作业还可以有其他输入和输出。当您的混合作业启动时,AmazonBraket 会将创建混合作业时提供的输入复制到运行算法脚本的容器中。混合任务完成后,算法期间定义的所有输出都将复制到指定的 Amazon S3 位置。
注意
算法指标是实时报告的,不遵循此输出程序。
AmazonBraket 还提供了多个环境变量和辅助函数,以简化与容器输入和输出的交互。
本节介绍了 Amazon Braket Python SDK 提供的AwsQuantumJob.create
函数的关键概念及其与容器文件结构的映射。
输入
输入数据:通过使用input_data
参数指定设置为字典的输入数据文件,可以将输入数据提供给混合算法。用户在 SDK 的AwsQuantumJob.create
函数中定义input_data
参数。这会将输入数据复制到环境变量所给位置的容器文件系统"AMZN_BRAKET_INPUT_DIR"
。有关如何在混合算法中使用输入数据的几个示例,请参阅带有 Amazon Braket Hybrid Jobs 的 QAOA PennyLane 和 Amazon Braket Hybrid Job
注意
当输入数据很大 (>1GB) 时,混合作业需要很长时间才能提交。这是因为本地输入数据将首先上传到 S3 存储桶,然后将 S3 路径添加到混合任务请求中,最后,混合任务请求将提交给 Braket 服务。
超参数:如果传入hyperparameters
,则它们在环境变量"AMZN_BRAKET_HP_FILE"
下可用。
检查点:要指定job-arn
要在新的混合作业中使用哪个检查点,请使用copy_checkpoints_from_job
命令。此命令将检查点数据复制到新的混合作业中,使其在作业运行时在环境变量AMZN_BRAKET_CHECKPOINT_DIR
给出的路径上可用。checkpoint_configs3Uri
默认值为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"
。您也可以save_job_checkpoint
改用 SDK 帮助器函数。
算法指标:您可以将算法指标定义为算法脚本的一部分,这些指标将在混合作业运行时发送到 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 提供了多个辅助函数,以简化与容器输入和输出的交互。这些辅助函数将从用于运行 Hybrid 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