输入、输出、环境变量和辅助函数 - Amazon Braket

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

输入、输出、环境变量和辅助函数

除了构成完整算法脚本的一个或多个文件外,您的混合作业还可以有其他输入和输出。当您的混合作业启动时,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 s Jupyter 笔记本中的量子机器学习

注意

当输入数据很大 (>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