关于 alterlab-qiskit
alterlab-qiskit 是面向量子计算开发者的 Qiskit 使用技能,涵盖量子线路构建、优化、执行与结果分析,并针对 Qiskit 2.x 更新示例和实践要点。
主要功能
- 01构建并组合量子线路
- 02转译与优化线路
- 03在模拟器和硬件上运行
- 04使用 Sampler 与 Estimator
- 05实现量子算法并分析结果
适用场景
- 01为硬件执行准备量子线路
- 02在本地模拟器测试线路
- 03使用 VQE 或 QAOA 求解问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-qiskit安装后在 Claude Code 中输入/alterlab-qiskit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/algorithms.mdbackends.mdcircuits.mdpatterns.mdprimitives.mdsetup.mdtranspilation.mdvisualization.md详细介绍
Qiskit
概述
Qiskit 是一个开源量子计算框架。构建量子电路、针对硬件进行优化、在模拟器或真实量子计算机上执行,并分析结果。支持 IBM Quantum(100+ 量子比特的 Heron 和 Nighthawk 系统)、IonQ、Amazon Braket 及其他提供商。
版本说明: 示例适用于 Qiskit SDK 2.x(qiskit>=2,<3,Python 3.10+;截至 2026-09 的当前版本为 2.5.x)和 qiskit-ibm-runtime ≥ 0.40(当前为 0.49)。旧教程在这些变更后会失效,因此请确认你改编的任何代码片段都符合这些要求:
- Qiskit 1.0 移除了
execute()、BasicAer、qiskit.tools(包括tools.jupyter、job_monitor)和bind_parameters——请改用原语、qiskit.providers.basic_provider.BasicSimulator和assign_parameters。 - Qiskit 2.0 移除了
qiskit.pulse、BackendV1、V1 参考原语(qiskit.primitives.Sampler/Estimator)和Instruction.c_if(请改用with qc.if_test(...))。 - Qiskit 2.1 弃用了库电路的类形式(
RealAmplitudes、EfficientSU2、TwoLocal、ZZFeatureMap、QFT等;将在 3.0 中移除)——请改用real_amplitudes()、efficient_su2()、n_local()、zz_feature_map()、QFTGate。 - Runtime V2 原语使用
mode=(后端、Session或Batch);旧的session=/backend=关键字会引发TypeError。Options类和channel="ibm_quantum"已移除——该平台现在位于 quantum.cloud.ibm.com(API 密钥 + 实例 CRN,通道为"ibm_quantum_platform")。
何时使用此技能
当用户想要执行以下操作时,请使用此技能:
- 在 IBM Quantum 硬件或本地模拟器上构建、转译并运行门模型电路
- 在作业、批处理或会话模式下使用 Qiskit Runtime 原语(SamplerV2 / EstimatorV2)
- 应用错误抑制/缓解技术(twirling、动态去耦、TREX、ZNE)
- 使用 Qiskit 生态系统(Nature、Machine Learning、Optimization)运行变分算法或教科书算法(VQE、QAOA、Grover、QPE)
不适用场景
| 场景 | 改用 |
|---|---|
| Google Quantum AI 处理器、Cirq 原生电路,或在 Cirq 中进行 XEB/RB 表征 | alterlab-cirq |
| 使用 PyTorch/JAX 自动微分进行梯度训练的量子-经典混合模型 | alterlab-pennylane |
| 开放系统动力学——Lindblad 主方程、退相干、腔量子电动力学 | alterlab-qutip |
| 不涉及量子电路的经典量子化学(DFT、构象体、pKa) | alterlab-rowan |
主要功能:
- 可配置转译,支持多个优化级别
- 电路优化,可减少双量子比特门的数量
- 与后端无关的执行方式(本地模拟器或云硬件)
- 用于优化、化学和机器学习的综合算法库
快速开始
安装
uv pip install "qiskit>=2,<3"
uv pip install "qiskit[visualization]" matplotlib # circuit/result plotting
uv pip install qiskit-ibm-runtime # IBM hardware + Runtime primitives
第一个电路
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
# Create Bell state (entangled qubits)
qc = QuantumCircuit(2)
qc.h(0) # Hadamard on qubit 0
qc.cx(0, 1) # CNOT from qubit 0 to 1
qc.measure_all() # Measure both qubits
# Run locally
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts) # {'00': ~512, '11': ~512}
可视化
from qiskit.visualization import plot_histogram
qc.draw('mpl') # Circuit diagram
plot_histogram(counts) # Results histogram
核心能力
1. 设置和安装
有关详细的安装、身份验证和 IBM Quantum 账户设置:
- 参见
references/setup.md
涵盖主题:
- 使用 uv 安装
- Python 环境设置
- IBM Quantum 账户和 API 令牌配置
- 本地执行与云端执行
2. 构建量子电路
有关使用量子门、测量和组合来构建量子电路:
- 参见
references/circuits.md
涵盖主题:
- 使用 QuantumCircuit 创建电路
- 单量子比特门(H、X、Y、Z、旋转门、相位门)
- 多量子比特门(CNOT、SWAP、Toffoli)
- 测量和屏障
- 电路组合与属性
- 用于变分算法的参数化电路
3. 原语(Sampler 和 Estimator)
有关执行量子电路并计算结果:
- 参见
references/primitives.md
涵盖主题:
- Sampler:获取比特串测量结果和概率分布
- Estimator:计算可观测量的期望值
- V2 接口(StatevectorSampler、StatevectorEstimator)
- 用于硬件的 IBM Quantum Runtime 原语
- Session 和 Batch 模式
- 参数绑定
4. 转译与优化
用于优化电路并为硬件执行做好准备:
- 参见
references/transpilation.md
涵盖主题:
- 为什么需要转译
- 优化级别(0-3)
- 六个转译阶段(初始化、布局、路由、翻译、优化、调度)
- 高级功能(省略虚拟置换、门抵消)
- 常用参数(initial_layout、approximation_degree、seed)
- 高效电路的最佳实践
5. 可视化
用于显示电路、结果和量子态:
- 参见
references/visualization.md
涵盖主题:
- 电路绘图(文本、matplotlib、LaTeX)
- 结果直方图
- 量子态可视化(布洛赫球、state city、QSphere)
- 后端拓扑和错误图
- 自定义与样式设置
- 保存出版级图表
6. 硬件后端
用于在模拟器和真实量子计算机上运行:
- 参见
references/backends.md
涵盖主题:
- IBM Quantum 后端和身份验证
- 后端属性和状态
- 使用 Runtime 原语在真实硬件上运行
- 作业管理与排队
- 会话模式(迭代算法)
- 批处理模式(并行作业)
- 本地模拟器(StatevectorSampler、Aer)
- 第三方提供商(IonQ、Amazon Braket)
- 错误缓解策略
7. Qiskit Patterns 工作流
用于实现四步量子计算工作流:
- 参见
references/patterns.md
涵盖主题:
- 映射:将问题转换为量子电路
- 优化:针对硬件转译
- 执行:使用原语运行
- 后处理:提取并分析结果
- 完整的 VQE 示例
- 会话执行与批处理执行
- 常见工作流模式
8. 量子算法与应用
用于实现特定量子算法:
- 参见
references/algorithms.md
涵盖主题:
- 优化:VQE、QAOA、Grover 算法
- 化学:分子基态、激发态、哈密顿量
- 机器学习:量子核、VQC、QNN
- 算法库:Qiskit Nature、Qiskit ML、Qiskit Optimization
- 物理模拟与基准测试
工作流决策指南
如果你需要:
- 安装 Qiskit 或设置 IBM Quantum 账户 →
references/setup.md - 构建新的量子电路 →
references/circuits.md - 理解门和电路操作 →
references/circuits.md - 运行电路并获取测量结果 →
references/primitives.md - 计算期望值 →
references/primitives.md - 针对硬件优化电路 →
references/transpilation.md - 可视化电路或结果 →
references/visualization.md - 在 IBM Quantum 硬件上执行 →
references/backends.md - 连接第三方提供商 →
references/backends.md - 实现端到端量子工作流 →
references/patterns.md - 构建特定算法(VQE、QAOA 等) →
references/algorithms.md - 解决化学或优化问题 →
references/algorithms.md
最佳实践
开发工作流
-
从模拟器开始:先在本地测试,再使用硬件
from qiskit.primitives import StatevectorSampler sampler = StatevectorSampler() -
始终进行转译:执行前优化电路
from qiskit import transpile qc_optimized = transpile(qc, backend=backend, optimization_level=3) -
使用适当的原语:
- Sampler 用于位串(优化算法)
- Estimator 用于期望值(化学、物理)
-
选择执行模式:
- 会话:迭代算法(VQE、QAOA)
- 批处理:相互独立的并行作业
- 单个作业:一次性实验
性能优化
- 在生产环境中使用 optimization_level=3
- 尽量减少双量子比特门(主要错误来源)
- 在使用硬件前,先用含噪模拟器测试
- 保存并重复使用已转译的电路
- 监控变分算法的收敛情况
硬件执行
- 提交任务前检查后端状态
- 使用
least_busy()或列出service.backends(),而不是硬编码 QPU 名称——QPU 会随时间退役(所有 127 量子位的 Eagle 系统,例如ibm_brisbane,都已退役) - 会话模式需要付费计划;Open Plan 用户应使用作业或批处理模式
- 保存作业 ID,以便之后检索
- 应用错误缓解——在 Estimator 上设置
resilience_level(Sampler 没有resilience_level;请使用twirling/dynamical_decoupling) - 从较少的 shots 开始,最终运行时再增加
常见模式
模式 1:简单电路执行
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
模式 2:通过转译执行硬件任务
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Hardware only accepts ISA circuits (native gates + connectivity)
pm = generate_preset_pass_manager(backend=backend, optimization_level=3)
qc_isa = pm.run(qc)
sampler = Sampler(mode=backend) # job mode; pass a Session/Batch for other modes
job = sampler.run([qc_isa], shots=1024)
counts = job.result()[0].data.meas.get_counts()
模式 3:变分算法(VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize
# Transpile once, then lay the observable out on the same physical qubits —
# an un-mapped observable does not match the ISA circuit's width.
ansatz_isa = pm.run(ansatz)
hamiltonian_isa = hamiltonian.apply_layout(ansatz_isa.layout)
with Session(backend=backend) as session: # paid plans; use Batch on the Open Plan
estimator = Estimator(mode=session)
def cost_function(params):
# parameter values travel in the PUB — no re-transpiling per iteration
result = estimator.run([(ansatz_isa, hamiltonian_isa, params)]).result()
return float(result[0].data.evs)
result = minimize(cost_function, initial_params, method='COBYLA')
更多资源
- 官方文档:https://quantum.cloud.ibm.com/docs
- IBM Quantum Learning(Qiskit Textbook 的继任者):https://quantum.cloud.ibm.com/learning
- API 参考:https://quantum.cloud.ibm.com/docs/en/api/qiskit
- 模式指南:https://quantum.cloud.ibm.com/docs/en/guides/intro-to-patterns
- 社区软件包:Nature、Machine Learning、Optimization
属于 AlterLab 学术技能套件的一部分。
评论
支持 Markdown