代码
开源之夏系列 | 动力学去耦技术提升量子线路保真度

开源之夏系列 | 动力学去耦技术提升量子线路保真度

开源之夏系列 | 动力学去耦技术提升量子线路保真度

开源之夏,是由中国科学院软件研究所发起,专为高校学生精心打造的活动。旨在鼓励广大学子积极参与开源软件的开发与维护,推动优秀开源软件社区的蓬勃发展。

目前,开源之夏2024已圆满结项!在本届开源之夏中,不少开发者跟随昇思MindSpore一起,在开源的世界里畅游,成功完成项目任务。在此,昇思 MindSpore 开源社区邀请了开源之夏的开发者们,分享他们在本次活动中的宝贵经验与心得。我们希望通过这些精彩的项目经历和实战技巧,能够激发更多创意火花,帮助大家提升技术能力。本文为昇思MindSpore开源之夏项目经验分享系列第4篇。

项目基本介绍

1、项目名称:动力学去耦技术提升量子线路保真度

2、项目导师:jiangyu

3、项目链接:https://summer-ospp.ac.cn/org/prodetail/24c6d0463?lang=zh&list=pro

4、项目描述:量子算法在真实量子硬件上运行会受到操作误差、串扰误差和退相干等问题,动力学去耦技术是一种可以抑制误差的有效技术之一,将动力学去耦技术应用到多比特量子算法中提升性能是一种有价值的方案。本任务是基于MindSpore Quantum开发一个能够在应用程序级别鲁棒地使用动态解耦的功能模块,模块通过考虑程序结构和量子环境来自适应地确定程序最高保真度的量子比特子集。

项目代码:https://gitee.com/mindspore/mindquantum/tree/research/summer\_ospp/2024/24c6d0463

项目选择初衷

当时我虽然已经在量子计算领域有一些了解,但对实际应用还有些“云里雾里”。后来看到这个项目的时候,一下就被吸引了,它聚焦于如何在真实的量子硬件上解决那些很棘手的误差问题,比如操作误差、串扰、退相干这些“老大难”。这个项目面向应用级量子程序利用动力学去耦技术抑制误差,提升多比特量子算法的性能,这让我觉得特别有意义。更重要的是,这个项目不是只停留在实验室,而是要在 MindSpore Quantum这个开源框架里实现一个实用的功能模块,能被更多人用起来。这是一个能把理论和实践结合起来的好机会,既能学到量子算法的细节,也能接触到实际开发工作的流程,对我来说特别有吸引力。

项目方案介绍

0****1

动态解耦(DD)

从具有完美脉冲的DD入手,考虑一个与时间无关的哈密顿量

0****2

动态解耦缓解空闲错误

DD通过使用单量子比特操作连续旋转其状态来保持空闲量子比特活跃,从而抑制了环境噪声与量子比特之间的耦合。DD是通过重复执行一系列单量子比特操作来实现的,这些操作将量子比特返回到其原始状态(例如,一系列的XYXY操作,如图所示)。因此,DD操作不会改变量子比特的整体状态,因为它们共同表现为抑制噪声的身份门。

虽然DD可以减少空闲错误,但它引入的额外操作可能导致门错误。如果这些额外操作的错误率超过了空闲错误的减少,那么使用DD可能会降低保真度。到目前为止,DD主要局限于表征单个量子比特的设备级研究,其在减少应用级空闲错误方面的功效尚未完全了解。

下表显示了两种情况下(a)程序不使用DD和(b)所有量子比特在空闲期间使用DD时的应用程序保真度,观察到在所有量子比特上应用DD可以提高保真度。然而,即使DD提高了应用保真度,也可以通过仅将DD应用于量子比特的选定子集来获得更高的保真度。虽然DD在单量子比特水平上是有效的,但如何在应用级别上鲁棒地应用DD尚不清楚。

表1.ibm-rome上程序的空闲时间

03

鲁棒地使用DD缓解空闲错误

本任务的目标是基于MindSpore Quantum开发一个能够在应用程序级别鲁棒地使用DD的功能模块。由于空闲错误是特定于程序的,因此受益于DD的量子比特子集对于每个程序都是唯一的。模块可以通过考虑程序结构和量子环境来自适应地确定程序最高保真度的量子比特子集。

项目分析

在描述ADAPT的解决方案之前,展示了一些特征数据,并解释了在应用程序级别应用DD的挑战,以给出使用DD和ADAPT的解决方案的动机。

01

空闲错误

当量子比特空闲且不执行任何操作时,会发生空闲错误。例如,coherence errors相干错误可以导致量子比特元在短时间内自然衰减到最低能态(|0⟩)(10−100)。此外,量子比特可能会由于与环境的相互作用而失去其相位信息(失相dephasing)。类似地,不期望的串扰会导致对其他活动量子比特的操作影响相邻(spectator)空闲量子比特的状态。空闲错误也可能由环境噪声引起(open system)。

量子程序的特性导致许多量子比特在程序执行期间有相当长的一段时间处于空闲状态。量子比特处于闲置状态有三个关键原因:

(1)有限的并行性,因为量子程序被分解成具有数据依赖性的指令序列;

(2)与单量子比特门相比,双量子比特门的延迟高;

(3)额外的数据移动或SWAP操作。

