View a markdown version of this page

混合作业的关键概念 - Amazon Braket

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

混合作业的关键概念

本节介绍了 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 s Jupyter 笔记本中的量子机器学习

注意

当输入数据很大 (>1GB) 时,混合作业需要很长时间才能提交。这是因为本地输入数据将首先上传到 S3 存储桶,然后将 S3 路径添加到混合任务请求中,最后将混合任务请求提交给 Braket 服务。

超参数:如果传入 hyperparameters,则它们在环境变量 "AMZN_BRAKET_HP_FILE" 下可用。

注意

有关如何创建超参数和输入数据而后将这些信息传递给混合作业脚本的更多信息,请参阅使用超参数部分和此 github 页面

检查点:要指定 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_BUCKETCreateJob 请求 OutputDataConfig 中指定的输出 Amazon S3 存储桶。

  • AMZN_BRAKET_SCRIPT_ENTRY_POINTCreateJob 请求的 ScriptModeConfig 中指定的入口点。

  • AMZN_BRAKET_SCRIPT_COMPRESSION_TYPECreateJob 请求的 ScriptModeConfig 中指定的压缩类型。

  • AMZN_BRAKET_SCRIPT_S3_URICreateJob 请求的 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:对于在作业容器中创建的量子任务,应传递给的 CreateQuantumTaskjobToken 参数的字符串。

辅助函数

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