pennylane
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePennyLane
PennyLane
Overview
概述
PennyLane is a quantum computing library that enables training quantum computers like neural networks. It provides automatic differentiation of quantum circuits, device-independent programming, and seamless integration with classical machine learning frameworks.
PennyLane是一款量子计算库,可像训练神经网络一样训练量子计算机。它提供量子电路的自动微分、设备无关编程,以及与经典机器学习框架的无缝集成。
Installation
安装
Install using uv:
bash
uv pip install pennylaneFor quantum hardware access, install device plugins:
bash
undefined使用uv安装:
bash
uv pip install pennylane如需访问量子硬件,请安装设备插件:
bash
undefinedIBM Quantum
IBM Quantum
uv pip install pennylane-qiskit
uv pip install pennylane-qiskit
Amazon Braket
Amazon Braket
uv pip install amazon-braket-pennylane-plugin
uv pip install amazon-braket-pennylane-plugin
Google Cirq
Google Cirq
uv pip install pennylane-cirq
uv pip install pennylane-cirq
Rigetti Forest
Rigetti Forest
uv pip install pennylane-rigetti
uv pip install pennylane-rigetti
IonQ
IonQ
uv pip install pennylane-ionq
undefineduv pip install pennylane-ionq
undefinedQuick Start
快速开始
Build a quantum circuit and optimize its parameters:
python
import pennylane as qml
from pennylane import numpy as np构建量子电路并优化其参数:
python
import pennylane as qml
from pennylane import numpy as npCreate device
创建设备
dev = qml.device('default.qubit', wires=2)
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))
@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)
undefinedopt = 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)
undefinedCore Capabilities
核心功能
1. Quantum Circuit Construction
1. 量子电路构建
Build circuits with gates, measurements, and state preparation. See for:
references/quantum_circuits.md- Single and multi-qubit gates
- Controlled operations and conditional logic
- Mid-circuit measurements and adaptive circuits
- Various measurement types (expectation, probability, samples)
- Circuit inspection and debugging
使用门、测量和状态准备来构建电路。请参阅了解:
references/quantum_circuits.md- 单量子比特和多量子比特门
- 受控操作和条件逻辑
- 电路中途测量和自适应电路
- 各种测量类型(期望值、概率、样本)
- 电路检查与调试
2. Quantum Machine Learning
2. 量子机器学习
Create hybrid quantum-classical models. See for:
references/quantum_ml.md- Integration with PyTorch, JAX, TensorFlow
- Quantum neural networks and variational classifiers
- Data encoding strategies (angle, amplitude, basis, IQP)
- Training hybrid models with backpropagation
- Transfer learning with quantum circuits
创建混合量子-经典模型。请参阅了解:
references/quantum_ml.md- 与PyTorch、JAX、TensorFlow的集成
- 量子神经网络和变分分类器
- 数据编码策略(角度、振幅、基、IQP)
- 使用反向传播训练混合模型
- 量子电路的迁移学习
3. Quantum Chemistry
3. 量子化学
Simulate molecules and compute ground state energies. See for:
references/quantum_chemistry.md- Molecular Hamiltonian generation
- Variational Quantum Eigensolver (VQE)
- UCCSD ansatz for chemistry
- Geometry optimization and dissociation curves
- Molecular property calculations
模拟分子并计算基态能量。请参阅了解:
references/quantum_chemistry.md- 分子哈密顿量生成
- 变分量子本征求解器(VQE)
- 用于化学的UCCSD ansatz
- 几何优化和解离曲线
- 分子性质计算
4. Device Management
4. 设备管理
Execute on simulators or quantum hardware. See for:
references/devices_backends.md- Built-in simulators (default.qubit, lightning.qubit, default.mixed)
- Hardware plugins (IBM, Amazon Braket, Google, Rigetti, IonQ)
- Device selection and configuration
- Performance optimization and caching
- GPU acceleration and JIT compilation
在模拟器或量子硬件上执行。请参阅了解:
references/devices_backends.md- 内置模拟器(default.qubit、lightning.qubit、default.mixed)
- 硬件插件(IBM、Amazon Braket、Google、Rigetti、IonQ)
- 设备选择与配置
- 性能优化与缓存
- GPU加速和JIT编译
5. Optimization
5. 优化
Train quantum circuits with various optimizers. See for:
references/optimization.md- Built-in optimizers (Adam, gradient descent, momentum, RMSProp)
- Gradient computation methods (backprop, parameter-shift, adjoint)
- Variational algorithms (VQE, QAOA)
- Training strategies (learning rate schedules, mini-batches)
- Handling barren plateaus and local minima
使用各种优化器训练量子电路。请参阅了解:
references/optimization.md- 内置优化器(Adam、梯度下降、动量、RMSProp)
- 梯度计算方法(反向传播、参数移位、伴随法)
- 变分算法(VQE、QAOA)
- 训练策略(学习率调度、小批量)
- 处理贫瘠高原和局部最小值
6. Advanced Features
6. 高级功能
Leverage templates, transforms, and compilation. See for:
references/advanced_features.md- Circuit templates and layers
- Transforms and circuit optimization
- Pulse-level programming
- Catalyst JIT compilation
- Noise models and error mitigation
- Resource estimation
利用模板、变换和编译。请参阅了解:
references/advanced_features.md- 电路模板和层
- 变换和电路优化
- 脉冲级编程
- Catalyst JIT编译
- 噪声模型和错误缓解
- 资源估算
Common Workflows
常见工作流
Train a Variational Classifier
训练变分分类器
python
undefinedpython
undefined1. Define ansatz
1. 定义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))@qml.qnode(dev)
def classifier(x, weights):
# 编码数据
qml.AngleEmbedding(x, wires=range(4))
# 变分层
qml.StronglyEntanglingLayers(weights, wires=range(4))
return qml.expval(qml.PauliZ(0))2. Train
2. 训练
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)
undefinedopt = qml.AdamOptimizer(stepsize=0.01)
weights = np.random.random((3, 4, 3)) # 3层,4个量子比特
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)
undefinedRun VQE for Molecular Ground State
运行VQE计算分子基态
python
from pennylane import qchempython
from pennylane import qchem1. Build Hamiltonian
1. 构建哈密顿量
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)
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
2. 定义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)
@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
3. 优化
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")
undefinedopt = 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")
undefinedSwitch Between Devices
在设备间切换
python
undefinedpython
undefinedSame circuit, different backends
相同电路,不同后端
circuit_def = lambda dev: qml.qnode(dev)(circuit_function)
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)
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)
undefineddev_hw = qml.device('qiskit.ibmq', wires=4, backend='ibmq_manila')
result_hw = circuit_def(dev_hw)(params)
undefinedDetailed Documentation
详细文档
For comprehensive coverage of specific topics, consult the reference files:
- Getting started: - Installation, basic concepts, first steps
references/getting_started.md - Quantum circuits: - Gates, measurements, circuit patterns
references/quantum_circuits.md - Quantum ML: - Hybrid models, framework integration, QNNs
references/quantum_ml.md - Quantum chemistry: - VQE, molecular Hamiltonians, chemistry workflows
references/quantum_chemistry.md - Devices: - Simulators, hardware plugins, device configuration
references/devices_backends.md - Optimization: - Optimizers, gradients, variational algorithms
references/optimization.md - Advanced: - Templates, transforms, JIT compilation, noise
references/advanced_features.md
如需了解特定主题的全面内容,请查阅参考文件:
- 入门指南:- 安装、基础概念、第一步
references/getting_started.md - 量子电路:- 门、测量、电路模式
references/quantum_circuits.md - 量子机器学习:- 混合模型、框架集成、QNN
references/quantum_ml.md - 量子化学:- VQE、分子哈密顿量、化学工作流
references/quantum_chemistry.md - 设备:- 模拟器、硬件插件、设备配置
references/devices_backends.md - 优化:- 优化器、梯度、变分算法
references/optimization.md - 高级功能:- 模板、变换、JIT编译、噪声
references/advanced_features.md
Best Practices
最佳实践
- Start with simulators - Test on before deploying to hardware
default.qubit - Use parameter-shift for hardware - Backpropagation only works on simulators
- Choose appropriate encodings - Match data encoding to problem structure
- Initialize carefully - Use small random values to avoid barren plateaus
- Monitor gradients - Check for vanishing gradients in deep circuits
- Cache devices - Reuse device objects to reduce initialization overhead
- Profile circuits - Use to analyze circuit complexity
qml.specs() - Test locally - Validate on simulators before submitting to hardware
- Use templates - Leverage built-in templates for common circuit patterns
- Compile when possible - Use Catalyst JIT for performance-critical code
- 从模拟器开始 - 部署到硬件前先在上测试
default.qubit - 硬件使用参数移位法 - 反向传播仅适用于模拟器
- 选择合适的编码方式 - 使数据编码与问题结构匹配
- 谨慎初始化 - 使用小随机值避免贫瘠高原
- 监控梯度 - 检查深度电路中的梯度消失问题
- 缓存设备 - 重用设备对象以减少初始化开销
- 分析电路 - 使用分析电路复杂度
qml.specs() - 本地测试 - 在提交到硬件前先在模拟器上验证
- 使用模板 - 利用内置模板实现常见电路模式
- 尽可能编译 - 对性能关键型代码使用Catalyst JIT
Resources
资源
- Official documentation: https://docs.pennylane.ai
- Codebook (tutorials): https://pennylane.ai/codebook
- QML demonstrations: https://pennylane.ai/qml/demonstrations
- Community forum: https://discuss.pennylane.ai
- GitHub: https://github.com/PennyLaneAI/pennylane