本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 Braket 筆記本。存取 Amazon 使用下列命令從中啟動裝置 PennyLane、開啟筆記本並匯入 PennyLane 程式庫。
import pennylane as qml
教學筆記本可協助您快速入門。或者,您可以在 PennyLane Amazon 從IDE您選擇的 中擷取。
-
的 Amazon Braket PennyLane 外掛程式:若要使用您自己的 IDE,您可以安裝 Amazon Braket 手動 PennyLane 外掛程式。外掛程式 PennyLane 會與 Amazon Braket Python SDK
連線,因此您可以在 PennyLane Amazon Braket 裝置。若要安裝 PennyLane 外掛程式,請使用下列命令。
pip install amazon-braket-pennylane-plugin
下列範例示範如何設定 的存取權 Amazon 中的 Braket 裝置 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 Braket PennyLane 外掛程式可讓您在 之間切換 Amazon 在 PennyLane 中使用單行程式碼的 Braket QPU和內嵌模擬器裝置。它提供兩個 Amazon 要使用的剎車量子裝置 PennyLane:
-
braket.aws.qubit
使用 執行 Amazon Braket 服務的量子裝置,包括 QPUs和 模擬器 -
braket.local.qubit
使用 執行 Amazon Braket SDK的本機模擬器
所以此 Amazon Braket PennyLane 外掛程式是開放原始碼。您可以從PennyLane 外掛程式 GitHub 儲存庫
如需詳細資訊 PennyLane,請參閱 PennyLane
Amazon Braket 範例筆記本中的混合演算法
Amazon Braket 確實提供各種範例筆記本,這些筆記本不依賴 PennyLane 外掛程式來執行混合式演算法。您可以開始使用任何說明不同方法的 Amazon Braket 混合式範例筆記本
Amazon Braket 範例筆記本依賴 Amazon Braket Python SDK
您可以探索 Amazon 使用範例筆記本
具有內嵌 PennyLane 模擬器的混合演算法
Amazon Braket 混合任務現在隨附來自 的高效能 CPU和 GPU型內嵌模擬器PennyLanelightning.qubit
模擬器、使用 NVIDIA的程式cuQuantum 庫lightning.gpu
模擬器等。這些內嵌模擬器非常適合各種演算法,例如量子機器學習,這些演算法可以從輔助差異化方法
使用混合式任務,您現在可以使用傳統協同處理器和 的組合來執行不同的演算法程式碼QPU,Amazon Braket 隨需模擬器,例如 SV1,或直接從 使用內嵌模擬器 PennyLane。
內嵌模擬器已搭配 Hybrid Jobs 容器使用,您只需使用@hybrid_job
裝飾器裝飾您的主要 Python 函數。若要使用 PennyLane lightning.gpu
模擬器,您也需要在 中指定GPU執行個體InstanceConfig
,如下列程式碼片段所示:
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漢密爾頓人運算分組索引,並使用它們將漢密頓人分割為多個預期值。如果您想要QAOA在從 執行時,使用 SV1的聯合差異化功能 PennyLane,您將需要移除分組索引來重建 Hamiltonian 的成本,如下所示: cost_h, mixer_h = qml.qaoa.max_clique(g, constrained=False) cost_h = qml.Hamiltonian(cost_h.coeffs, cost_h.ops)