以图中的4量子比特Bernstein-Vazirani (BV)电路为例,由于并行度低,该电路的CNOT门必须串行调度。因此,在执行CNOTs B和C时,量子比特Q0保持空闲状态。虽然现有的编译器通过尽可能晚地调度指令来减少空闲时间,但这种优化并不适用于所有量子比特,即使编译器会采用前向和反向两次重排,但计算必须向前进行。例如,延迟初始化导致Q2没有空闲时间,但无法优化Q1在执行CNOT C期间保持空闲。CNOT门的长延迟加剧了空闲时间。即使一个程序可以在不同的量子比特上协调并行操作,具有单量子比特操作的量子比特(速度快10倍)也比具有双量子比特门操作的量子比特更早完成执行,并保持空闲状态。此外,同一硬件上的CNOT门会产生不同的延迟。因此,具有可变延迟的并行CNOT门在不同的时间完成。最后,NISQ编译器插入SWAP指令来克服有限的设备连接,从而导致序列化和长空闲时间。

02

DD对应用程序保真度的影响

在应用程序级别实现动态解耦的最直接方法是在所有可行的地方插入DD脉冲。为了实现这个设计,可以识别每个量子比特空闲的所有程序区域并插入DD序列。然而,为所有量子比特插入DD序列可能并不总是有益的。

图中显示了所有64个DD组合的保真度,序列0(000000)表示没有一个量子比特和序列63上的DD(111111)表示所有量子比特上的DD。可以看出,最佳DD序列取决于工作负载特征和用于运行程序的物理量子比特。在所有量子比特上应用DD会降低程序的保真度。为了有效地减轻空闲错误,应该明智地仅将DD应用于量子电路中受益于DD的量子比特。

项目实现思路

为了在应用程序级别鲁棒地使用DD,设计了自适应动态解耦(ADAPT)方案。ADAPT识别了DD序列的组合,可以抑制空闲错误,并最大限度地提高应用程序的保真度。ADAPT是作为一个编译器通道实现的,它可以很容易地与现有和未来的量子编译器工具流集成。

图中显示了ADAPT的概述。ADAPT识别量子电路中的所有空闲量子比特槽,并在这些空闲期间应用DD门序列。然而,必须应用DD的量子比特的最优子集既不是程序执行的先验已知,也不是通过广泛的器件表征实际可行的。为了克服这一挑战,ADAPT依赖于一个诱饵电路,该电路在结构上与输入程序相似,但结果是先验已知的。为了限制搜索最优DD序列的复杂性,ADAPT采用了本地化算法。它接受量子电路作为输入,并以最优DD序列输出电路。

最终方案

01

空开发框架描述

使用MindSpore Quantum实现了一个自适应DD框架,DD序列为XX,支持对多种量子线路进行动力学去耦的实验,通过调整DD激活顺序,评估其对不同量子比特子集的效果,确定量子线路中哪些量子比特需要应用DD序列,保证量子线路执行过程中达到更高的保真度。

主要实验包含对标准基线电路 (baseline circuit) 的仿真与通过非 Clifford 门替换的骨架电路 (skeleton circuit) 仿真,并评估动态解耦策略对噪声抑制的效果。

02

项目结构文件

benchmarks/: 存储实验中的 QASM 文件,用于量子电路仿真。 figure/: 存储实验结果生成的图像。 result/: 存储实验仿真运行的输出数据和中间结果。 scripts/: __init__.py: 初始化文件。 circuit_dd.py: 动态解耦的主要处理逻辑。 utils.py: 一些线路处理辅助工具函数。 main.py: 项目主要入口,包括初始化参数、仿真电路、生成电路等核心逻辑。

draw_fig.py: 负责绘制实验结果的图像。

03

结果

接着,为了研究并发CNOT操作串扰对空闲错误的影响,在第一个电路中,量子比特q[0]在相邻量子比特存在CNOT操作的情况下自由演化,而在第二个电路中,量子比特q[0]在 DD门序列存在的情况下演化。观察到在并发CNOT操作存在时,空闲量子比特q[0]的保真度明显下降,空闲错误在串扰的存在下被显著放大,使得量子程序极易受到这些错误的影响。同时,即使在正在进行的操作中存在串扰,DD也是有效的。

图13显示了相对于基线的All-DD、ADAPT和Runtime-Best策略的保真度。每个基准标签下面的数字指定了应用程序的基线保真度。量子傅立叶变换电路的结构导致量子比特在相当长的时间内保持空闲状态。例如,在QFT-6B中,Qubit-0在整个执行所花费的总时间中有90%是空闲的。虽然长序列的DD门增加了大量的单量子比特门误差,但它仍然有效地提高了整体保真度。总的来说,ADAPT优于基线。与All-DD相比,由于仿真技术限制,ADAPT未能一直优于All-DD。综上,ADAPT是一种通用技术,用于识别在运行时最容易出现空闲错误的量子比特,并且与DD协议无关。

项目总结

先前的工作已经通过在量子比特闲置时应用一系列动态解耦(DD)门来减少闲置错误。虽然 DD 在小规模上已被证明是有效的,但其在应用层面的适用性尚未得到充分研究。我们发现,对程序中的所有量子比特应用 DD 是次优的,甚至在某些特定情况下可能会降低应用的保真度,因为 DD 是通过引入额外的量子门来实现的。如果这些额外操作的集体错误率超过了闲置错误率,DD 可能会对应用层面的总体保真度产生不利影响。因此,为了减少应用层面的闲置错误影响,应该灵活地应用动态解耦。自适应动态解耦使用诱饵电路和局部搜索算法,通过试错搜索来识别应用 DD 的最佳量子比特子集。