15-to-1 Bravyi-Kitaev 魔术态蒸馏协议与表面码自适应 Clifford 电路笔记
从 Clifford 群的非万能性出发,推导 15-to-1 Bravyi-Kitaev 魔术态蒸馏的完整逻辑([[15,1,3]] Reed-Muller 码、横向 T 门、后选择),再接上表面码自适应 Clifford 电路的中途测量与前馈时序,最后给出 PyTorch 蒙特卡洛数值实验骨架与级联解码器设计要点。
1. 为什么需要魔术态:Clifford 的天花板#
Gottesman-Knill 定理告诉我们:只由 Clifford 门()、Pauli 测量组成的电路可以被经典多项式时间模拟。因此通用量子计算必须引入非 Clifford 资源,工程上最常用的是 门:
关键恒等式(gate teleportation):
即:只要有足够多个「干净」的 魔术态,就能用 Clifford 电路 + Pauli 测量 + 经典前馈合成出容错的 门 —— 这正是自适应 Clifford 电路的含义:量子部分全部 Clifford,非 Clifford 性被「打包」进初始魔术态。
源头
该框架出自 Bravyi & Kitaev (2005) 与 Bravyi & Haah (2012)。15-to-1 协议是其中码距最小、工程上最先被实验验证的一级。
2. 15-to-1 协议解剖#
2.1 15,1,3 量子 Reed-Muller 码#
15 个物理量子比特编码 1 个逻辑量子比特,码距 3。它的两个关键性质:
- 稳定子群由 14 个 -型与 -型 Pauli 算符生成,可全部单比特测量(Clifford 兼容);
- 横向 门是逻辑 :
这是整个协议的灵魂 —— 15 个物理 同时作用等价于一个逻辑 ,而横向操作天然容错(单比特物理错误不会在门内扩散成逻辑错误)。
2.2 蒸馏流程#
- 注入:把 15 个噪声魔术态 (纯度 )与 组合,制备码字;
- 横向操作:执行 (对注入态等价于码上的魔力提取);
- 稳定子测量:逐一测 14 个稳定子(每轮 Pauli 测量 + 经典前馈修正,构成自适应 Clifford 序列);
- 后选择(post-selection):任何稳定子为 → 弃整轮;
- 输出:幸存轮次解出一个纯度更高的 。
失败率的三次方抑制
逐阶微扰分析给出输入-输出误差映射(至最低阶): 这就是「15-to-1」的含金量:误差从线性抑制跃升为三次方抑制,阈值约在 ()。Bluvstein et al. (Nature 626, 2024) 在中性原子平台上演示的正是该协议的码字注入 + 后选择逻辑版本。
2.3 开销的现实#
15:1 的编码率(1/15)与多级级联的时间开销在百万物理比特时代不可接受,因此社区转向:
- 30-to-2 / 116-to-12(Bravyi-Haah 码,更优的渐进开销 );
- 中性原子特色替代:横向门 + 原子重排的码切换(surface ↔ color code)可以直接做逻辑 (transversal in color code),绕过蒸馏 —— 这正是可重构原子阵列(见文献智库中 Lukin 组 2024–2025 工作)的架构优势。
3. 表面码上的自适应 Clifford 时序#
魔术态只是燃料,发动机是表面码纠错循环。一个完整的逻辑 周期包含:
- 稳定子轮询: 表面码每轮 4 步 CNOT 梯队(NW/NE/SW/SE 交替)+ 数据比特重置——严格 Clifford;
- lattice surgery:逻辑 CNOT / merge-split 由测界稳定子实现,中途测量必然引入;
- 经典前馈延迟:从稳定子判读到下一个门补偿的延迟 在中性原子平台上受限于重排与激光切换(~ms 级),比超导平台慢 —— 这决定了解码器必须在 内给出判决;
时序约束
表面码逻辑错误率随轮数累积:。前馈延迟每增加一轮纠错周期,等效于把码距白折损一档。解码器延迟是架构参数,不是软件细节。
4. 数值实验骨架(PyTorch 蒙特卡洛)#
电路级噪声模拟的要点:对 15 比特上的每个 Clifford 门注入去极化噪声 ,稳定子测量读出噪声 ,统计 轮:
import torch
def simulate_15to1(p_depol: float, p_ro: float, shots: int = 2**18,
device: str = "cuda") -> dict:
"""15-to-1 Bravyi-Kitaev 蒸馏蒙特卡洛。返回接受率与输出误差。"""
n = 15
# 稳定子表: 14 个生成元 × 15 比特 的 Pauli 串(X=0/Z=1/两相=2, 预计算)
from stabilizers import RM15_STABS # [15,1,3](/lab-notes/15,1,3) 码稳定子表
stabs = torch.tensor(RM15_STABS, device=device) # (14, 15)
# 1) 注入态: |T_noisy> = sqrt(1-eps)|T> + sqrt(eps)|T_perp>, eps 与 p_depol 关系按通道建模
# 2) 逐稳定子测量 + 比特翻转读出噪声
outcomes = torch.zeros(shots, len(stabs), device=device)
for j, s in enumerate(stabs):
# ... 前向 Clifford 序列按协议表执行(略), 每门施加去极化通道 ...
noisy = outcomes[:, j] ^ (torch.rand(shots, device=device) < p_ro)
accepted = (noisy == 0).all(dim=1) # 后选择: 全部稳定子 +1
acc_rate = accepted.float().mean().item()
# 3) 幸存轮次解码输出魔术态, 与理想 |T> 做态层析比对
# eps_out = 1 - fidelity(rho_out, |T><T|) on accepted shots
eps_out = estimate_output_error(accepted_shots=accepted.nonzero())
return {"accept_rate": acc_rate, "eps_out": eps_out,
"p_out_pred": 35 * p_depol ** 3}
实测曲线()与三次方律的吻合区在 ;高于阈值后接受率雪崩,协议失效 —— 与理论预期一致。
5. 级联解码器与后选择的工程折中#
我的解码器堆栈分两级:
| 层级 | 方法 | 目标 |
|---|---|---|
| L1 | MWPM(pymatching 思路) | 毫秒内给出单轮判决,处理独立错误 |
| L2 | 神经网络(GRU / 图注意力) | 处理 L1 遗漏的时间关联错误(漏码、leakage) |
后选择 vs 似然加权的取舍:蒸馏协议用后选择(丢弃率可控),但表面码主循环不能后选择 —— 必须用解码器「软纠错」。级联设计的要点是让 L2 只在 L1 置信度低于阈值时介入,平均延迟才能压进 。
与擦除转换的联动
当硬件层提供擦除信息(Endres / Thompson 组 2023 年演示,见文献智库 erasure-conversion 标签)时,解码器把被擦除量子比特的先验改为「已知丢失」,等效码距几乎无损。我的数值实验里这一步让 L1 逻辑错误率降低约一个数量级 —— 擦除信息比多两级码距更便宜。
6. 下一步#
- 把 15-to1 数值管线扩展到 15,1,3 码的完整电路级 Stim 交叉验证;
- 在重排延迟()与蒸馏成功率之间做联合优化;
- 光学侧的魔术态注入依赖高质量的里德堡单比特门,相关光路问题记录在 AOM / 光纤耦合排查日志, 波前基础则见 SLM 平顶光束整形手记。