mcpField
P
pennylane

pennylane

github.com/kalarislabs其他7340 次安装3 天前更新
代码仓库

关于 pennylane

PennyLane 是用于构建和训练量子电路的 Python 库,面向量子计算及量子经典混合机器学习实践者。它结合自动微分与设备无关编程,支持模拟器和量子硬件执行。

主要功能

  1. 01量子电路构建
  2. 02自动微分
  3. 03量子经典混合模型
  4. 04量子化学工作流
  5. 05模拟器与硬件设备
  6. 06电路优化与编译

适用场景

  1. 01训练变分量子分类器
  2. 02计算分子基态能量
  3. 03在模拟器上测试电路
  4. 04在量子硬件上运行电路

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill pennylane

安装后在 Claude Code 中输入/pennylane确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced_features.md
devices_backends.md
getting_started.md
optimization.md
quantum_chemistry.md
quantum_circuits.md
quantum_ml.md

详细介绍

PennyLane

概述

PennyLane 是一个量子计算库,可像训练神经网络一样训练量子计算机。它提供量子线路的自动微分、与设备无关的编程方式,以及与经典机器学习框架的无缝集成。

安装

PennyLane 0.45.0 需要 Python 3.11 或更高版本。使用 uv 安装并固定版本,以创建可复现的环境:

uv pip install "pennylane==0.45.0"

若要访问量子硬件,请安装与目标提供商匹配的插件。添加或升级 Qiskit 时,请从干净的环境开始,因为它的依赖关系图有严格要求。

# IBM Quantum
uv pip install "pennylane-qiskit==0.45.0"

# Amazon Braket
uv pip install "amazon-braket-pennylane-plugin==1.34.1"

# Google Cirq
uv pip install "pennylane-cirq==0.44.0"

# Rigetti Forest
uv pip install "pennylane-rigetti==0.40.0"

# IonQ
uv pip install "pennylane-ionq==0.45.0"

# High-performance local simulators
uv pip install "pennylane-lightning==0.45.0"

# Catalyst JIT compilation
uv pip install "pennylane-catalyst==0.15.0"

快速入门

构建量子线路并优化其参数:

import pennylane as qml
from pennylane import numpy as np

# Create device
dev = qml.device('default.qubit', wires=2)

# Define quantum circuit
@qml.qnode(dev)
def circuit(params):
    qml.RX(params[0], wires=0)
    qml.RY(params[1], wires=1)
    qml.CNOT(wires=[0, 1])
    return qml.expval(qml.PauliZ(0))

# Optimize parameters
opt = qml.GradientDescentOptimizer(stepsize=0.1)
params = np.array([0.1, 0.2], requires_grad=True)

for i in range(100):
    params = opt.step(circuit, params)

核心功能

1. 量子线路构建

使用量子门、测量和态制备来构建线路。请参阅 references/quantum_circuits.md,了解:

  • 单量子比特门和多量子比特门
  • 受控操作和条件逻辑
  • 中间线路测量和自适应线路
  • 各种测量类型(期望值、概率、样本)
  • 线路检查和调试
2. 量子机器学习

创建量子-经典混合模型。请参阅 references/quantum_ml.md,了解:

  • 与 PyTorch 和 JAX 集成
  • 量子神经网络和变分分类器
  • 数据编码策略(角度、振幅、基、IQP)
  • 使用反向传播训练混合模型
  • 使用量子线路进行迁移学习
3. 量子化学

模拟分子并计算基态能量。请参阅 references/quantum_chemistry.md,了解:

  • 分子哈密顿量生成
  • 变分量子本征求解器(VQE)
  • 用于化学计算的 UCCSD Ansatz
  • 几何优化和解离曲线
  • 分子性质计算
4. 设备管理

在模拟器或量子硬件上执行。请参阅 references/devices_backends.md,了解:

  • 内置模拟器(default.qubit、lightning.qubit、default.mixed)
  • 硬件插件(IBM、Amazon Braket、Google、Rigetti、IonQ)
  • 设备选择和配置
  • 性能优化和缓存
  • GPU 加速和 JIT 编译
5. 优化

使用各种优化器训练量子线路。请参阅 references/optimization.md,了解:

  • 内置优化器(Adam、梯度下降、动量、RMSProp)
  • 梯度计算方法(反向传播、参数偏移、伴随法)
  • 变分算法(VQE、QAOA)
  • 训练策略(学习率调度、迷你批次)
  • 处理贫瘠高原和局部极小值
6. 高级功能

利用模板、变换和编译功能。请参阅 references/advanced_features.md,了解:

  • 线路模板和层
  • 变换和线路优化
  • 脉冲级编程
  • Catalyst JIT 编译
  • 噪声模型和误差缓解
  • 资源估算

常见工作流

训练变分分类器
# 1. Define ansatz
@qml.qnode(dev)
def classifier(x, weights):
    # Encode data
    qml.AngleEmbedding(x, wires=range(4))

    # Variational layers
    qml.StronglyEntanglingLayers(weights, wires=range(4))

    return qml.expval(qml.PauliZ(0))

