本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭 PennyLane 配 Amazon Braket
混合算法是包含傳統和量子指令的算法。經典指令在經典硬件(EC2實例或筆記本電腦)上運行,量子指令可以在模擬器或量子計算機上運行。建議您使用「混合式工作」功能執行混合演算法。如需詳細資訊,請參閱何時使用 Amazon Braket 工作。
Amazon Braket 可讓您在 Amazon Braket PennyLane 外掛程式的協助下,或使用 Amazon Braket Python 和範例筆記型電腦儲存庫來設定SDK和執行混合量子演算法。Amazon Braket 範例筆記本電腦的基礎,可讓您在SDK不使用 PennyLane 外掛程式的情況下設定和執行某些混合演算法。但是,我們建議使用, PennyLane 因為它提供了更豐富的體驗。
關於混合量子演算法
混合量子演算法對現今的產業來說很重要,因為當代量子運算裝置通常會產生雜訊,因此會產生錯誤。加入計算中的每個量子閘都會增加雜訊的機會;因此,長時間執行的演算法可能會因雜訊而不堪重負,這會導致計算錯誤。
純量子算法,如 Shor(量子相位估計示例)
在混合量子算法中,量子處理單元(QPUs)作為經典的協同處理器CPUs,特別是為了加快傳統算法中的某些計算。在當今設備的功能範圍內,電路執行變得更短。
在本節中:
Amazon Braket 與 PennyLane
Amazon Braket 提供支援 PennyLane
該 PennyLane 庫提供熟悉的機器學習工具的介面,包括 PyTorch 和 TensorFlow,使量子電路訓練快速且直觀。
-
圖 PennyLane 書館-預先 PennyLane 安裝在 Amazon 布拉克特筆記本。若要存取 Amazon 從中編輯設備 PennyLane,打開筆記本並使用以下命令導入 PennyLane 庫。
import pennylane as qml
教學課程筆記本可協助您快速入門。或者,您可以使 PennyLane 用 Amazon 從您選擇IDE的布拉克特。
-
該 Amazon 布拉克特 PennyLane 插件 -要使用自己的IDE,您可以安裝 Amazon 手動編輯 PennyLane 插件。該插件 PennyLane 與 Amazon Braket Python
連接SDK,因此您可以在 PennyLane 上運行電路 Amazon 布拉基裝置。要安裝 PennyLane 插件,請使用以下命令。
pip install amazon-braket-pennylane-plugin
以下實例演示瞭如何設置訪問權限 Amazon 布拉基裝置在 PennyLane:
# 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 範例儲存庫
所以此 Amazon 布拉克特 PennyLane 插件使您可以在之間切換 Amazon PennyLane 用一行代碼進行 Braket QPU 和嵌入式模擬器設備。它提供了兩個 Amazon 制動量子裝置可搭配使用 PennyLane:
-
braket.aws.qubit
用於運行 Amazon 制動服務的量子設備,包括QPUs和模擬器 -
braket.local.qubit
用於運行 Amazon 布拉克特SDK的本地模擬器
所以此 Amazon 布拉克特 PennyLane 插件是開源的。您可以從PennyLane 插件 GitHub 存儲庫
如需詳細資訊 PennyLane,請參閱PennyLane 網站
Amazon Braket 局範例筆記型電腦中的混合式
Amazon Braket 確實提供了各種不依賴 PennyLane 外掛程式執行混合演算法的範例筆記型電腦。您可以開始使用這些 Amazon Braket 混合式範例筆記型電腦,這些筆記型電腦
Amazon Braket 示例筆記本電腦依賴於 Amazon Braket
你可以探索 Amazon 用我們的示例筆記
含嵌入式 PennyLane 模擬器的混合演算法
Amazon Braket 混合式工作現在提供高效能CPU和GPU基於的嵌入式模擬器。PennyLanelightning.qubit
模擬器,使用的cuQuantum 庫lightning.gpu
模擬器等。這些嵌入式模擬器非常適合用於變分算法,例如量子機器學習,可以從諸如伴
有了混合式工作,您現在可以使用傳統輔助處理器QPU和 Amazon 布拉克特按需模擬器,例如 SV1,或直接使用嵌入式模擬器 PennyLane。
嵌入式模擬器已經與混合作業容器一起使用,您只需要使用裝飾@hybrid_job
器來裝飾您的主 Python 函數即可。要使用 PennyLane lightning.gpu
模擬器,您還需要在下面的InstanceConfig
代碼片段中指定一個GPU實例:
import pennylane as qml from braket.jobs import hybird_job from braket.jobs.config import InstanceConfig @hybrid_job(device="local:pennylane/lightning.gpu", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge")) def function(wires): dev = qml.device("lightning.gpu", wires=wires) ...
請參閱範例筆記本
PennyLane 與 Amazon Braket 模擬器相伴漸變
隨著 PennyLane 用於 Amazon Braket 的插件,您可以在本地狀態矢量模擬器上運行時使用伴隨差分方法計算梯度或. SV1
注意:要使用伴隨區分方法,您必須diff_method='device'
在您的qnode
,而不是指定。 diff_method='adjoint'
請參閱以下範例。
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哈密頓人的分組索引,並使用它們將哈密頓分成多個期望值。如果您想在運行時使用SV1的伴隨區分功能 QAOA PennyLane,您將需要通過刪除分組索引來重建成本哈密頓軸,如下所示:cost_h, mixer_h = qml.qaoa.max_clique(g, constrained=False)
cost_h = qml.Hamiltonian(cost_h.coeffs, cost_h.ops)