本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 PennyLane 與 Amazon Braket
混合算法是包含傳統和量子指令的算法。傳統指令在傳統硬件(EC2 實例或筆記本電腦)上執行,量子指令在模擬器或量子計算機上執行。建議您使用「混合式工作」功能執行混合演算法。如需詳細資訊,請參閱何時使用 Amazon Braket 工作。
AmazonBraket 使您能夠在以下位置的協助下設置和運行混合量子算法 Amazon布拉基 PennyLane 插入,或使用 AmazonPython 套件以及範例筆記本儲存庫。Amazon以 SDK 為基礎的 Braket 範例筆記本,可讓您設定和執行某些混合演算法,而無需 PennyLane 插件。但是,我們建議 PennyLane 因為它提供了更豐富的體驗。
關於混合量子演算法
混合量子演算法對現今的產業很重要,因為當代量子運算裝置通常會產生雜訊,因此會產生錯誤。加入計算中的每個量子閘都會增加雜訊的機會;因此,長時間執行的演算法可能會因雜訊而不堪重負,這會導致計算錯誤。
純量子算法,例如紹爾(資格派對例子)
在混合量子演算法中,量子處理單元 (QPU) 可作為傳統 CPU 的協同處理器,特別是為了加速傳統演算法中的某些計算。在當今設備的功能範圍內,電路執行變得更短。
Amazon Braket PennyLane
Amazon胸針提供支持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 蛇 SDK
,所以你可以運行電路 PennyLane 上Amazon布拉基裝置。若要安裝 PennyLane 插件,使用以下範例。
pip install amazon-braket-pennylane-plugin
以下範例示範如何設置訪問Amazon布拉基裝置 PennyLane:
# to use SV1 import pennylane as qml s3 = ("my-bucket", "my-prefix") sv1 = qml.device("braket.aws.qubit", device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", s3_destination_folder=s3, 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 插件使您可以在之間切換AmazonBraket QPU 和嵌入式模擬器設備 PennyLane 用一行代碼。它提供了兩個Amazon配合使用的制動器 PennyLane:
-
braket.aws.qubit
用於運行Amazon制動服務的量子設備,包括 QPU 和模擬器 -
braket.local.qubit
用於運行Amazon布拉科特 SDK 的本地模擬器
該Amazon布拉基 PennyLane 插件是開源。您可以從PennyLane 插件 GitHub 儲存庫
如需更多資訊 PennyLane,以下範例。PennyLane 網站
Amazon Braket 局範例筆記型電腦中的混合式
AmazonBraket 確實提供了各種不依賴的例子筆記本電腦 PennyLane 用於運行混合算法的插件。您可以開始使用以下範例Amazon Braket 混合示例筆記本
該Amazon布拉基例筆記本電腦依靠Amazon Braket 蛇 SDK
你可以探索Amazon與我們進一步布拉克特範例筆記本
嵌入式混合算法 PennyLane 模擬器
AmazonBraket 混合作業現在配備了高性能 CPU 和 GPU 的嵌入式模擬器PennyLanelightning.qubit
模擬器lightning.gpu
使用 NVIDIA 的模擬器加速量子圖書館
透過混合式工作,您現在可以使用傳統輔助處理器和 QPU 的組合來執行變數演算法程式碼,Amazon布拉克特按需模擬器,例如SV1,或直接使用嵌入式模擬器 PennyLane。
「混合式工作」容器已提供嵌入式模擬器,您只需要指定device
(例如device="local:pennylane/lightning.gpu"
),如下圖所示。若要使用嵌入lightning.gpu
模擬器,您還需要在InstanceConfig
如下面的代碼片段所示:
job = AwsQuantumJob.create( device="local:pennylane/lightning.gpu", source_module="algorithm_script.py", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge") )
您還必須使用環境變量在算法代碼中引用設備AMZN_BRAKET_DEVICE_ARN
如下範例。
import os import pennylane as qml device_string = os.environ["AMZN_BRAKET_DEVICE_ARN"] prefix, simulator_name = device_string.split("/") device = qml.device(simulator_name, wires=n_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 (https://docs.pennylane.ai/en/stable/code/api/pennylane.device.html#pennylane.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)