本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
混合演算法是同時包含傳統和量子指示的演算法。傳統說明是在傳統硬體 (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 筆記本中。若要從 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 混合式範例筆記本
Amazon Braket 範例筆記本依賴 Amazon Braket Python SDK
您可以使用我們的範例筆記本
具有內嵌 PennyLane 模擬器的混合演算法
Amazon Braket 混合任務現在隨附 PennyLanelightning.qubit
模擬器、使用 NVIDIA 的 cuQuantum 程式庫lightning.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 上的聯結漸層搭配 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)