mcpField
P
pennylane

pennylane

github.com/crazymsn开发2335 次安装22 周前更新
代码仓库

关于 pennylane

PennyLane 是面向量子计算与量子机器学习研究者和开发者的 Python 库,可构建混合量子经典模型。它支持量子电路自动微分、设备无关编程,并可与经典机器学习框架集成。

主要功能

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

适用场景

  1. 01训练变分量子分类器
  2. 02计算分子基态能量
  3. 03在提交硬件运行前测试电路

安装

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

$npx skills add https://github.com/crazymsn/academic-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 是一个量子计算库,可像训练神经网络一样训练量子计算机。它提供量子电路的自动微分、与设备无关的编程,以及与经典机器学习框架的无缝集成。

安装

使用 uv 安装:

uv pip install pennylane

如需访问量子硬件,请安装设备插件:

# IBM Quantum
uv pip install pennylane-qiskit

# Amazon Braket
uv pip install amazon-braket-pennylane-plugin

# Google Cirq
uv pip install pennylane-cirq

# Rigetti Forest
uv pip install pennylane-rigetti

# IonQ
uv pip install pennylane-ionq

快速入门

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

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、TensorFlow 集成
  • 量子神经网络和变分分类器
  • 数据编码策略(角度、振幅、基、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']
coords = np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.74])
H, n_qubits = qchem.molecular_hamiltonian(symbols, coords)

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

# 3. Optimize
opt = qml.AdamOptimizer(stepsize=0.1)
params = np.zeros(10, 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
dev_hw = qml.device('qiskit.ibmq', wires=4, backend='ibmq_manila')
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 加速性能关键代码

资源

评论

支持 Markdown