SuperAPI AI 工具集

qiskit-hardware

智能体与模型

查看项目

更新于 10-16 02:22

技能介绍

Qiskit Hardware 是 Qiskit 的一个高级子技能,聚焦于在物理量子处理单元(QPU)上执行量子线路。从模拟器迁移到真实硬件需要转变思路:面对的不再是理想的完美量子比特,而是存在退相干、读出错误和串扰的超导电路。本技能介绍如何在含噪中等规模量子(NISQ)设备上尽可能获得有价值的科学结果。

一、用途与适用场景

该技能适用于以下场景:在真实 IBM Quantum 后端上执行量子算法;表征硬件噪声(T1、T2 弛豫时间);实现误差缓解以提升结果准确性;使用 Qiskit Pulse 定义自定义微波脉冲(OpenPulse);针对特定硬件拓扑(耦合图)优化线路;在真实条件下对量子优势进行基准测试。

二、核心原理

  1. Qiskit Runtime(Primitives):与硬件交互的现代方式。不再发送原始线路,而是使用 Primitives:Sampler 返回准概率(比特串),Estimator 返回可观测量的期望值(如能量)。

  2. 转译(硬件映射):物理后端仅支持少量基门(如 rz、x、sx、ecr)。转译器将抽象数学重写为这些特定指令,并依据错误率把虚拟量子比特映射到物理量子比特。

  3. 误差缓解:与需要数千量子比特的误差纠正不同,误差缓解使用统计技巧(如 TREX 或 ZNE)在执行后“清洗”结果。

三、使用方式

安装:pip install qiskit-ibm-runtime

连接与作业执行示例:

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

1. 初始化服务(需要来自 quantum.ibm.com 的 API key)

service = QiskitRuntimeService(channel="ibm_quantum", token="YOUR_TOKEN")

service = QiskitRuntimeService() # 使用已保存的凭据

2. 选择后端

backend = service.least_busy(operational=True, simulator=False)

3. 使用 Primitives 运行作业

sampler = Sampler(backend=backend) job = sampler.run([my_circuit]) result = job.result()

硬件感知转译示例:

from qiskit import transpile

basis_gates = backend.operation_names coupling_map = backend.coupling_map

optimized_circ = transpile(my_circuit, backend=backend, optimization_level=3, initial_layout=[0, 2, 4]) # 手动选择量子比特

Estimator 中的弹性等级(误差缓解):

from qiskit_ibm_runtime import EstimatorV2 as Estimator, EstimatorOptions

options = EstimatorOptions()

resilience_level 0:无缓解

resilience_level 1:读出缓解(TREX)

resilience_level 2:ZNE(零噪声外推)——开销大但更准确

options.resilience_level = 1

estimator = Estimator(backend=backend, options=options)

底层控制:Qiskit Pulse(OpenPulse)定义自定义微波信号:

from qiskit import pulse from qiskit.circuit import Parameter

amp = Parameter('amp') with pulse.build(backend=backend, name='custom_pulse') as schedule: pulse.play(pulse.Gaussian(duration=160, amp=amp, sigma=40), pulse.drive_channel(0))

my_circuit.add_calibration('my_gate', [0], schedule, params=[amp])

四、关键规则

建议做法:检查校准数据——后端每天变化,选择量子比特前始终查看 backend.properties() 获取最新错误率;使用 Sessions——将多个相关作业包裹在 RuntimeSession 中以减少排队等待;设置 optimization_level——硬件上使用 level 3 以启用高级路由和门融合;应用读出缓解——读出(把 0 测成 1)是最大误差来源,在 Primitives 中使用 resilience_level=1;使用动态解耦(DD)——为空闲量子比特添加脉冲,防止其在等待其他门时丢失状态。

避免做法:不要使用 execute()——旧的 qiskit.execute 在硬件上已弃用,应使用 Sampler 和 Estimator;不要运行过深的线路——NISQ 设备相干时间有限,若线路深度超过 50-100,结果很可能纯为噪声;不要忽略耦合图——若强行在两个物理上不相连的量子比特间执行 CNOT,转译器会插入大量 SWAP 门,增加误差;不要用 qasm_simulator 做硬件准备——应使用 FakeBackend 对象(如 FakeManilaV2)在本地调试时模拟真实硬件噪声。

五、常见问题与解决

排队等待时间长:可使用 least_busy 辅助函数、查看 IBM Quantum 仪表盘的预留窗口、使用 Runtime Sessions 对作业分组。

结果“去极化”(直方图呈平坦随机噪声):可降低线路深度、使用 optimization_level=3、应用误差缓解(resilience_level=1 及以上)、检查后端是否正在维护或校准。

频率碰撞:相邻量子比特频率相近会导致串扰,可选择物理上分离或频率差异显著的量子比特。

六、参考文档

IBM Quantum Learning:https://learning.quantum.ibm.com/ Qiskit Runtime 文档:https://docs.quantum.ibm.com/run Qiskit Pulse 指南:https://docs.quantum.ibm.com/build/pulse 搜索模式:QiskitRuntimeService、Sampler、Estimator、transpile、InstructionScheduleMap

七、限制

NISQ 设备相干时间有限,深线路结果可能为噪声;真实硬件需求高,存在排队等待;误差缓解(如 ZNE)开销较大;具体收费、价格与平台可用性资料中暂未提供。