本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
PennyLane 与 Amazon Braket 一起使用
混合算法是同时包含经典指令和量子指令的算法。经典指令在经典硬件(EC2 实例或 Notebook)上运行,量子指令要么在模拟器上运行,要么在量子计算机上运行。我们建议您使用混合作业功能运行混合算法。有关更多信息,请参阅何时使用 Amazon Braket 任务。
Amazon Braket 使您能够在 Amazon Braket 插件的帮助下,或者使用 Amazon PennyLane Braket Python SDK 和示例笔记本存储库来设置和运行混合量子算法。基于软件开发工具包的 Amazon Braket 示例笔记本使您无需插件即可设置和运行某些混合算法。 PennyLane 但是,我们 PennyLane 之所以推荐,是因为它提供了更丰富的体验。
关于混合量子算法
混合量子算法对当今的行业很重要,因为当代量子计算设备通常会产生噪声,从而产生错误。计算中添加的每个量子门都会增加噪声增大的机会;因此,长期运行的算法可能会被噪声所淹没,从而导致计算错误。
诸如肖尔的(量子相位估计示例)
在混合量子算法中,量子处理单元 (QPUs) 充当经典算法的协处理器 CPUs,专门用于加快经典算法中的某些计算。电路执行时间大大缩短,触手可及。
本节内容:
带有 Amazon Braket PennyLane
Amazon Braket 为PennyLane
该 PennyLane 库为熟悉的机器学习工具(包括 PyTorch 和)提供了接口 TensorFlow,使量子电路训练变得快速而直观。
-
PennyLane 库 —— PennyLane 已预先安装在 Amazon Braket 笔记本电脑中。要从中访问 Amazon Braket 设备 PennyLane,请打开笔记本并使用以下命令导入 PennyLane 库。
import pennylane as qml
教程 Notebook 可帮助您快速入门。或者,您可以通过自己选择的 IDE PennyLane 在 Amazon Braket 上使用。
-
AmazonBraket PennyLane 插件 — 要使用你自己的 IDE,你可以手动安装 Amazon Braket PennyLane 插件。该插件 PennyLane 与 Amazon Braket Python SDK
连接,因此你可以在 Amazon Braket 设备 PennyLane 上运行电路。要安装该 PennyLane 插件,请使用以下命令。
pip install amazon-braket-pennylane-plugin
以下示例演示了如何在中 PennyLane设置对 Amazon Braket 设备的访问权限:
# to use SV1 import pennylane as qml sv1 = qml.device("braket.aws.qubit", device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", wires=2) # to run a circuit: @qml.qnode(sv1) def circuit(x): qml.RZ(x, wires=0) qml.CNOT(wires=[0,1]) qml.RY(x, wires=1) return qml.expval(qml.PauliZ(1)) result = circuit(0.543) #To use the local sim: local = qml.device("braket.local.qubit", wires=2)
有关教程示例和更多信息 PennyLane,请参阅 Amazon Braket 示例存储库
AmazonBraket PennyLane 插件使您只需一行代码即可在 Amazon PennyLane Braket QPU 和嵌入式仿真器设备之间切换。它提供了两个 Amazon Braket 量子器件可供使用 PennyLane:
-
braket.aws.qubit用于与 Amazon Braket 服务的量子设备一起运行,包括 QPUs 和模拟器 -
braket.local.qubit用于使用 Amazon Braket SDK 的本地模拟器运行
AmazonBraket PennyLane 插件是开源的。你可以从PennyLane 插件 GitHub 存储库
有关的更多信息 PennyLane,请参阅PennyLane 网站
Amazon Braket 中的混合算法示例 Notebook
Amazon Braket 确实提供了各种不依赖 PennyLane 插件来运行混合算法的示例笔记本。您可以开始使用这些说明变分方法的 Amazon Braket 混合示例 Notebook
Amazon Braket 示例 Notebook 依赖于 Amazon Braket Python SDK
您可以使用我们的示例 Notebook
带有嵌入式 PennyLane 仿真器的混合算法
Amazon Braket Hybrid Jobs 现在配备了基于 CPU 和 GPU 的高性能嵌入式模拟器。PennyLanelightning.qubit 模拟器、使用 NVIDIA 的 cuQuantum 库lightning.gpu 模拟器等。这些嵌入式模拟器非常适合变分算法,如量子机器学习,这些算法可以从高级方法(如伴随微分法
借助 Hybrid Jobs,您现在可以使用经典协处理器和 QPU 的组合、Amazon Braket 按需仿真器(例如)或直接使用中的嵌入式仿真器来运行变分算法代码。SV1 PennyLane
嵌入式模拟器已经在 Hybrid Jobs 容器中可用,您需要用 @hybrid_job 装饰器来装饰您的主 Python 函数。要使用 PennyLane lightning.gpu模拟器,您还需要在中指定 GPU 实例,InstanceConfig如以下代码片段所示:
import pennylane as qml from braket.jobs import hybrid_job from braket.jobs.config import InstanceConfig @hybrid_job(device="local:pennylane/lightning.gpu", instance_config=InstanceConfig(instanceType="ml.g4dn.xlarge")) def function(wires): dev = qml.device("lightning.gpu", wires=wires) ...
要开始使用带有 Hybrid Jobs 的 PennyLane 嵌入式模拟器,请参阅示例笔记本
PennyLane 使用 Amazon Braket 模拟器开启伴随渐变
借助 Amazon Braket 的PennyLane插件,您可以在本地状态向量模拟器上运行时使用伴随微分法计算梯度,或者。 SV1
注意:要使用伴随微分法,必须在您的 qnode 而非 diff_method='adjoint' 中指定 diff_method='device'。请参阅以下示例。
device_arn = "arn:aws:braket:::device/quantum-simulator/amazon/sv1" dev = qml.device("braket.aws.qubit", wires=wires, shots=0, device_arn=device_arn) @qml.qnode(dev, diff_method="device") def cost_function(params): circuit(params) return qml.expval(cost_h) gradient = qml.grad(circuit) initial_gradient = gradient(params0)
注意
目前,PennyLane 将计算 QAOA 哈密顿量的分组指数,并使用它们将哈密顿函数拆分为多个期望值。如果要在从中运行 QAOA 时使用 SV1伴随微分能力PennyLane,则需要通过移除分组指数来重建成本哈密顿模型,如下所示:cost_h, mixer_h = qml.qaoa.max_clique(g, constrained=False)
cost_h = qml.Hamiltonian(cost_h.coeffs, cost_h.ops)