mcpField
Q
qiskit

qiskit

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

关于 qiskit

这是一份面向量子电路和算法开发者的 Qiskit 技能指南,介绍这一开源量子计算框架。内容涵盖电路优化、模拟器、硬件执行、可视化和端到端工作流。

主要功能

  1. 01量子电路的构建与组合
  2. 02Sampler 和 Estimator 执行
  3. 03转译与电路优化
  4. 04模拟器和硬件后端
  5. 05电路及结果可视化
  6. 06量子算法库

适用场景

  1. 01构建并运行量子电路
  2. 02为硬件执行优化电路
  3. 03实现优化或化学算法

安装

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

$npx skills add https://github.com/crazymsn/academic-skills --skill qiskit

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

包含的文件

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

references/
algorithms.md
backends.md
circuits.md
patterns.md
primitives.md
setup.md
transpilation.md
visualization.md

详细介绍

Qiskit

概述

Qiskit 是全球最受欢迎的开源量子计算框架,下载量超过 1,300 万次。可用于构建量子电路、针对硬件进行优化、在模拟器或真实量子计算机上执行,并分析结果。支持 IBM Quantum(100+ 量子比特系统)、IonQ、Amazon Braket 及其他提供商。

主要功能:

  • 转译速度比竞品快 83 倍
  • 优化后的电路中双量子比特门减少 29%
  • 与后端无关的执行方式(本地模拟器或云端硬件)
  • 提供用于优化、化学和机器学习的全面算法库

快速入门

安装
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlib
第一个电路
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 基元
  • 会话和批处理模式
  • 参数绑定
4. 转译和优化

有关优化电路并为硬件执行做准备:

  • 参见 references/transpilation.md

涵盖主题:

  • 转译的必要性
  • 优化级别(0-3)
  • 转译的六个阶段(初始化、布局、路由、转换、优化、调度)
  • 高级功能(省略虚拟置换、门抵消)
  • 常用参数(initial_layout、approximation_degree、seed)
  • 高效电路的最佳实践
5. 可视化

有关展示电路、结果和量子态:

  • 参见 references/visualization.md

涵盖主题:

  • 电路绘图(文本、matplotlib、LaTeX)
  • 结果直方图
  • 量子态可视化(布洛赫球、态城市、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. 选择执行模式:

    • Session:迭代算法(VQE、QAOA)
    • Batch:独立的并行作业
    • Single job:一次性实验
性能优化
  • 在生产环境中使用 optimization_level=3
  • 尽量减少双量子比特门(主要误差来源)
  • 使用硬件前,先通过含噪模拟器测试
  • 保存并重复使用已转译的电路
  • 监控变分算法的收敛情况
硬件执行
  • 提交前检查后端状态
  • 测试时使用 least_busy()
  • 保存作业 ID 以便之后检索
  • 应用误差缓解(resilience_level)
  • 从较少的 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 import transpile

service = QiskitRuntimeService()
backend = service.backend("ibm_brisbane")

qc_optimized = transpile(qc, backend=backend, optimization_level=3)

sampler = Sampler(backend)
job = sampler.run([qc_optimized], shots=1024)
result = job.result()
模式 3:变分算法(VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize

with Session(backend=backend) as session:
    estimator = Estimator(session=session)

    def cost_function(params):
        bound_qc = ansatz.assign_parameters(params)
        qc_isa = transpile(bound_qc, backend=backend)
        result = estimator.run([(qc_isa, hamiltonian)]).result()
        return result[0].data.evs

    result = minimize(cost_function, initial_params, method='COBYLA')

更多资源

评论

支持 Markdown