mcpField
A
alterlab-qiskit

alterlab-qiskit

github.com/alterlab-ieu开发7866 次安装5 周前更新
代码仓库

关于 alterlab-qiskit

alterlab-qiskit 是面向量子计算开发者的 Qiskit 使用技能,涵盖量子线路构建、优化、执行与结果分析,并针对 Qiskit 2.x 更新示例和实践要点。

主要功能

  1. 01构建并组合量子线路
  2. 02转译与优化线路
  3. 03在模拟器和硬件上运行
  4. 04使用 Sampler 与 Estimator
  5. 05实现量子算法并分析结果

适用场景

  1. 01为硬件执行准备量子线路
  2. 02在本地模拟器测试线路
  3. 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.json
references/
algorithms.md
backends.md
circuits.md
patterns.md
primitives.md
setup.md
transpilation.md
visualization.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

最佳实践

开发工作流
  1. 从模拟器开始:先在本地测试,再使用硬件

    from qiskit.primitives import StatevectorSampler
    sampler = StatevectorSampler()
    
  2. 始终进行转译:执行前优化电路

    from qiskit import transpile
    qc_optimized = transpile(qc, backend=backend, optimization_level=3)
    
  3. 使用适当的原语:

    • Sampler 用于位串(优化算法)
    • Estimator 用于期望值(化学、物理)
  4. 选择执行模式:

    • 会话:迭代算法(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')

更多资源

属于 AlterLab 学术技能套件的一部分。

评论

支持 Markdown