使用参数化编译加快混合作业的速度 - Amazon Braket

使用参数化编译加快混合作业的速度

Amazon Braket 支持在某些 QPU 上进行参数化编译。这样,您可以仅编译一次电路,而不是为混合算法中的每次迭代编译一次,从而减少与计算成本高昂的编译步骤相关的开销。这样可以明显缩短 Hybrid Jobs 的运行时,因为您无需在每一步都重新编译电路。只需将参数化电路作为 Braket Hybrid Jobs 提交到我们支持的 QPU 即可。对于长时间运行的混合作业,Braket 在编译电路时会自动使用硬件提供商提供的最新校准数据,以确保获得最高质量的结果。

要创建参数化电路,首先需要在算法脚本中提供参数作为输入。在该例子中,我们使用了一个小型参数化电路,忽略了每次迭代之间的任何经典处理。对于典型的工作负载,您需要批量提交许多电路并执行经典处理,例如在每次迭代中更新参数。

import os from braket.aws import AwsDevice from braket.circuits import Circuit, FreeParameter def start_here(): print("Test job started.") # Use the device declared in the job script device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) circuit = Circuit().rx(0, FreeParameter("theta")) parameter_list = [0.1, 0.2, 0.3] for parameter in parameter_list: result = device.run(circuit, shots=1000, inputs={"theta": parameter}) print("Test job completed.")

您可以使用以下作业脚本提交算法脚本以混合作业形式运行。在支持参数化编译的 QPU 上运行 Hybrid Jobs 时,仅在第一次运行时才编译电路。在接下来的运行中,重复使用编译后的电路,无需任何额外的代码行即可提高 Hybrid Jobs 的运行时性能。

from braket.aws import AwsQuantumJob job = AwsQuantumJob.create( device=device_arn, source_module="algorithm_script.py", )
注意

除脉冲电平程序外,所有来自 Rigetti Computing 的基于门的超导 QPU 都支持参数化编译。