本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
混合作业的关键概念
本节介绍了 Amazon Braket Python SDK 提供的 AwsQuantumJob.create 函数以及容器文件结构映射的关键概念。
除了构成完整算法脚本的一个或多个文件外,您的混合作业还可以有其他输入输出。当您的混合作业启动时,Amazon Braket 会将创建混合作业时提供的输入复制到运行算法脚本的容器中。混合任务完成后,算法期间定义的所有输出都将复制到指定的 Amazon S3 位置。
注意
算法指标是实时报告的,不遵循此输出程序。
Amazon Braket 还提供了多个环境变量和辅助函数,以简化与容器输入和输出的交互。有关更多信息,请参阅 Amazon Braket 软件开发工具包中的 braket.jobs 软件包
输入
输入数据:通过使用 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 命令。此命令将检查点数据复制到新混合作业的 checkpoint_configs3Uri 中,使其在作业运行时在环境变量 AMZN_BRAKET_CHECKPOINT_DIR 给出的路径上可用。默认值为 None,这意味着来自其他混合作业的检查点数据将不会用于新的混合作业。
输出
量子任务:量子任务结果存储在 S3 位置 s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/tasks。
作业结果:您的算法脚本保存到环境变量给定目录的所有内容"AMZN_BRAKET_JOB_RESULTS_DIR"都将复制到 output_data_config 中指定的 S3 位置。如果未指定数值,将默认为 s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/<timestamp>/data。我们提供 SDK 帮助器函数 save_job_result,当从算法脚本调用时,您可以使用该函数以字典的形式方便地存储结果。
检查点:如果要使用检查点,可将其保存在环境变量 "AMZN_BRAKET_CHECKPOINT_DIR" 给出的目录中。您也可以使用 save_job_checkpoint 调用函数。
算法指标:您可以将算法指标定义为算法脚本的一部分,这些指标将在混合作业运行时发送到 Amazon CloudWatch 并实时显示在 Amazon Braket 控制台中。有关如何使用算法指标的示例,请参阅使用 Amazon Braket Hybrid Jobs 运行 QAOA 算法。
有关保存作业输出的更多信息,请参阅 Hybrid Jobs 文档中的保存结果。
环境变量
Amazon Braket 提供了多个环境变量来简化与容器输入输出的交互。以下代码列出了 Braket 使用的环境变量。
-
AMZN_BRAKET_INPUT_DIR— 输入数据目录opt/braket/input/data。 -
AMZN_BRAKET_JOB_RESULTS_DIR— opt/braket/model 要将作业结果写入的输出目录。 -
AMZN_BRAKET_JOB_NAME:作业的名称。 -
AMZN_BRAKET_CHECKPOINT_DIR:检查点目录。 -
AMZN_BRAKET_HP_FILE:包含超参数的文件。 -
AMZN_BRAKET_DEVICE_ARN— 设备 ARN(AWS 资源名称)。 -
AMZN_BRAKET_OUT_S3_BUCKET:CreateJob请求OutputDataConfig中指定的输出 Amazon S3 存储桶。 -
AMZN_BRAKET_SCRIPT_ENTRY_POINT:CreateJob请求的ScriptModeConfig中指定的入口点。 -
AMZN_BRAKET_SCRIPT_COMPRESSION_TYPE:CreateJob请求的ScriptModeConfig中指定的压缩类型。 -
AMZN_BRAKET_SCRIPT_S3_URI:CreateJob请求的ScriptModeConfig中指定的用户脚本的 Amazon S3 位置。 -
AMZN_BRAKET_TASK_RESULTS_S3_URI:SDK 默认存储任务的量子任务结果的 Amazon S3 位置。 -
AMZN_BRAKET_JOB_RESULTS_S3_PATH:存储任务结果的 Amazon S3 位置,如CreateJob请求的OutputDataConfig中所述。 -
AMZN_BRAKET_JOB_TOKEN:对于在作业容器中创建的量子任务,应传递给的CreateQuantumTask的jobToken参数的字符串。
辅助函数
Amazon Braket 提供了多个辅助函数,以简化与容器输入和输出的交互。这些辅助函数将从用于运行 Hybrid Job 的算法脚本中调用。以下示例演示了如何执行此操作。
from braket.jobs import get_checkpoint_dir, get_hyperparameters, get_input_data_dir, get_job_device_arn, get_job_name, get_results_dir, save_job_result, save_job_checkpoint, load_job_checkpoint 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(result_data='data') # Save hybrid job results save_job_checkpoint(checkpoint_data={'key': 'value'}) # Save a checkpoint load_job_checkpoint() # Load a previously saved checkpoint