選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

搭配 Amazon Braket 使用 PennyLane

焦點模式
搭配 Amazon Braket 使用 PennyLane - Amazon Braket

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

混合演算法是同時包含傳統和量子指示的演算法。傳統說明是在傳統硬體 (EC2 執行個體或筆記型電腦) 上執行,而量子說明是在模擬器或量子電腦上執行。建議您使用混合任務功能執行混合演算法。如需詳細資訊,請參閱何時使用 Amazon Braket 任務

Amazon Braket 可讓您在 Amazon Braket PennyLane 外掛程式 Amazon Braket Python SDK 和範例筆記本儲存庫的協助下,設定和執行混合式量子演算法。Amazon Braket 範例筆記本以 SDK 為基礎,可讓您在沒有 PennyLane 外掛程式的情況下設定和執行特定混合式演算法。不過,我們建議使用 PennyLane,因為它提供更豐富的體驗。

關於混合量子演算法

混合量子演算法對現今的產業來說很重要,因為現代量子運算裝置通常會產生雜訊,因此會產生錯誤。新增至運算的每個量子閘道都會提高增加雜訊的機會;因此,長時間執行的演算法可能會因為雜訊而負擔過重,從而導致運算錯誤。

純量子演算法,例如 Shor 的 (量子階段估算範例) 或 Grover 的 (Grover 範例),需要數千或數百萬個操作。因此,對於現有的量子裝置來說,它們可能不切實際,通常稱為雜訊中級量子 (NISQ) 裝置。

在混合量子演算法中,量子處理單元 (QPUs) 可做為傳統 CPUs 的共同處理器,特別是在傳統演算法中加速特定計算。電路執行會縮短得多,且可在現今裝置的功能範圍內。

Amazon Braket 搭配 PennyLane

Amazon Braket 支援 PennyLane,這是一種以量子可區分程式設計概念為基礎的開放原始碼軟體架構。您可以使用此架構,以訓練神經網路的方式訓練量子電路,以尋找量子化學、量子機器學習和最佳化中運算問題的解決方案。

PennyLane 程式庫提供熟悉的機器學習工具介面,包括 PyTorch 和 TensorFlow,讓訓練量子電路快速且直覺。

  • PennyLane 程式庫 - – PennyLane 已預先安裝在 Amazon Braket 筆記本中。若要從 PennyLane 存取 Amazon Braket 裝置,請開啟筆記本並使用下列命令匯入 PennyLane 程式庫。

import pennylane as qml

教學課程筆記本可協助您快速開始使用。或者,您可以從您選擇的 IDE 在 Amazon Braket 上使用 PennyLane。

  • Amazon Braket 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 範例儲存庫

Amazon Braket PennyLane 外掛程式可讓您在 PennyLane 中以單一程式碼行切換 Amazon Braket QPU 和內嵌模擬器裝置。它提供兩個 Amazon Braket 量子裝置,可與 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 混合式範例筆記本,例如 Quantum 近似最佳化演算法 (QAOA) 或 Variational Quantum Eigensolver (VQE)。

Amazon Braket 範例筆記本依賴 Amazon Braket Python SDK。SDK 提供框架,可透過 Amazon Braket 與量子運算硬體裝置互動。它是一種開放原始碼程式庫,旨在協助您處理混合工作流程的量子部分。

您可以使用我們的範例筆記本進一步探索 Amazon Braket。

具有內嵌 PennyLane 模擬器的混合演算法

Amazon Braket 混合任務現在隨附 PennyLane 的高效能 CPU 和 GPU 型內嵌模擬器。此系列的內嵌模擬器可以直接嵌入混合任務容器中,並包含快速狀態向量lightning.qubit模擬器、使用 NVIDIA 的 cuQuantum 程式庫加速的lightning.gpu模擬器等。這些內嵌模擬器非常適合各種演算法,例如量子機器學習,這些演算法可以從輔助差異化方法等進階方法中受益。您可以在一或多個 CPU 或 GPU 執行個體上執行這些內嵌模擬器。

使用混合任務,您現在可以使用傳統協同處理器和 QPU 的組合、例如 的 Amazon Braket 隨需模擬器SV1,或直接從 PennyLane 使用內嵌模擬器來執行變化演算法程式碼。

內嵌模擬器已與混合任務容器搭配使用,您只需使用 裝飾器@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.p3.8xlarge")) def function(wires): dev = qml.device("lightning.gpu", wires=wires) ...

請參閱範例筆記本,以開始使用 PennyLane 內嵌模擬器搭配混合任務。

PennyLane 上的聯結漸層搭配 Amazon Braket 模擬器

使用 Amazon Braket 的 PennyLane外掛程式,您可以在本機狀態向量模擬器或 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 Hamiltonians 的分組索引,並使用它們將 Hamiltonian 分割為多個預期值。如果您想要在從 執行 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)

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。