在量子计算实践中,抽象电路往往无法直接在 NISQ 设备上执行,需要通过 transpilation 将其转换为硬件兼容的指令集架构(ISA)电路。Qiskit transpiler 正是为此设计的模块化工具链,通过 PassManager 协调多个优化阶段,实现布局映射、门优化和调度,最终减少电路深度和噪声影响。根据 Qiskit 文档,其默认流程包括六个阶段:初始化(展开自定义门)、布局(虚拟到物理比特映射)、路由(注入 SWAP 门适配拓扑)、翻译(转换为 basis gates)、优化(硬件感知门合并)和调度(插入 Delay 实现时序)。
这些阶段并非线性执行,而是通过 StagedPassManager 迭代优化。核心入口是 generate_preset_pass_manager 函数,支持 optimization_level=0~3 参数:level 0 仅基本兼容,level 1 轻度优化,level 2 平衡,level 3 激进减少门数(尤其双比特门)。例如,对于线性耦合图的 GHZ 态电路,level 3 可将深度从 15 降至 9,显著降低错误积累。
实际落地时,先获取后端 Target(如 IBM Quantum 的 backend.target),然后构建 PassManager:
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(backend=backend, optimization_level=3)
transpiled_circ = pm.run(original_circ)
此配置自动处理 coupling_map(如重六角拓扑)和 basis_gates(如 cz, sx, rz)。自定义时,可扩展 scheduling 阶段:使用 ALAPScheduleAnalysis + PadDelay(as-late-as-possible 策略,最大化比特基态时间);或 PadDynamicalDecoupling 插入动态解耦序列(如 [XGate(), XGate()]),缓解 T1/T2 退相干。参数建议:duration=128, sigma=16 的 Gaussian 脉冲模拟(虽 pulse 已弃用,但 fractional gates 继承类似控制)。
对于路由优化,StochasticSwap 或 LookaheadSwap pass 可最小化 SWAP 注入;优化阶段用 Optimize1qGatesDecomposition 合并单比特门序列,减少 ~20% 深度。布局用 LegacyLayout 或 NoiseAdaptiveLayout,优先低噪比特对(EPLG < 0.001)。监控指标:电路深度(qc.depth() < 50)、CNOT 计数(< n_qubits * 10)、预计保真度(F > 0.9 via stabilizer)。
在混合执行管道中,transpilation 与 primitives 集成:SamplerV2/EstimatorV2 自动 ISA 转换,支持 PEC(Probabilistic Error Cancellation)缓解读出/门错误。“Qiskit transpiler 通过 DAGCircuit IR 表示电路,实现 passes 迭代。” 例如 VQE 流程:ansatz = EfficientSU2(num_qubits) → pm.run(ansatz) → estimator.run([(ansatz_isa, hamiltonian)]),precision=1e-3。
风险阈值:level 3 编译时间 >10s/电路,回滚至 level 1;拓扑不匹配时,depth >100 触发重布局。清单:
| 参数 |
推荐值 |
作用 |
| optimization_level |
2-3 |
门数/深度最小化 |
| scheduling_method |
'alap' |
最小闲置时间 |
| layout_method |
'sabre' |
噪声自适应 |
| routing_method |
'lookahead' |
少 SWAP |
回滚策略:若 F < 0.8,fallback simulator(如 StatevectorSampler)验证;生产中,A/B 测试 transpiled vs original。
来源:Qiskit GitHub (https://github.com/Qiskit/qiskit),IBM Quantum Docs (https://quantum.ibm.com/docs/api/qiskit/transpiler)。
(正文约 950 字)