# 2. Train
opt = qml.AdamOptimizer(stepsize=0.01)
weights = np.random.random((3, 4, 3))  # 3 layers, 4 wires

for epoch in range(100):
    for x, y in zip(X_train, y_train):
        weights = opt.step(lambda w: (classifier(x, w) - y)**2, weights)
运行 VQE 求解分子基态
from pennylane import qchem

# 1. Build Hamiltonian
symbols = ['H', 'H']
geometry = np.array([[0.0, 0.0, -0.66140414], [0.0, 0.0, 0.66140414]])
molecule = qchem.Molecule(symbols, geometry)
H, n_qubits = qchem.molecular_hamiltonian(molecule)
hf_state = qchem.hf_state(electrons=2, orbitals=n_qubits)
singles, doubles = qchem.excitations(electrons=2, orbitals=n_qubits)
s_wires, d_wires = qchem.excitations_to_wires(singles, doubles)

# 2. Define ansatz
@qml.qnode(dev)
def vqe_circuit(params):
    qml.BasisState(hf_state, wires=range(n_qubits))
    qml.UCCSD(params, wires=range(n_qubits), s_wires=s_wires, d_wires=d_wires)
    return qml.expval(H)

# 3. Optimize
opt = qml.AdamOptimizer(stepsize=0.1)
params = np.zeros(len(singles) + len(doubles), requires_grad=True)

for i in range(100):
    params, energy = opt.step_and_cost(vqe_circuit, params)
    print(f"Step {i}: Energy = {energy:.6f} Ha")
在设备之间切换
# Same circuit, different backends
circuit_def = lambda dev: qml.qnode(dev)(circuit_function)

# Test on simulator
dev_sim = qml.device('default.qubit', wires=4)
result_sim = circuit_def(dev_sim)(params)

# Run on quantum hardware
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False, min_num_qubits=4)
dev_hw = qml.device('qiskit.remote', wires=backend.num_qubits, backend=backend)
result_hw = circuit_def(dev_hw)(params)

详细文档

如需全面了解特定主题,请参阅相应的参考文件:

  • 入门:references/getting_started.md - 安装、基本概念、入门步骤
  • 量子线路:references/quantum_circuits.md - 量子门、测量、线路模式
  • 量子机器学习:references/quantum_ml.md - 混合模型、框架集成、QNN
  • 量子化学:references/quantum_chemistry.md - VQE、分子哈密顿量、化学工作流
  • 设备:references/devices_backends.md - 模拟器、硬件插件、设备配置
  • 优化:references/optimization.md - 优化器、梯度、变分算法
  • 高级功能:references/advanced_features.md - 模板、变换、JIT 编译、噪声

最佳实践

  1. 从模拟器开始 - 在部署到硬件前,先在 default.qubit 上测试
  2. 在硬件上使用参数位移 - 反向传播仅适用于模拟器
  3. 选择合适的编码方式 - 让数据编码与问题结构相匹配
  4. 谨慎初始化 - 使用较小的随机值,避免贫瘠高原
  5. 监控梯度 - 检查深层电路中是否存在梯度消失
  6. 缓存设备 - 重用设备对象,减少初始化开销
  7. 分析电路 - 使用 qml.specs() 分析电路复杂度
  8. 本地测试 - 提交到硬件前,先在模拟器上验证
  9. 使用模板 - 利用内置模板处理常见电路模式
  10. 尽可能编译 - 对性能关键代码使用 Catalyst JIT

资源

Agent 操作流程

  1. 检查环境。 确认库版本、单位、坐标系和数据格式(FITS、CIF、HDF5、netCDF)。
  2. 明确输入。 根据数据或用户提供的信息确认格式、标识符和参数。凡是会影响结果的值,都应询问,不要猜测。
  3. 先运行小规模版本。 在小网格、区域或子集上运行,并检查其物理合理性。
  4. 按照上述说明和参考资料执行完整任务。
  5. 验证结果。 检查单位和量纲一致性、守恒定律或已知极限,以及数值收敛性。
  6. 汇报。 说明运行了什么(版本、命令、参数)、检查了什么,以及哪些方面仍不确定。
如果发生这种情况请这样做
结果违反已知物理极限汇报前检查单位、边界条件和求解器容差。
这些说明中的函数、标志或端点在已安装版本中缺失查阅已安装版本自身的文档(help()、--help、官方文档),进行调整,并告知用户。切勿编造 API。
必需的输入、标识符或参数含义不明确询问用户,或在运行前明确说明所作假设。

诚信规则

  • 切勿捏造结果、参数、标识符、引用或统计数据。如果无法运行或验证某项内容,请如实说明。
  • 对每个定量结果,都要报告不确定性和数值容差。
  • 此处与版本相关的细节可能已经过时:请对照已安装版本的官方文档进行确认。
  • 对于涉及费用、占用共享 GPU 或云配额、接触个人或患者数据,或无法撤销的操作,请先征求同意。

相关技能

  • cirq:Google 量子计算框架。
  • qiskit:使用 Qiskit 和 IBM Quantum Runtime 构建、模拟、转译和执行量子电路。

评论

支持 Markdown