2026/9/29 8:00:21

表面码阈值之下:Google量子纠错实验的核心原理与工程启示

表面码阈值之下:Google量子纠错实验的核心原理与工程启示 2024 年年底量子纠错领域发生了一件标志性事件Google Quantum AI 在 Nature 上发表了题为《Quantum error correction below the surface code threshold》的工作第一次在超导平台上用数据表明表面码的逻辑错误率可以随着码距增大而指数压降——也就是真正跑到了表面码阈值之下。这篇论文我前后读了很多遍后来还用开源工具把核心的距离扫描实验复现了一遍。今天这篇博客就把它从头拆开表面码阈值到底是什么意思、为什么这件事如此难、论文里的实验是怎么设计出来的以及作为工程师和研究者我们该怎么正确理解“低于阈值”这个结果。不管你是刚接触量子纠错的研究生还是想了解量子计算前沿的从业者这篇文章都能帮你把最核心的概念和判断标准理顺。1. 背景与核心思路为什么“低于阈值”是一道分水岭1.1 量子纠错在做什么先从最基础的说起。物理量子比特transmon、离子阱、光子等本质上是一个二能级系统但它不是理想数字器件弛豫T1、退相干T2、控制脉冲的过冲、读出串扰……每一项噪声都会让量子态逐渐“糊掉”。量子纠错并不消灭这些物理错误而是通过编码把错误变成可观测、可纠正的“事件”。把逻辑比特铺到多个物理比特上用一套稳定的校验关系盯着它们每当校验稳定子测量发现问题就通过解码定位到出错的比特再施以纠正。这个思路和分布式存储里用校验块恢复坏盘是一个道理不是让硬盘不出错而是让错误不变成数据丢失。区别在于量子态不能直接复制所以纠错码只能靠纠缠和测量这就引出了整个稳定子码体系。这个领域有两个终极指标错误率够不够低以及吞吐够不够快。前者决定了我们能不能“造出”低噪声的逻辑比特后者决定了逻辑门能不能闭环。阈值实验回答的主要是第一个问题。1.2 表面码凭什么成为主流选择表面码是这一轮最有希望工程化的量子纠错码。它在二维晶格上排布数据比特和辅助比特只做近邻耦合检测错误的方式是每个“格子”上的稳定子测量。对超导芯片这种天然二维平面、近邻相互作用的硬件来说表面码的布局几乎就是量身定做。量子点、离子阱等其他平台也在积极验证表面码因为它不依赖长程连接对硬件的要求最低。表面码还有一个很关键的性质高阈值。在做电路级噪声建模、并用最小权完美匹配去解码的理想设定下表面码的阈值大约在 0.5% 到 1% 附近——这意味着只要每个物理门和测量的错误率低于这个量级增加码距就能换来逻辑错误率的指数下降。相比之下很多早期级联码的阈值只有 10⁻⁵ 到 10⁻⁶工程上根本够不着。所以表面码不是唯一的纠错方案却是当前最能落地的那一个。1.3 阈值横在“能纠”和“不能纠”之间的那道线阈值是一个组合概念给定一套噪声模型和一套解码策略存在一个临界物理错误率 p_th。当物理错误率 p 小于 p_th码距 d 越大逻辑错误率 ε_L 越小大致呈现 ε_L ∝ (p/p_th)^((d1)/2) 的指数压降反过来当 p 大于 p_th码距越大反而越差因为你在同一个坏水平上堆了更多可能出错的单元。所以“低于表面码阈值”这句话看起来平平无奇实际上是一个很强的实验论断它意味着整套芯片——门、测量、复位、串扰、解码——联合起来的等效噪声水平已经进入了“加码距就有效”的区间。等到这个区间被稳定占据容错计算才真正有了地基。2. 关键机理拆解表面码是怎么把错误变成可统计的2.1 稳定子测量与综合征表面码的做法是把 d×d 个数据比特放在格点上在格子间放辅助比特每隔一小段时间一轮同时测量一圈 X 型稳定子和 Z 型稳定子。X 稳定子盯的是 Z 类错误Z 稳定子盯的是 X 类错误两类错误用两套独立校验分开处理——这是表面码对错误“对偶”利用的精髓。标准旋转表面码中码距 d 的补丁需要 2d²−1 个物理比特d3 用 17 个d5 用 49 个d7 用 97 个。每一轮测量输出一组 ±1 校验结果。没有错误的时候结果全为 1某处发生错误会让它相邻的稳定子翻转为 −1产生一个“综合征”。单比特错误对应两个被触发的稳定子就像一个错误“踩亮”了两盏灯。解码器的任务就是根据这组亮灯来推断错误链条最可能在哪些比特上发生然后选择一套纠错操作把这串错误推回到“没有错”的等价类里。这里的“等价类”概念很重要。表面码不是直接“修好”错误而是保证最终结果在逻辑等价类内不变。只要错误链不跨越逻辑边界解码后逻辑态就完好真正会杀掉逻辑比特的是一条从码的一侧边界一路连到另一侧边界的错误链——它会形成一次逻辑 X 或 Z 的翻转而且这种翻转和没有错误完全不可区分这就是逻辑错误。2.2 逻辑错误率的标度律最短的错误链长度就是码距 d。所以每轮里若每个物理比特或门以概率 p 出错那么能形成致命链的最低阶贡献大致是 p^((d1)/2) 这个标度每增加两级码距逻辑错误率就掉一个数量级。实际工程中门错误、空闲退相干、测量错误、复位错误各有各的概率阈值也不是单一数字而是整套噪声效力的综合。但标度律这个大方向不会变也是所有“距离扫描”实验的判读依据。注意这里有一个容易被忽略的细节逻辑错误率必须按“轮”来统计。一遍完整的纠错流程往往包含几百到几万轮稳定子测量最后还要做一次逻辑读出。直接报“总流程错误率”会让小码距和大码距没法公平比较因为轮数不同。所以论文里反复强调的 per-round 逻辑错误率才是距离扫描的标准横轴口径。2.3 “低于阈值”的实验判据实验上判断是否低于阈值不能只看某一个码距的错误率而要做一个“距离扫描”固定噪声条件分别编码 d3、d5、d7 的逻辑比特然后对比每轮逻辑错误率。如果错误率随码距增加而单调下降并且下降趋势可以用指数压降拟合你才算站到了阈值之下。Google 那篇论文之所以让人印象深刻就是因为它在同一个 105 比特的超导芯片上把 d3、5、7 三个距离的表面码同时做到了低于阈值码距从 3 到 5、再从 5 到 7每轮逻辑错误率都在降大致是距离每大一级、错误率减半的量级。逻辑记忆的寿命也越过了芯片上任何单个物理比特的相干寿命说明冗余真的在“换”可靠性而不是纯粹加噪声。3. 实操视角一次阈值实验是怎么搭起来的3.1 硬件基线超导芯片要跑到什么水平先看门槛数字。要稳住阈值之下的运行物理层错误率必须整体进入约 1% 以下的区间——注意是“同时、相邻、高频运行”下同时做到的不是挑出来几个最好的比特。按论文给出的量级单比特门错误到 10⁻⁴ 量级也就是万分之几双比特门CZ 类到 10⁻³ 量级也就是千分之几测量和复位错误到千分之一量级附近T1 相干时间到了 100 微秒左右。这些数字单独看都不是“单点最好”难的是在同一块芯片上同时保持。尤其是双比特门和测量它们占了表面码每一轮操作里最大的时间开销和错误预算。我自己的理解表面码的每一轮就像给一个小区同时测体温任何一个人感冒都会让对应房间亮红灯如果体温计本身经常坏你再加多少房间都白搭。硬件必须先把“体温计”做好。3.2 从物理比特到逻辑比特的实验流程实际流程大致是这样先在 105 个比特中划出一块补丁距离 d 的旋转表面码需要 2d²−1 个物理比特d3 用 17 个d5 用 49 个d7 用 97 个后者几乎占满整块芯片。然后执行一个“逻辑记忆”实验把逻辑比特初态制备在 Z 基重复执行稳定子测量每轮约 1 微秒量级开头制备、中间连续纠错、结尾再测一次读出整个流程持续几千到几万轮直到能积累出足够统计意义的逻辑错误样本。实验设计里有几个特别讲究的点。第一要对所有错误做随机化twirling把相干误差变成随机泡利误差否则噪声的相干累积会让标度律失效第二要用解码器在每一轮实时处理综合征防止错误在“等待决策”期间继续扩散第三最终逻辑读出要用最后一轮纠错保护而不是直接裸读。这三点每一条都会显著影响你在距离扫描图上看到的斜率和阈值位置。3.3 解码器综合征只是原料解码才是决策解码是表面码里最容易被低估的环节。综合征只是一堆 ±1 校验输出真要把它变成“该把哪些比特纠掉”的决策需要在时空图上做最小权完美匹配MWPM把错误当成图上节点之间的边找出总代价最小的配对路径也就是最可能的错误发生方式。解码器做错纠错就变成“添乱”所以解码质量直接决定逻辑错误率。MWPM 在理论上是好的近似实时性才是工程痛点。一个表面码纠错周期的时长在微秒量级解码器必须在这个量级内给出答案不然下一轮综合征测量来了上一轮的决策还没出来错误就继续涨。这就是为什么论文里专门强调解码吞吐和延迟距离小的时候甚至可以用查表法把延迟压到百纳秒级距离大了就得靠快速匹配和算法优化。读任何量子纠错实验论文记得先问一句解码是离线的还是实时闭环的这决定了结论离真实计算有多远。4. 常见误区与排查心得常见误区实际情况物理错误率低就等于低于阈值阈值是门、测量、复位、串扰、解码的全链路系统属性不是单点指标码距越大一定越好仅在 p p_th 时成立码距大意味着物理开销大可用的逻辑比特数变少逻辑错误率可以跨论文直接对比统计口径、噪声模型、解码假设不同直接对比没有意义量子纠错只是把芯片堆大全栈协同校准、时钟、解码、读出保护缺一不可4.1 误区物理错误率低就等于低于阈值阈值是整个噪声链路联合起来的系统属性不是任何一个单点指标能代表的。你单比特门好到 10⁻⁵但双比特门或测量一起跑就掉链子逻辑错误率照样抬上去。更隐蔽的是相关错误和串扰两比特门同时执行时互相干扰或者读出过程影响邻居比特这些相关噪声对表面码的伤害远高于独立噪声。我在模拟里就用 p0.004 和 p0.04 分别跑过距离扫描前者能看到明显的指数压降后者距离越大逻辑错误率越高——同一个模拟器、同一套码只是把噪声调大十倍结论就完全反过来。所以读实验时请找“这一批比特的同时运行错误率”不要被单点最优值带跑。4.2 误区码距越大一定越好码距大意味着物理开销大d3 的码只用 17 个比特d7 要 97 个d9 要 161 个。在给定的芯片规模下码距越大能同时容纳的逻辑比特就越少而在给定物理错误率下只有低于阈值时增大距离才划算高于阈值时增大距离是灾难因为你只是把更多坏单元串联进了逻辑比特里。这个经济学约束决定了实际系统会选一个“刚好压住噪声”的码距而不是盲目追求最大。4.3 误区逻辑错误率可以直接拿来跨论文对比不同论文报告逻辑错误率时的分母完全不同有的报“每轮”有的报“每次逻辑门”有的报整条逻辑记忆流程的总错误率噪声模型有的是电路级有的只做现象学解码器有的用 MWPM有的用查表还有用神经网络后选择的。直接比数字会得出荒谬结论。正确做法是统一换算到每轮或每次逻辑门同时看清噪声假设。比如一个 d5 的码跑 1000 轮总错误率 5%平均每轮就是十万分之五左右和另一个报“单次逻辑门错误 10⁻⁵”的结论可能完全不是一回事。4.4 误区量子纠错只是把芯片堆大这个误区在行业外很普遍。量子纠错是全栈工程从物理比特的良率和低串扰到校准流程、周期时钟的稳定、解码器实时性、最终读出保护每一环都要协同。Google 这次的工作最值得学习的地方不是某一个比特刷新了保真度纪录而是它把 105 个比特组织成了一个能自我监视、自我纠正的体系——好的物理比特只是入场券下面的工作是把这些比特“编排”成系统。5. 把实验搬到笔记本开源模拟复现路径5.1 用 Stim 构建带噪声的表面码电路如果你想亲手验证“低于阈值”的标度律不需要超导冰箱用 Stim 就能在笔记本上复现。Stim 是 Google 开源的稳定子电路模拟器对表面码这类 Clifford 电路快得惊人几万个采样几分钟就能跑完。import stim import pymatching p 0.004 # 电路级错误概率保持在表面码阈值以下 rounds 1000 # 纠错轮数 shots 20000 # 采样次数 for d in (3, 5, 7): circuit stim.Circuit.generated( surface_code:rotated_memory_x, # X 基逻辑记忆实验 roundsrounds, distanced, before_round_data_depolarizationp, before_measure_flip_probabilityp, after_reset_flip_probabilityp, after_clifford_depolarizationp, ) dem circuit.detector_error_model() matching pymatching.Matching.from_detector_error_model(dem) dets, logical_obs circuit.compile_detector_sampler().sample(shots) preds matching.decode_batch(dets) p_l_per_round (preds ! logical_obs).sum(axis1).mean() / rounds print(fdistance{d}: 逻辑错误率/轮 ≈ {p_l_per_round:.3e})这段代码从 Stim 内置的旋转表面码模板生成电路把噪声分别插在数据比特退极化、测量翻转、复位翻转和 Clifford 门之后这就是一个很标准的电路级噪声模型。跑一遍你会发现 d3、5、7 的逻辑错误率递减——这就是“阈值”这个结论在模拟器里的朴素版本。实际跑的时候如果觉得慢把 rounds 降到 500、shots 降到 5000 也足够看出趋势。5.2 用 PyMatching 做最小权完美匹配解码PyMatching 实现了 MWPM 解码输入一个 detector error model它自动构建时空匹配图并给出解码结果。上面代码里的 decode_batch 就是批量处理采样结果。有几个值得注意的小点。第一detector error model 本身带了噪声率信息匹配边的权重是按最大似然原则设置的所以如果你的噪声模型是各向异性的一定要在生成电路时精确给出每个位置的概率。第二decode_batch 返回的预测和 logical_obs 都是逻辑可观测量层面的最终输出比对它们就能得到整条流程是否发生逻辑翻转。实际操作后你会发现解码对阈值的影响非常直观把 p 设到 0.004 时匹配图上的短错误链很容易被正确配对把 p 调到 0.04 后错误密度太高解码几乎必然配错这时码距越大越差。建议你也跑一下这组对照体会“阈值”不是一个抽象概念而是一个你可以在图上亲眼看到的相变。5.3 从模拟结果里读“阈值”模拟结果建议按距离画成柱状或折线横轴是码距 d纵轴是每轮逻辑错误率用对数坐标。低于阈值时曲线应随 d 单调下降高于阈值时曲线反转。对这个噪声模型阈值大致落在 0.5% 到 1% 区间所以上面给的 p0.004 是安全的示范参数想看反面教材把 p 调到 0.04 再跑一次你会看到码距越大、逻辑错误率越高。还要提醒一个小坑模拟结论不要直接迁移到硬件。模拟器里的噪声是独立同分布的真实芯片还有串扰、漂移、非马尔可夫噪声模拟器给的是“理想工程条件下能达到的最优下限”真实结果一般要差一些。所以模拟的价值在于验证机制、调试解码器、学习阈值逻辑而不是预测硬件最终性能。6. 实操心得与后续思考6.1 读这类实验论文最该盯住哪几个数看量子纠错实验我给自己列了一个速查清单逻辑错误率的统计口径是“每轮”“每次逻辑门”还是总流程噪声模型是电路级还是现象学错误率是同时刻达成还是挑最优有没有做 twirling 把相干误差随机化解码器是实时闭环还是事后离线延迟多少码距扫描做了几个距离趋势是否单调且能用指数拟合逻辑记忆时间是否超越了物理比特相干寿命超越了多少。这张清单能帮你快速分辨一篇论文是在“展示硬件进步”还是在“证明容错体系成立”。低于阈值这件事的意义正在于后者它不再只是某个码距的错误率低而是确立了“再多加冗余错误还能继续降”的规律性。有了这个规律后面才敢谈大规模逻辑比特集成。6.2 从单逻辑比特到可容错计算还差什么这次实验演示的是逻辑比特“内存”层面的生存能力离完整容错计算还有很长的路逻辑门操作lattice surgery、魔态蒸馏、多逻辑比特纠缠、逻辑级 T 门、实时解码与经典反馈的紧密耦合以及把几万到上百万个物理比特的纠错体系带到数据中心级规模。行业里普遍认为真正有商业价值的容错量子计算需要物理错误率再降一个量级并配上数万逻辑比特的架构——那是“表面码阈值”这篇文章确认地基之后接下来十年的工程问题。我自己看这件事的态度是别被“量子霸权”“容错停滞”这类口号带着跑科学上的里程碑是一步一步的。这个阈值实验的价值不在于它突然就让量子计算机能用了而在于它把“量子纠错有效”这件事从理论推演变成了可重复的工程事实。这比任何单次跑分都重要。6.3 一点个人体会最后说点私货。我第一次跑通 Stim 距离扫描模拟时最大的冲击不是看到了指数压降而是意识到这个结论对噪声模型如此敏感同一个 p放在数据比特退极化、测量翻转、门错误三个不同的位置压降的斜率能差出好几倍。从那以后我读任何量子纠错论文都会先去找“噪声到底插在哪”因为这才是阈值和压降数字的真正主语。如果你也想动手验证我建议从小参数开始d3、5 各跑几百轮、几千样本先感受趋势再逐步加大距离和轮数。不要一上来就追求 d9 加几百万轮那只会让你把时间花在等模拟上而不是理解结论上。等那张距离扫描图画出来你会清楚地看到那条“阈值之下的曲线”——那一刻的体感和读十篇论文完全不同。