1. 课程导入与实验复现挑战

量子计算实验与经典软件实验有一个根本差别:一次量子电路运行的结果,不仅取决于你写的电路,还取决于运行那一刻的硬件状态。同一段 Qiskit 或 Cirq 代码,今天在 ibm_brisbane 上跑出 0.87 的保真度,下周换到另一台机器、或者同一台机器经过一次重新校准后,可能只剩 0.72。这意味着“复现”在量子实验里不是简单地重跑一遍代码,而是要复现一整套电路 + 编译选项 + 后端状态 + 校准数据 + 软件版本的组合条件。

本课程的目标很明确:让你拿到一份量子实验结果时,能够判断它是否可信、能否被他人复现,并且在需要时把一次实验完整地“冻结”下来,使它在数周甚至数月后仍可被重新执行和比对。整门课围绕一条主线展开——可复现性 = 电路定义的可确定性 + 执行环境的可记录性 + 结果判读的可追溯性。下面先看清复现失败的典型来源,再给出课程的学习路径。

为什么量子实验结果难以复现

把一次量子实验拆开看,影响结果的因素可以归为三层:电路层、编译与执行层、硬件与校准层。电路层包括门序列、参数化角度、测量基、初态制备;编译层包括逻辑门到物理门的映射、量子比特路由(SWAP 插入)、优化等级、动力学解耦设置;硬件层包括后端型号、量子比特连接拓扑、当时的 T1/T2、单双比特门错误率、读出错误率以及校准时间戳。任何一层发生变化,最终测量分布都可能偏移。

最常见的三类障碍值得逐一说明。噪声是最本质的:当前含噪声中等规模量子(NISQ)设备的双比特门错误率通常在 10⁻³ 到 10⁻² 量级,一个深度 30 的电路累积错误足以让结果明显偏离理想分布。噪声本身不是“错误”,但它是时变的——设备每天甚至每小时都在漂移,因此复现时必须记录噪声水平而非假设它不变。校准漂移是噪声时变的具体表现:量子比特频率、门校准参数会随温度、电磁环境、宇宙射线等缓慢或突跳变化,厂商通常每天或每几天重新校准一次,校准前后的同一电路结果不可直接比较。软件版本差异则更隐蔽:Qiskit 从 0.x 到 1.x 的转译器(transpiler)默认优化策略、optimization_level 的语义、甚至随机种子处理方式都发生过变化,同一份源码在不同版本下可能生成完全不同的物理电路。

复现失败时,先不要怀疑物理或算法。统计上更常见的原因是:没有记录后端名称与校准时间、没有固定转译种子、没有保存 transpile 后的物理电路。这三项缺失会让“同一实验”在物理层面根本不是同一个实验。

复现需要冻结什么:一张关系图

下面的图把一次量子实验从源码到结果的关键环节和需要冻结的信息组织在一起。注意图中两条并行的输入链——电路侧和执行侧——最终在“物理电路 + 后端快照”处汇合,这正是复现的最小充分条件。

量子电路源码 门序列 / 参数 / 测量基 转译配置 优化等级 / 种子 / 耦合映射 物理电路(冻结) QASM / 门级指令序列 后端与校准快照 设备名 / 校准时间 / 错误率 软件环境 SDK 版本 / 依赖锁文件 执行参数 shots / 初态 / 读出校正 可复现实验包 电路 + 环境 + 参数 + 原始计数 含哈希与时间戳 测量结果与判读 计数分布 / 保真度 / 误差棒 电路侧冻结项 执行侧冻结项 汇合产物 复现单元 说明:虚线表示物理电路与后端快照共同决定实际执行的门级行为;缺少任一侧,复现即不成立。

图中最容易被忽视的是“物理电路(冻结)”这一格。很多复现失败案例里,研究者只保存了源码,重跑时转译器根据当前后端拓扑重新映射,插入了不同数量的 SWAP,物理电路已经变了。正确做法是在首次执行时把 transpile() 的输出序列化为 OpenQASM 保存,复现时直接加载该 QASM 并指定同一后端,跳过重新转译。

一个具体的复现对照示例

假设我们要复现一个 4 比特 GHZ 态制备实验,电路为 H(q0) 后接 CX(q0,q1)、CX(q1,q2)、CX(q2,q3),测量全部比特,shots=4096。理想结果是 0000 与 1111 各约 2048 次。第一次执行记录如下(示例数据,用于说明记录格式):

backend: ibm_brisbane
calibration_time: 2024-11-05T02:14:00Z
sdk: qiskit 1.2.4, qiskit-aer 0.15.1
transpile: optimization_level=1, seed_transpiler=42
physical_qasm_sha256: 9f2c...a71d
shots: 4096
counts: {"0000": 1902, "1111": 1877, "0001": 74, "1110": 68, ...}

一周后若只凭源码重跑,很可能得到 0000 约 1750、1111 约 1700 的结果,看似“变差了”,实则可能是后端校准更新或路由变化所致。此时正确的判断流程是:先比对 physical_qasm_sha256 是否一致,若不一致说明转译结果变了,问题在编译层;若一致,再比对校准时间与读出错误率,问题在硬件层。这个“先分层定位、再归因”的思路会贯穿整门课程。

本课程的学习路径

课程按“认识问题—掌握工具—建立规范—处理异常”的顺序组织,共 30 节,可归为四个阶段。第一阶段(第 1–8 节)建立复现的基本概念与记录规范,包括实验元数据的字段设计、QASM 与计数文件的组织方式、版本锁定手段。第二阶段(第 9–16 节)深入编译与执行层,讲清转译种子、优化等级、路由策略对物理电路的影响,以及如何用固定种子和固定后端实现确定性重放。第三阶段(第 17–24 节)处理硬件侧变量,包括校准快照的抓取与比对、读出误差校正、噪声模型的重建与复用。第四阶段(第 25–30 节)面向真实排障场景,用对照实验、差异定位和复现报告把前面所有手段串起来。

学完本课程,你应当能够独立完成三件事:为一次量子实验生成包含全部冻结项的复现包;在结果出现偏差时按层定位原因而非盲目重跑;把复现流程固化为团队可执行的检查规范。这三项能力不依赖具体某家厂商的 SDK,换到任何超导或离子阱平台,方法论都成立。

从第一节开始就养成习惯:每次运行实验,先保存物理电路与后端快照,再谈结果分析。复现能力是设计出来的,不是事后补救出来的。