量子纠错解码系统、方法、容错量子纠错系统及芯片与流程

文档序号:25543601发布日期:2021-06-18 20:40阅读:731来源:国知局
量子纠错解码系统、方法、容错量子纠错系统及芯片与流程

本申请实施例涉及量子技术领域,特别涉及一种量子纠错解码系统、方法、容错量子纠错系统及芯片。



背景技术:

由于量子比特非常容易受到噪声的影响,所以直接在物理量子比特上实现量子计算以目前的技术来看还不现实。量子纠错码和容错量子计算技术的发展,原则上提供了在有噪声量子比特上实现任意精度量子计算的可能。

如果仅仅是针对量子信息进行存储,那我们可以检测并收集所有的错误症状并在最后根据所有的症状信息进行纠错,这种纠错方式称为后处理。但是在进行容错量子计算时,量子电路本身会实时改变错误类型,仅仅依靠症状信息无法正确跟踪定位发生在不同时空的错误。为了使量子计算能够顺利进行,必须在得到错误症状之后立刻进行解码,并在量子算法的每一个计算步骤运行之前(或者下一轮纠错开始之前)完成纠正错误。这种称为实时纠错,是实现大规模通用量子计算必不可缺的技术。

实时纠错对量子纠错解码系统的运行时间裕度提出了很高的刚性要求,但目前的一些量子纠错解码系统设计,无法满足实时纠错的要求。



技术实现要素:

本申请实施例提供了一种量子纠错解码系统、方法、容错量子纠错系统及芯片,能够缩短量子纠错解码所需的时间,从而满足实时纠错的要求。所述技术方案如下:

根据本申请实施例的一个方面,提供了一种量子纠错解码系统,所述量子纠错解码系统包括多个纠错芯片,所述纠错芯片用于:

获取量子电路的错误症状信息,所述错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列;

运行经规范化处理后的神经网络解码器对所述错误症状信息进行解码处理,得到错误结果信息,所述错误结果信息用于确定所述量子电路中发生错误的量子比特以及相应的错误类型;

其中,所述神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

根据本申请实施例的一个方面,提供了一种容错量子纠错系统,所述容错量子纠错系统包括:量子电路、量子处理控制器qcp、任意波形发生器awg、数字采集器daq,以及包括多个纠错芯片的量子纠错解码系统;

所述awg用于向所述量子电路发送用于错误症状测量的测量波形;

所述daq用于采集经所述量子电路放大后的测量波形,对采集到的所述测量波形进行解调得到所述量子电路的错误症状信息,向所述qcp发送所述错误症状信息,所述错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列;

所述qcp用于将所述错误症状信息发送给所述量子纠错解码系统中的多个纠错芯片;

所述纠错芯片用于运行经规范化处理后的神经网络解码器对所述错误症状信息进行解码处理,得到错误结果信息,所述错误结果信息用于确定所述量子电路中发生错误的量子比特以及相应的错误类型;其中,所述神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

根据本申请实施例的一个方面,提供了一种量子纠错解码方法,所述方法包括:

获取量子电路的错误症状信息,所述错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列;

运行经规范化处理后的神经网络解码器对所述错误症状信息进行解码处理,得到错误结果信息,所述错误结果信息用于确定所述量子电路中发生错误的量子比特以及相应的错误类型;

其中,所述神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

根据本申请实施例的一个方面,提供了一种纠错芯片,所述纠错芯片用于实现上述量子纠错解码方法。

本申请实施例提供的技术方案至少包括如下有益效果:

对于采用神经网络解码器进行量子纠错解码的系统,通过对该神经网络解码器进行规范化处理,使其核心运算为经数值量化处理得到的无符号定点数的乘积累加运算,从而最大程度地减少神经网络解码器所需的数据量和计算量,以更好地满足实时纠错的要求。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请示例性示出的旋转表面码的示意图;

图2是本申请示例性示出的表面码错误发生的示意图;

图3是本申请示例性示出的症状测量电路的示意图;

图4是本申请示例性示出的三维症状比特阵列的示意图;

图5是本申请示例性示出的在表面码上实现容错量子计算方案的示意图;

图6是本申请示例性示出的实时容错纠错系统的结构图;

图7是本申请示例性示出的方案应用场景的示意图;

图8是图7所示方案应用场景所涉及的纠错解码过程的示意图;

图9是本申请示例性示出的实时反馈容错纠错的时序图;

图10是本申请示例性示出的多神经网络容错解码框架的示意图;

图11是本申请示例性示出的错误症状分割的示意图;

图12是本申请示例性示出的rg启发的浅层神经网络的示意图;

图13是本申请示例性示出的量子纠错解码系统的示意图;

图14是本申请示例性示出的在不同症状区块组合的解码性能的示意图;

图15是本申请示例性示出的snnd与mwpm的性能比较的示意图;

图16是本申请示例性示出的两种量化方式的示意图;

图17是本申请示例性示出的8位定点数与32位浮点数精度损失的对比图;

图18是本申请示例性示出的卷积计算的示意图;

图19是本申请示例性示出的解码芯片的体系结构的示意图;

图20是本申请示例性示出的容错量子纠错系统的示意图;

图21是本申请示例性示出的量子纠错解码过程的示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在对本申请实施例进行介绍说明之前,首先对本申请中涉及的一些名词进行解释说明。

1、量子计算(quantumcomputation,qc):利用量子态的叠加和纠缠性质快速完成特定计算任务的方式。

2、量子纠错码(quantumerrorcorrection,qec):将量子态映射到多体量子系统希尔伯特空间中的一个子空间中编码的方式。量子噪声会把编码量子态迁移到其他子空间。通过持续观测量子态所在的空间(症状提取),我们可以做到评估并纠正量子噪声的同时,不干扰编码量子态,从而保护编码量子态不受量子噪声的干扰。具体来说,一个[[n,k,d]]量子纠错码代表在n个物理量子比特中编码k个逻辑量子比特,就用来纠正任意个发生在任意单量子比特上的错误。

3、数据量子态:用来在量子计算时存贮量子信息的数据量子比特的量子态。

4、稳定子生成元(stabilizergenerator):也称奇偶校验算子。量子噪声(错误)的发生会改变某些稳定子生成元的本征值,从而我们可以根据这些信息进行量子纠错。

5、错误症状(errorsyndrome):当没有错误时,稳定子生成元的本征值为0;当量子噪声发生时,某些纠错码的稳定子生成元(奇偶校验算子)的本征值会变成1。这些0,1症状比特构成的比特串称为错误症状。

6、症状测量电路:又称为校验电路,是获取错误症状的量子线路。一般情况下,该电路自身会有被噪声污染。

7、拓扑量子纠错码(topologicalquantumcode):量子纠错码中的一种特殊类别。这类纠错码的量子比特分布为在大于等于2维的格子阵列上。格子构成一个高维流形的离散结构(晶格流形)。此时纠错码的稳定子生成元定义在几何上近邻且有限的量子比特上,所以在几何上是邻近区域(局限在较小的范围内)且容易测量的。这类纠错码的逻辑算子作用的量子比特在格点阵列的流形上构成一类拓扑非平凡的几何对象。

8、表面码(surfacecode):表面码是一类定义在二维晶格流形上的拓扑量子纠错码。它的稳定子生成元通常由4个量子比特支撑(在边界处由2个量子比特支撑),逻辑算子为条状跨越阵列的非平庸链。表面码具体的二维结构(5×5,总共49个数据量子比特和48个辅助量子比特,可以纠正任意发生在两个量子比特上的错误)如图1所示:黑色圆点11代表用来做量子计算的数据量子比特,十字12代表辅助量子比特。辅助量子比特初始制备在|0>或者|+>态。斜线填充13和白色填充14的方块(或者半圆形)代表两种不同类型的稳定子生成元,分别用于检测z错误和x错误。在本申请中,将使用如图1所示的旋转表面码(rotatedsurfacecode),因为它可以节省大约一半的物理量子比特,更方便在近期的实验上验证。这种表面码的奇偶校验算子在“体内”为连接4个数据量子比特,在边界处连接2个数据量子比特。

9、表面码尺度l:表面码阵列周长的四分之一。图1中的表面码阵列l=7,代表可以纠正发生在任意3个量子比特上的错误。

10、同源类(homologyclass):在拓扑里,同源理论中的同源类由边界为0的几何子对象的有限线性组合表示。如果这种线性组合的几何对象可以看成是维度大于1的几何对象的边界,则认为它与“0”(这里的0是指拓扑意义上的平庸类——可以连续收缩到点的几何对象)同源。在下文中,有时与“错误类”混用。

11、x和z错误:在物理量子比特的量子态上产生的由随机产生的泡利x和泡利z演化错误。根据量子纠错理论,如果纠错码可以纠正x和z错误,那就可以纠正任意发生在单量子比特上的错误。

12、容错量子纠错(faulttolerantquantumerrorcorrection,ftqec):真实量子计算中的所有操作过程,包括量子门和量子测量都带有噪声。也就是说即使用来做量子纠错的电路本身也含有噪声。容错量子纠错是指我们可以通过巧妙设计纠错电路后可以使用带有噪声的纠错电路进行纠错,并且仍然能达到纠正错误并阻止错误随时间扩散的目的。

13、容错量子计算(faulttolerantquantumcomputation,ftqc):即有量子纠错保护的量子计算。在量子计算的过程中,任意物理操作都带有噪声,包括量子纠错电路本身和量子比特测量。如果假设经典计算和操作(比如指令输入、纠错码解码等)不含噪声,且可以快速执行,那么容错量子计算是通过合理地设计量子纠错方案,并对编码的逻辑量子态进行特定方式量子门操作,来保证使用带噪声量子比特进行量子计算的过程中,可以有效控制并纠正错误的技术方案。

14、实时反馈纠错(realtimefeedbackqec):在进行一些症状测量得到症状比特之后,进行低延迟高速解码得到错误具体发生的位置,并在进行下一轮症状测量之前直接对发生错误的数据量子比特在物理上进行错误纠正的操作。

15、物理量子比特:使用真实物理器件实现的量子比特,包括数据量子比特和辅助量子比特。

16、逻辑量子比特:在纠错码定义的希尔伯特子空间中的数学自由度。其量子态的描述通常是多体纠缠态,一般为多个物理量子比特联合希尔伯特空间的二维子空间。容错量子计算需要运行在受到纠错码保护的逻辑量子比特上。

17、量子门/电路:作用在物理量子比特上的量子门/电路。

18、数据错误:发生在数据量子比特上的错误。

19、测量错误:由测量过程不完美引起的错误。

20、阈值定理(thresholdtheorem):对符合容错量子计算要求的量子计算方案,当所有操作的错误率低于某个阈值时,可以通过使用更好的纠错码,更多的量子比特,更多的量子操作,使计算的正确率可以任意逼近到1,同时这些额外的资源开销相对于量子计算的指数/多项式加速可以忽略不计。

21、神经网络:人工神经网络是由大量的简单基本元件——神经元相互联接而成的自适应非线性动态系统。每个神经元的结构和功能比较简单,但大量神经元组合产生的系统行为却非常复杂,原则上可以表达任意函数。

22、卷积神经网络(convolutionalneuralnetwork,cnn):卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络。卷积层(convolutionallayer)是卷积神经网络的核心基石,即离散二维或者三维滤波器(也称作卷积核,分别为二维或者三维矩阵)与二维或者三维数据点阵进行卷积操作。

23、全连通层(fullyconnectedlayer):也称为全连接层、全连通网络或全连接网络,其每一个输出结点都与上一层的所有输入结点相连,用来把之前提取到的特征综合起来。

24、线性整流层(rectifiedlinearunitslayer,relulayer):使用线性整流(rectifiedlinearunits,relu)f(x)=max(0,x)作为神经网络的激励函数。

25、误差反向传播算法(bp(backpropagation)):是人工神经网络中的一种监督式的学习算法。bp神经网络算法在理论上可以逼近任意函数,基本的结构由非线性变化单元组成,具有很强的非线性映射能力。

26、fpga:fieldprogrammablegatearray,现场可编程门阵列芯片。

27、流水线(pipeline)技术:是指在运算任务进行时分属不同部分的运算重叠进行操作的一种准并行处理实现技术。

28、神经网络模型量化(quantization):量化即通过减少表示每个权重所需的比特数来压缩原始网络。神经网络模型一般都会占用很大的存储空间。如果要在硬件芯片上实现神经网络算法的话,这将占据大量宝贵的片上存储空间和片内寄存器和走线,并严重影响计算速度。由于这些参数是浮点数类型的,普通无损压缩算法没法有效处理这种情况。如果可以在不影响模型准确率的情况下,在模型内部可以采用其他简单数值类型(例如,定点运算)进行计算的话,消耗的硬件计算资源(包括硬件运算单元和存储单元)会大大减小。对实时反馈系统系统的解码芯片来说,量化算法会极大地减少单位时间内的计算量,从而减少延迟。

29、乘积累加运算(multiplyaccumulate,mac或者ma):是在数字信号处理器或一些微处理器中的特殊运算。实现此运算操作的硬件电路单元,被称为“乘数累加器”。这种运算的操作,是将乘法的乘积结果和累加器的值相加,再存入累加器。

30、lvds(low-voltagedifferentialsignaling,低电压差分信号):一种低电压差分信号的电气标准,是一种使用差分信号来串行传输数据的方法。物理实现通常是使用双绞线,可以在相对较低的电压下进行高速传输。lvds只是一种物理层的规格,并不涉及协议层的通信方法等,因此具有很低的延时。

31、awg(arbitrarywaveformgenerator,任意波形发生器):接收用数字信号配置的波形信息,经数字-模拟转换后产生对应的模拟波形。在量子测控系统中用于产生控制和读取量子比特的波形。

32、daq(digitalacquisition,数字采集器):接收模拟信号输入,经过模拟-数字转换后得到对应的数字信号并用于接下来的各种处理。在量子测控系统中用于接收量子芯片的读取结果。

33、qcp(quantumcontrolprocessor,量子控制处理器):执行量子指令的模块,在实验过程中从daq接收结果,并控制awg发送量子操作对应的波形。在量子测控系统中,量子控制处理器通过实时处理量子程序生成的指令,从而进行程序流控制和反馈控制。

34、量子测控系统(quantumcontrol&measurementsystem):通过运行量子指令集来实现量子程序的执行,并向量子芯片提供输入信号进行控制,以及对量子芯片进行测量并采集结果的系统。在超导量子计算中,一套量子测控系统通常包括上面提到的awg、daq和qcp。

下面,对本申请技术方案的出发点进行介绍说明:实时反馈容错量子纠错(或称为“实时反馈容错纠错”)。

由于量子比特非常容易受到噪声的影响,所以要直接在物理量子比特上实现量子计算,以目前的技术来看还不现实。量子纠错码和容错量子计算技术的发展,原则上提供了在有噪声的量子比特上实现任意精度量子计算的可能性。一般来说,对量子纠错码的稳定子生成元进行测量(也称为症状测量,或者奇偶校验)需要引入远距离量子门,并同时要求通过额外的量子比特来制备复杂的量子辅助态来完成容错纠错。由于目前实验手段的限制,人们现在还没有能力实现高精度的远距离量子门,也还没有能力制备复杂的量子辅助态。而使用拓扑量子纠错码做容错量子纠错和容错量子计算方案并不需要使用远距离量子门(由于稳定子生成元在空间上是定域邻近的)和制备复杂的量子辅助态(通常只需要制备单、双量子比特的标准态),且容错阈值较高,所以被认为是较有可能利用当前的实验技术来实现通用容错量子计算机的方案。本申请将以表面码这种特殊的拓扑量子纠错码为例进行说明,但是核心思想适用于任意拓扑量子纠错码。

作为一个纠错码,当错误发生后,我们可以通过进行奇偶校验来得到错误症状;然后根据这些症状,我们还需要通过具体的针对纠错码的解码算法来判断错误发生的位置和类型(是x错误,z错误,还是两者皆有,即y错误)。对表面码(或一般拓扑纠错码)来说,错误和错误症状是有具体的空间位置的:当有错误引起症状时,对应位置的辅助量子比特的本征值为1(可以看成是该位置出现了一个点粒子),没有错误时,对应位置的辅助量子比特的本征值为0。这时,解码可以归结为以下问题:给定一个空间数字阵列(2维或者3维,数值为0或者1),根据特定的错误发生模型(errormodel)——发生在量子比特上的错误概率分布——推理最大可能发生错误的是哪些量子比特,及具体的错误类型,并根据这个推理结果进行错误纠正。

如图2所示,其示出了表面码错误发生的示意图。量子比特在二维阵列的边上,测量错误症状的辅助量子比特在二维阵列的节点上(这些症状为完美测量)。图2中黑色边21代表发生错误的量子比特形成的错误链,斜线填充的圆圈部分22代表由错误引发的症状值为1的点。只要能通过点状症状确定链状错误即可完成解码。

如果症状测量过程本身是完美无噪声的,那么我们就可以直接根据这些症状信息运行解码算法,判定错误具体发生在哪个数据量子比特上。但是实际情形中,量子电路(包括症状测量电路)都是含有噪声的。

如图3所示,其示例性示出了对z和x两类稳定子生成元进行症状测量的电路,其中n、e、w、s代表处于辅助量子比特北、东、西、南的数据量子比特。该顺序非常重要,否则会严重降低解码性能。

因此,只通过一次症状测量所得到的症状信息无法直接用于解码,因为这反而会引入关联噪声,引起大片的数据量子比特发生错误,快速破坏逻辑量子比特。通常,针对尺度为l的表面码,我们需要在一段时间内做o(l)次测量来建立足够的症状信息(可视为三维症状历史图,如图4所示,其中垂直的第三维代表时间),才能根据这些信息来判定这段时间内,哪些症状是有问题的,哪些是可靠的,并判定这段时间o(l)内有哪些数据量子比特和辅助量子比特发生过错误,并对数据量子比特上的错误进行纠正。这个多次症状测量-物理纠错的过程需要不停地重复,直到量子存储过程结束,这整个过程称为实时容错量子存储。理论结果证明,当发生在所有量子比特上的各类噪声(存储,制备,量子门,测量等)都是相互独立的,并且强度低于某个阈值的情况下,可以通过增加l来达到将噪声的影响减少到任意小,这就是容错阈值定理。阈值定理是保证任意规模通用量子计算可以实现的理论基石。

图4示例性示出了多次症状测量得到的三维症状比特阵列的示意图。在图4中,总共包括4个分片41,每一个分片41代表一次测量获取的错误症状信息,浅色圆圈代表数据量子比特,深色十字代表辅助量子比特,线条42代表z错误引发的症状,线条43代表x错误引发的症状,线条44代表测量错误,x、z等代表发等效发生在数据量子比特上的错误。

在实现实时容错量子存储的基础上,我们可以进一步实现容错量子计算。这里介绍一个较为经典的利用表面码的计算方案,大致如图5所示。首先,为了实现量子计算,一个逻辑量子比特是不够的,我们需要编码更多逻辑量子比特。这种编码方式通过在表面上取消对一个连通区域的稳定子生成元的测量形成一个空穴,来实现2个被保护的自由度,可以形成一个逻辑量子比特。此处“自由度”的含义可以认为事先没有被定义的变量。由于这里不需要固定稳定子生成元的本征值,所以这个生成元的本征值可以为0也可以为1,就是两个值的自由度。为了容错操作方便需要,通常选择2个大小相等空穴,形成4个逻辑自由度,并从中选取2个自由度来实现1个逻辑量子比特——如图5中两个被线条连起来的空穴即形成一个逻辑量子比特51。注意,空穴的周长和连接两个空穴的直线长度决定了表面码对这个逻辑量子比特51的保护能力。当进行容错量子计算时,这空穴需要通过对单量子比特和稳定子生成元的交互测量实现在平面(surface)上的移动和缠绕,并在此过程中不间断进行症状测量,并立刻将发生在数据量子比特上的错误纠正(实时反馈纠错)。

为了使问题简化,我们在本申请中只考虑对量子内存实现实时反馈纠错,这是实现通用容错量子计算的关键一步,并且两者之间从实时反馈控制角度并无本质的区别。在本申请中,我们的注意力集中在控制量子芯片的电子学/微波系统,并假设量子芯片(或者其他量子计算物理本体)本身的制造工艺已经足够成熟,以至于所制备的量子比特所承受的噪声满足空间独立假设,且各类噪声的强度均小于表面码的阈值(约为<1%的某个值)。

目前还不存在对表面码或者其他任何拓扑纠错码进行实时容错纠错的系统。大致来说,对无论何种实现量子计算的物理平台(包括超导,离子阱,中性冷原子,线性光学系统等),一个容错量子纠错(ftqec)系统的实现框架如图6所示,根据图6实时反馈纠错过程分为以下几步:

步骤1、症状测量模块(syndromemeasurementmodule)发出进行症状测量的指令经过指令执行单元(instructionexecutionunit,ieu)到任意波形发生器(awg)中,产生如图3所示的症状测量电路需要的波形序列,完成症状测量。

步骤2、将所得到的测量信号经过daq后,将数据点进行0和1的状态分辨,产生症状比特(syndromebits),并暂时存储。

步骤3、重复上述步骤1和2o(l)次之后,搜集所有症状信息,将所有的症状比特同时传送至解码模块(decodingmodule)进行解码。

步骤4、解码模块产生发生错误的量子比特的位置坐标和错误类型,将这些信息传送到awg。

步骤5、awg根据错误发生位置和类型产生纠正错误所需要的操作(一般是x或者z门)的波形(光信号或者微波信号,取决于底层量子比特的物理实现),作用在相应的量子比特上完成纠错。

一个可进行通用容错量子计算的纠错系统需要满足如下两个条件:

条件1:可扩展性。由于容错量子计算最终需要的物理量子比特数以千万计,我们需要确保用于进行纠错的电子学控制系统所消耗的资源不随逻辑量子比特的数目的增长而增长过快。

条件2:低延时性。由于在纠错过程,搜集完o(l)次症状测量后到完成纠错之间由于无法进行症状测量,量子比特暴露于噪声下,会影响后续的纠错效果。所以实时反馈纠错要求非常低的延时。随着量子比特数量增加,原则上我们要求解码的延迟增长缓慢。

关于上述条件1,当前实验距离千万物理量子比特还很遥远,所以还不在目前所有控制学系统的考虑范围内。

关于上述条件2,实时纠错要求在上述步骤3-5的过程中不进行症状测量,也就是说这段时间量子态暴露在噪声环境中,并且我们不能提取错误相关的信息,这个时间越长对纠错效果的影响也就越大。所以步骤3-5的执行时间需要尽量短。具体分析,这里包括:

1、完成症状量子比特测量后,信号传输到纠错系统的时间;

2、daq和0、1分辨处理,并将症状比特传输到解码模块的时间;

3、解码算法运行的时间;

4、将解码结果传送至awg的时间;

5、awg产生控制波形并传输芯片的时间。

请参考图7,其示出了本申请一个实施例提供的方案应用场景的示意图。如图7所示,该应用场景可以是超导量子计算平台,该应用场景包括:量子电路71、稀释制冷机72、控制设备73和计算机74。

量子电路71是一种作用在物理量子比特上的电路,量子电路71可以实现成为量子芯片,如处于绝对零度附近的超导量子芯片。稀释制冷机72用于为超导量子芯片提供绝对零度的环境。

控制设备73用于对量子电路71进行控制,计算机74用于对控制设备73进行控制。例如,编写好的量子程序经过计算机74中的软件编译成指令发送给控制设备73(如电子/微波控制系统),控制设备73将上述指令转换为电子/微波控制信号输入到稀释制冷机72,控制处于小于10mk温度的超导量子比特。读取的过程则与之相反,读取波形被输送到量子电路71。

如图8所示,本申请实施例提供了一种能够实现实时反馈容错纠错的解码算法,将该解码算法与控制设备73结合(如将该解码算法集成到电子学/微波控制系统中),当控制设备73的总控系统73a(如中央板fpga(fieldprogrammablegatearray,现场可编程门阵列))从量子电路71读取到错误症状信息之后,总控系统73a发出纠错指令到控制设备73的实时反馈容错纠错模块73b,该纠错指令中包括上述量子电路71的错误症状信息,实时反馈容错纠错模块73b可以是fpga或asic(applicationspecificintegratedcircuit,专用集成电路)芯片,实时反馈容错纠错模块73b运行上述解码算法,对错误症状信息进行解码,并实时将解码得到的错误结果信息转换成纠错控制信号发送给量子电路71进行错误纠正从而对量子比特进行保护。

上文介绍了实时反馈容错纠错的背景,并结合图7和图8来表征整个控制系统。要实现容错量子计算,首先需要实现对量子内存的实时反馈纠错,也是本申请技术方案的着重点。这里,我们就本申请在整个系统上的实现细节展开详细介绍。

图7和图8给出了量子内存的实时反馈容错纠错的系统框架图。如果从时序出发的话,整个纠错时序如图9所示,在给定尺度l之后,我们需要选定具体的症状测量周期t。在图9中,sm代表症状测量,星形符号代表发生的某个错误(存储或测量错误)。在图9中,选取t=3和t=4作为例子。

为了研究解码算法的性能,我们需要进行仿真。在进行仿真模拟解码过程时,在每次完成解码(ftqec)之后,我们都可以进行一次完美症状测量的理想解码(idealdecoding,id)来判定在这个时间点是否已经发生了逻辑错误以至于纠错失败。当判定发生逻辑错误时,我们就记录下总共经历的时间。通过多次仿真对这个时间求平均值,即为逻辑比特的寿命。对寿命取倒数即为解码错误率。根据使用mwpm(minimumweightperfectmatching,最小权重完美匹配)解码器的实际观察,解码周期t越大,纠错效果越好;但是当t超过l两倍之后,性能的提升便不再明显,逻辑错误率趋近于某个极限值;与此同时,解码的复杂度却会快速增加(症状比特数目积累过多)。所以,我们选取t≤2l。

在ftqec模块,我们使用浅层神经网络解码(shallowneuralnetworkdecoder,snnd)算法实现对拓扑量子纠错码的解码。这里先对浅层神经网络解码算法进行介绍说明。

因为症状比特本身被噪声污染,我们必须使用多个神经网络解码器来分别推理逻辑错误类和具体的症状比特值。这里,以量子纠错码(如表面码)的尺度为l为例,我们可以进一步将输入的错误症状信息拆分成x类和z类两个大组,每一大组含有的症状比特数目是总症状比特数目的一半,即(l2-1)/2个比特,分别用于对x和z错误进行纠错。以x大组为例,我们可以进行一步将需要推理的症状比特组成(l2-1)/2n个小组,每个小组含有n个症状比特,每个小组的症状比特使用一个神经网进行推理,即对应一个2n分类问题。这样,x(或者z)大组需要一个神经网络对x(或者z)逻辑错误分类推理,剩下的(l2-1)/2n个神经网络对(l2-1)/2n个症状比特值进行推理,总共需要(l2-1)/n+2个神经网络。

如图10,其示例性示出了一种多神经网络的容错解码框架。量子纠错码的尺度为l,神经网络解码器的数量为(l2-1)/n+2。其中,1个神经网络解码器用于基于x错误对应的错误症状信息,判定是否发生x错误。1个神经网络解码器用于基于z错误对应的错误症状信息,判定是否发生z错误。x错误对应的错误症状信息被划分为(l2-1)/2n个小组,每个小组包括n个症状比特,每个小组的症状比特通过1个神经网络解码器解码得到发生x错误的量子比特的位置信息。z错误对应的错误症状信息被划分为(l2-1)/2n个小组,每个小组包括n个症状比特,每个小组的症状比特通过1个神经网络解码器解码得到发生z错误的量子比特的位置信息。也即,2个神经网络解码器推理错误类型,其余的神经网络解码器推理发生错误的量子比特的位置信息,将这两部分信息综合起来,即可推断具体发生在物理量子比特上的全部错误。

通常,直接选取神经网络进行训练,在l较大情况下,效果非常不理想。为了构建可扩展的方案,我们根据rg(renormalizationgroup,重整化群)解码器的思想构造神经网络。核心思想在于使用3dcnn对上一层提取的信息进行特征提取可以看成是一级解码过程,每一层的输出都是一组三维的数组,可以是一个软解码器的输出概率分布。这样,在每一层症状提取时,我们可以对每个三维数组进行分块,并直接用三维卷积核和这些分块之后的三维子矩阵卷积。图11为rg启发的症状分割示意图。更准确一点,即卷积的步长:

stride=kernelsize=(lx,ly,lz)

其中,stride表示卷积的步长,kernelsize表示卷积核的尺寸,lx,ly,lz是卷积核在x、y、z三个方向上的尺度。在所有的卷积网络之后,我们使用全连通层做分类,整个网络如图12所示。这里的全联通层规模大小基本独立于l而相对固定。在实际应用中,卷积移动步长(stride)可以略小于卷积核的尺寸,也即与卷积核卷积的相邻子矩阵之间有部分重合。同时,我们也可以适时使用stride和kernel=(1,1,1)提取更多的信息的同时压缩通道(channel)的数量。训练结果显示,这些措施都会加快训练收敛进度,得到较好的解码性能,同时也不会增加网络深度。

最后,我们要求所有训练样本均为使用某已知的解码算法(如使用mwpm,原则上可使用更好的解码器)产生症状-错误集,然后将错误分拆成逻辑错误与对应的症状集,用于不同网络的训练。

一旦模型训练完毕,我们需要将其部署于实时纠错系统的解码模块。

请参考图13,其示出了本申请一个实施例提供的量子纠错解码系统的示意图。该量子纠错解码系统包括多个纠错芯片,该纠错芯片用于执行如下步骤(131~132):

步骤131,获取量子电路的错误症状信息,该错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列。

采用量子纠错码对量子电路进行错误症状测量,可以得到相应的错误症状信息,该错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列。可选地,错误症状信息是由0和1组成的二维或三维的数据阵列。例如,当没有错误时,稳定子生成元的本征值为0;当有错误发生时,稳定子生成元的本征值为1。

在本申请实施例中,量子纠错码可以是任意形式的拓扑量子纠错码。以量子纠错码是表面码为例,对表面码来说,错误和错误症状是有具体的空间位置的:当有错误引起症状时,对应位置的辅助量子比特的本征值为1(可以看成是该位置出现了一个点粒子),没有错误时,对应位置的辅助量子比特的本征值为0。因此,对表面码来说,如果不考虑纠错过程自身的错误(也即测量过程如果是完美,称为完美症状),那么错误症状信息可以认为是一个由0,1组成的二维阵列图像。

另外,考虑到症状测量过程通常是含有噪声的,因此可以在一段时间内做多次测量得到一个由0,1组成的三维数据阵列作为错误症状信息,具体可以参见上文图4部分的介绍说明,此处不再赘述。

步骤132,运行经规范化处理后的神经网络解码器对错误症状信息进行解码处理,得到错误结果信息,该错误结果信息用于确定量子电路中发生错误的量子比特以及相应的错误类型;其中,神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

神经网络解码器是基于神经网络构建的用于对错误症状信息进行解码的机器学习模型。该神经网络解码器的输入数据即为错误症状信息,输出数据即为与该错误症状信息对应的错误结果信息。基于神经网络解码器输出的错误结果信息,可以确定出量子电路中发生错误的物理量子比特以及相应的错误类型。例如,确定出量子电路中发生错误的物理量子比特的位置,以及该位置处发生错误的物理量子比特的错误类型,如是x错误、z错误还是y错误(y错误表示既有x错误又有z错误)。

可选地,神经网络解码器包括输入层、隐含层和输出层。其中,隐含层的数量为至少一个,通常情况下为多个。错误症状信息从神经网络解码器的输入层输入,经过若干个隐含层的特征提取,最终得到错误结果信息从输出层输出。

在本申请中,通过对神经网络解码器提出一些设计规范,使得神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算,从而最大程度地减少神经网络解码器所需的数据量和计算量,以更好地满足实时纠错的要求。

在本申请实施例中,为了方便整个系统的设计和部署,同时尽可能地缩短解码所需耗时,对神经网络解码器提出了一些规范化处理的要求,包括但不限于以下至少一项:

1、多个纠错芯片上运行的各个神经网络解码器具有相同的网络结构。

本申请在实时容错纠错中,希望所有的神经网络解码器以一致的延迟输出推理结果,然后根据这些推理结果综合判断错误发生的位置和类型。由于一次解码需要同时运行多个神经网络解码器,本申请倾向于使用相同的网络结构和硬件结构(fpga/asic)来实现神经网络的推理——对fpga和asic,这都将极大简化设计开发过程。尤其是在l较大,涉及到的神经网络解码器数量较多时,如果每一个神经网络解码器在硬件上部署都要重新设计优化,这将造成巨大的负担。这就要求我们设计神经网络解码器时保证一致性,这样将模型映射到硬件执行时,前后端设计和制作都会大大简化。同时,在l较大时,需要使用较多的神经网络解码器时将产生规模效应——相同的结构设计会方便fpga/asic批量流片生产以降低成本。所以,本申请要求所有的神经网络解码器,都具有相同的网络结构(如包括每一层的权重数量,偏置数量等)。后续的仿真结果也表明,这样的选择已经可以达到解码性能的最优。

2、神经网络解码器的隐含层仅包括卷积层和全连通层。

在本申请中,神经网络解码器的隐含层只允许使用卷积层和全连通层,因为这两类算法的核心运算都是矩阵运算,容易并行化。为了最大程度地并行化,还需要进一步减少神经网络解码器的网络层数及运算复杂性——只允许使用卷积层和全连通层,并放弃使用maxpooling(最大池化)、dropout(失活)或者batchnorm(批归一化)等技术以进一步简化模型。这些简化可以同时减少数据依赖,并在很大程度上减少电路实现的难度。实践表明,减少这些辅助层并没有增加训练的难度或者产生过拟合现象。

3、神经网络解码器的激活函数使用relu激活函数。

为了方便硬件部署实现,本申请要求神经网络解码器的所有激活层(activatelayer)都必须使用relu激活函数。原因在于,在使用数字电路进行定点运算时(具体量化操作后续会提及),relu激活函数对输出的判定仅取决于定点数的符号位,并对符号位为1的负数全部重置为0即可。这将极大地简化硬件实现的难度。同时使用relu激活函数已经可以产生足够好的解码性能,达到接近最优。

4、神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

经过上述对神经网络解码器的简化处理之后,整个神经网络解码器的核心运算只有一类:数组间的乘积累加运算(ma),硬件实现难度进一步下降。

5、每个纠错芯片上运行一个神经网络解码器。

可选地,还需要选择在不影响解码性能的情况下尽可能减少网络数量。为了尽可能低地减少延迟(包括传输延迟和计算延迟),在硬件资源充分的情况下,本申请希望每个神经网络解码器都可以在单个或多个fpga/asic上完成,也即不考虑单个芯片运算多个神经网络解码器的情况。这样,越多的网络数量代表需要的芯片数量越多。尽可能减少网络的数量意味着更少的芯片数,将会减缓整个解码系统搭建的难度。在下文中也会给出大致最优网络数量选取的经验方式。

6、神经网络解码器能够适用于不同量子电路的纠错解码。

可选地,本申请还希望神经网络解码器具有足够的弹性。也就是说,本申请需要多神经网络解码模型不只是能满足特定噪声模型的模型,同时也要满足不同的噪声模型。即使退一步,在训练好的模型不能很好胜任不同的噪声模型的情况下,也可以在不修改模型结构参数的情况下重新对模型进行训练,并得到较好的解码性能。这样,可以在不重新设计/优化/流片的情况下,只更新片上存储的权重、偏置等数据来完成解码算法的更新,以便更好地适用于不同的量子电路上。

下面,以l=5为例讨论模型的变换对解码性能的影响。首先我们给出l=5的具体的模型参数。模型以pytorch代码表示如下:

super(cnn_3d_l_x,self).__init__()

self.conv1=nn.conv3d(1,500,stride=(4,1,3),kernel_size=(6,3,3),padding=0)

self.relu1=nn.relu()

self.fc1=nn.linear(500*2*2*1,400)

self.relu2=nn.relu()

self.fc2=nn.linear(400,80)

self.relu3=nn.relu()

self.fc3=nn.linear(80,output_size)

该模型除去relu之外,只有四层,包括一层3维卷积层和三层全联通层。由于本申请使用了2个模型标定错误类,4个模型进行症状比特数值标定。对推理症状的网络,每个网络需要标定6个症状比特,有26=64个状态,所以网络的最终输出层一律规定为64。总共网络参数约80万,需要大约100万次浮点乘法运算。

接着分别考虑以下几种情况:以n=2,3,4,6个症状比特为一组,用一个神经网络推理其数值,即对应4分类,8分类,16分类和64分类(即上述pytorch代码中的output_size变量发生变化,其余不变)问题。这里对应的总模型数量分别为14,10,8,6。我们使用l=5,t=10,并在p=0.006左右进行噪声采样,使用mwpm进行训练集生成,然后对所有模型进行相同的训练。我们可以发现,对不同的n值,解码性能(逻辑量子比特的错误率)几乎不可分辨。也即是我们可以选择较大的n(对l=5,2n<80),在极大减少网络数量几乎不对解码性能造成任何影响(见图14)。这种现象在l=7和9时也存在。我们认为这是一种普遍现象,即模型的分辨能力足够强,以至于可以胜任规模足够大的多分类问题。但是当output_size远大于倒数第二层节点数目(上述pytorch代码示例中是80),则推理性能会下降,所以我们将输出层的节点数限制为小于倒数第二层的输出节点数。

对l=7和9,与l=5类似,我们选择满足上述规范的模型,使用p=0.006~0.007进行噪声采样,并使用经典解码器完成训练集生成。目前,我们仍选择经过最深入研究,且适用范围最广的mwpm来针对仿真产生的错误症状进行解码,得到的解码数据和症状数据集生成训练集。后期会考虑使用诸如利用强化学习的更高性能解码算法来生成训练集,以期达到更好的解码性能。具体模型参数,除了之前给出的l=5之外,不在本申请中示出。这里我们考虑了使用l=5,7,9在标准电路噪声模型(circuitleveldepolarizationnoise)采样的数据集训练的解码器,对应的解码周期分别为t=10,14,12,分别使用n=6,6,8对应的模型总数分别为6,10,12。所使用的模型在设计上均符合模型规范的要求。具体的解码性能如图15所示。我们可以看到,在物理错误率较低的情况下,snnd(图中的ftcnn)与对其进行训练的mwpm解码器性能几乎重合,所以达到了理论极限。在错误率较高的情况下,snnd的性能比对应的mwpm稍差,但这是可以容忍的,因为容错纠错的正常工作区间即要求物理错误率较低。我们期望未来使用强化学习训练得到的新解码器,可以产生更高质量的训练集来训练snnd。

下面,对神经网络解码器的数值量化方案进行介绍说明。

神经网络模型的参数一般都会占用很大的存储空间。以l=5为例,目前使用的参数数量约为80万左右。如果要在硬件芯片上部署神经网络算法的话,这些数据必须事先部署在fpga/asic的片上内存,因为实时纠错不能承受从主内存(ddrsdram(doubledataratesynchronousdynamicrandomaccessmemory,双倍速率同步动态随机存储器)或者gddrsdram(graphicsdoubledataratesdram,图形用双倍速率同步动态随机存储器))读取数据造成的延迟。由于这些参数是浮点型的,每个数需要占用32位空间,无损压缩算法很难压缩它们的存储空间,所以他们将占据大量的宝贵片上内存。同时,浮点数的乘法计算会消耗较大的计算资源并耗时较长。如果在不影响模型准确率的情况下,模型内部可以采用其他简单数值类型(例如定点运算)进行计算的话,需要的片上存储会减少(以8位定点为例,减少4倍的存储和更多的计算量),同时,计算速度会提高很多,消耗的计算资源会大大减小。对实时反馈容错纠错系统的算法运算芯片,量化操作即是通过减少表示每个预先设定的参数和中间计算结果所需的比特位数来压缩原始网络,同时提升存储效率和计算效率的方法。

神经网络的预测能力具有较高的鲁棒性,一般对数据精度的要求较低。通过量化降低数据精度对模型推理能力的影响有限。一般来说,量化方案分为非饱和量化和饱和量化,如图16所示。非饱和量化是把一定范围内的浮点数完全映射到定点数所能表达的区间(图16以8位符号定点数为例,区间范围是-128到127的整数)。在数据分布非常不均匀的情况下,非饱和映射容易将少数数据点映射在较大范围内,同时将大量的数据点映射到某个非常小的区间而无法分辨,造成较大的精度损失。对于饱和映射,某些绝对值较大,统计上概率比较低的点被统一映射为边界点(图16为例,-128或者127)。这样,较多的区间内定点数用来表示大概率的数据。在例如tensorflow/pytorch/tensorrt等的工业/开源框架下,通常使用饱和量化方案以得到更好的预测精度。这些框架通常对权重、输出、偏置等使用不同的量化方式,更加适合应用在cpu/gpu等较为灵活的指令集体系,其额外的复杂度会造成延时和计算资源的增加。由于工业/开源框架的输入输出数据类型无法控制,且细节无从根据我们的具体需求进行细微调整满足我们的需求。

在本申请技术方案中,直接选取非饱和量化,因为它实现起来足够简单,并且我们也将看到,它导致精度损失已经忽略不计,可以达成我们的性能需求。接下来将详细介绍该非饱和量化方案细节。但需要说明的是,在一些其他实施例中,饱和量化方案同样适用于本申请,且很有可能可以进一步减少低错误率情况下的量化损失,不论是饱和量化方案还是非饱和量化方案,都在本申请的保护范围之内。

首先,本申请对量化方案提出具体限制,即只允许将无符号定点数(unsignedfixedpointnumber)输入硬件乘法器。这样选取的原因是,乘法是整个模型中执行量最多的运算,应尽一切可能将其运算简化,以充分利用硬件的资源。因此,一旦选定使用某特定位数的无符号定点数类型来表示模型中的浮点数(包括输入、权重、偏置、层与层之间的中间输入输出数据等),则所有的硬件乘法器输入数据都必须为无符号定点整数。虽然乘法器的输出数据及后续的累加会产生溢出,超出定点数的表示范围,或者是负数,但是为了使后续的乘法运算继续使用一致的无符号定点数,本申请要求量化算法对其进行收缩、放大、截断至无符号定点数的区间范围。

在满足上述量化方案设计要求的基础上,神经网络解码器的隐含层的输出参数的计算过程如下:

1、获取量化后权重向量和量化后输入向量;其中,量化后权重向量中包括经数值量化处理得到的无符号定点数形式的权重参数,量化后输入向量包括经数值量化处理得到的无符号定点数形式的输入参数;

2、基于量化后权重向量和量化后输入向量的内积,得到无符号定点数形式的输出参数。可选地,该输出参数是一个属于固定取值范围的无符号定点数。

接下来,本申请给出具体的量化协议。

考虑浮点数xf和其无符号定点数表示xq,定点数表示范围为[qmin,qmax]。同时,考虑xf在统计上的取值范围[xmin,xmax],定义比例缩放系数scalex:

如果[xmin,xmax]包含0点,则令0对应的定点数x0为:

如果xmin>0,那么设定x0=qmin;如果xmax<0,那么设定x0=qmax。该x0可以称为参考定点数。

在无论何种情况下,我们都有以下通用非饱和映射(量化)规则:

xf=(xq-x0)scalex

回到使用神经网络进行推理的问题。根据本申请上文提出的模型规范,只允许使用卷积层、全连通层和relu层,所以无论是卷积还是矩阵与向量的乘法,其核心的算术运算(arithmeticaloperation)都是两个向量w和a的内积:

其中,i为正整数,表示向量w/向量a中的元素数量,w[i]为浮点数形式的权重参数,a[i]为浮点数形式的输入参数。

所以,接下来重点讨论如何使用非饱和量化规则来使用定点运算来近似这个向量内积运算。首先,我们有w和a与其定点数qw和qa的关系:

w[i]=(qw[i]-w0)·scalew

a[i]=(qa[i]-a0)·scalea

其中,qw为经数值量化处理后得到的无符号定点数形式的权重参数,qa为经数值量化处理后得到的无符号定点数形式的输入参数,scalew为权重参数对应的比例缩放系数,scalea为输入参数对应的比例缩放系数,w0为权重参数对应的参考定点数,a0为输入参数对应的参考定点数。

我们将向量w和a的内积结果记为o,o与其量化oq也有对应关系:

o=(o-oq)scaleo

其中,scaleo为输出参数对应的比例缩放系数。

同时,我们有o的完整表达式:

其中,b为浮点数形式的偏置参数。

为了方便起见,我们使用n位定点数,则qmin=0,qmax=2n。由于a的取值要么是症状本身(第一层网络),要么是上一层的计算结果经过relu之后的输出结果,根据之前的映射法则,我们有a0=0和o0=0。将上式变换之后,我们可以得到oq与qw、qa和qb的关系:

其中,qw为经数值量化处理后得到的无符号定点数形式的权重参数,qa为经数值量化处理后得到的无符号定点数形式的输入参数,qb为经数值量化处理后得到的无符号定点数形式的偏置参数,scalew为权重参数对应的比例缩放系数,scalea为输入参数对应的比例缩放系数,scaleo为输出参数对应的比例缩放系数,w0为权重参数对应的参考定点数,b0为偏置参数对应的参考定点数,i为正整数。

oq经过relu之后作为下一层的输入qa进行下一轮计算。

现在,我们对这个表达式中的每个量进行分析:

1、取决于w、a和o的比例缩放系数。scalew为模型权重参数的比例缩放系数。一旦模型给定(训练完成)后,wmax和wmin均为确定的数字。但是scalea和scaleo取决于输出层最大(小)值,对不同的输入,这些值都不一样。所以我们只能在一个测试样本集上运行算法,收集每一层输出的最大(小)值来计算统计平均值,最终得出scalea和scaleo。这里的测试样本的错误率须与实际量子比特的错误率相一致,保证量化后的模型可以在实际错误率下最优。注意,s1一般为浮点数,且有可能小于1。为了使所有运算均为定点数,需要对其乘以2的某个次幂(具体原因后续详述),设为m,以近似成一个正整数不需要限制在[qmin,qmax],因为对的运算(乘法)只有一次,所以我们可以定制特殊优化过的乘法器。

2、与s1情况类似。需要通过在测试样本集运行模型得到scaleo。s2同样是一个浮点数,但是一般比1大很多,所以我们直接对其截断,去除小数部分,得到一个近似的整数

3、即是固定位定点数的乘积累加运算,是整个模型中运算量最大的核心部分。这里我们要求qw和qa都在[0,2n]中。a的计算量是所有步骤中最大的,所以我们要求所有的乘法都使用一致的乘法器。注意,一般情况下,a会溢出固定点无符号数的表达范围[0,2n],所以我们不对a做区间范围限制。

4、为固定位定点数的求和运算,最后与w0相乘。同样地,b也会溢出[0,2n],所以我们也不对b做区间范围限制。

实际运算中,a和b均为正整数,但其差可能为负数。为了处理这种情况,我们在得到a和b之后,将其统一补0拓展到某个固定长度(视具体情况而定),然后将其看成是2个带符号整数相减得到a-b,并将得到的结果与相乘,得到一个带符号整数由于这个结果已经放大2m倍,所以我们需要将得到的结果在比特操作层面右移m位,得到s1(a-b)的近似。然后我们将得到的结果与进行带符号数的加法,得到s1(a-b)+s2的带符号整数近似。

另外,神经网络解码器的每个隐含层之后还可以包括激活函数层,该激活函数层可以按照上文的模型设计规范使用relu激活函数,用于对隐含层的输出参数进行如下处理:获取输出参数的符号位;若符号位指示输出参数为正数,则保留输出参数的各个比特位的数值不变;若符号位指示输出参数为负数,则将输出参数的各个比特位的数值置零。

在一个示例中,假设a=4,b=8,以8位2进制表示的话,分别是a=00000100,b=00001000。a-b<0,但这两个是无符号数,而且后续需要处理的数会大于8位的表示范围,所以这里我们将这两个数先拓展到更多位表示的带符号位数。以拓展到16位为例,a=0000000000000100,b=0000000000001000。这里a和b不再是无符号数,而是看做是2的补码(two'scomplement)带符号表示,第一位为符号数(0为正,1为负)。这样,a-b=-4表示为1111111111111100,这是一个带符号数。然后,relu层只需要根据第一位是0还是1决定输出:第一位为0则表示结果大于0,保留原来的结果,第一位为1则表示结果小于等于0,将所有比特全部重置为0。

我们以l=5为例观察量化方案的效果。我们选取标准的8位定点量化方案。这里,总共6个模型,每一个模型总共有4层,包括1个卷积层和3个全连通层。对卷积层,我们设定m=8,对全连通层,设定m=16。m的设定具有一定的任意性,具体数值需要看性能损失情况而定。另外,对不同的物理错误率,输入输出层的统计性质都不一样,所以我们需要使用针对特定的错误率来确定s1和s2。

为了定量测试量化的影响,我们选定三个标定数据集,分别对应p=0.001,0.0015,0.002,样本集大小为20000,用以确定s1和s2的数值。相应地,我们也选取三个测试集,规模在40000左右。测试结果如图17所示,与32位浮点数相比,8位定点数的预测精度损失对8个模型都非常小,错误率在平均情况上升10%,在可以接受的范围内。在p较小时,错误率精度损失相对较大,这可能和此时能得到的非零样本点较少,s1和s2方差较大有关。所以后续可以考虑在p值较小时使用饱和量化进行改进。

综上所述,本申请实施例提供的技术方案,对于采用神经网络解码器进行量子纠错解码的系统,通过对该神经网络解码器进行规范化处理,使其核心运算为经数值量化处理得到的无符号定点数的乘积累加运算,从而最大程度地减少神经网络解码器所需的数据量和计算量,以更好地满足实时纠错的要求。

另外,神经网络解码器原则上可以模拟任意容错纠错解码算法,并在模型结构优化后逼近原解码器的性能,且所有运算均为矩阵运算,适合大规模并行化。

下面,对神经网络解码器在硬件芯片(如fpga/asic)上的运行过程进行介绍说明。

确定量化方案之后,我们就可以将神经网络解码器分别部署到fpga/asic。为了最大程度地利用硬件资源,对每一个fpga/asic,我们只允许最多部署一个神经网络解码器。由于所有的神经网络解码器的结构都是一样,所以完成一个模型的部署后,其他模型的部署也可以以同样的方式完成。

按照模型规范,每一个模型只有3维卷积层和全连通层,其运算规则如图18所示。由于这两种运算的核心都是向量内积,且需要大量重复应用输入数据,可以通过批量复制输入数据与模型参数做乘积累加来最大化并行度。在原则上,如果可供使用的计算资源是无限的,每一个3维卷积层和全连通层的乘法都可以在一次乘法周期之内完成,那我们最快可以在k个乘法计算周期内完成模型推理,这里k是模型的层数。

但是真实情况下,计算资源是有限的,尤其是昂贵的乘法计算资源。以fpga为例,片上的dsp(digitalsignalprocessor,数字信号处理器)一般可以提供数千个8位定点计算器,也就是最多同时进行数千次8位乘法运算。考虑到走线的限制,同时进行乘法运算的资源还将进一步降低。而我们的神经网络解码器需要数百万次8位乘法计算。由于总计算量是固定的,且所有计算的类型也是固定的,为了缩短计算时间,需要尽量将片上的计算资源同时使用。

另一方面,我们也需要考虑计算架构的通用性。即我们的架构需要可以实现不同的架构模型。这一点尤其是在使用asic时最为重要——如果只能实现一种结构的模型,那一旦我们需要切换系统(例如根据具体的噪声需求更改模型的结构,超参数等),那么根据新的系统/噪声模型,则需要再一次进行前后端更新和流片,时间和物料成本非常昂贵。下面本申请提出一个通用的全复用并行运算架构,加速模型的推理运算。我们也会看到,当可以使用的片上内存足够多时,该架构原则上可以并行化加速运行任意如上规范的模型。

首先,我们之前已经注意到整个计算过程都可以分解成多步向量的内积。结合量化内积运算之前已经给出:

这里,s1,s2,qw,w0,在模型给定(训练完成),并经过测试集校准s1和s2之后,都是确定的值,与具体输入无关。这些数值需要事先存储于片上内存,方便在需要进行内积时,从片上内存相应的位置进行快速读取(延迟在一个时钟周期,数纳秒)。a和b两项的计算互不依赖,可以同时进行。其中,a包含的乘法数目最多,占据主要的计算资源。b与a相比,计算量可以忽略。由于我们无法在一个周期内把一层的所有运算完成,我们同时只能完成其中部分内积运算,甚至是同时完成内积运算的一部分乘法运算和累积。这种内积的计算步骤可以包括三步,即数据内存读取参数(read,简称“r”),乘积累加(multiplicationaccumulation,简称“ma”),量化截取(quantization,简称“q”)。所以我们可以将这三步流水线化,并将每一层输出结果存于片上寄存器,如图19所示。

在示例性实施例中,如图19所示,解码芯片的整个体系结构包括:片上内存(on-chipmemory)、控制单元(controlunit)和算术计算模块(arithmeticmodule)。

片上内存用于存储神经网络解码器的参数信息,包括上文介绍的既定参数(如包括s1,s2,qw,w0等,图19中sc代表除qw之外的既定参数,如s1,s2等)以及模型结构信息(modelspecs,包含模型的各种超参数)。这些数据都是静态的,所以可以在整个量子计算过程开始前从上位机pc(personalcomputer,个人计算机)载入到片上内存。

控制单元用于控制算术计算模块从片上内存中读取上述参数信息。

算术计算模块用于从片上内存中读取上述参数信息(也即r),基于上述参数信息执行乘积累加运算(也即ma),以及基于乘积累加运算的结果,计算神经网络解码器的隐含层的输出参数(也即q)。例如,在进行内积运算得到输出参数时,通过从片上内存中获取既定参数,既定参数是指取值不受输入参数影响的参数,如包括s1,s2,qw,w0等,基于该既定参数以及量化后权重向量和量化后输入向量的内积,得到无符号定点数形式的输出参数。

算术计算模块中r,ma,q三部分采用流水线方式执行,分别从内存和上一级的输出读取数据,进行乘积累加,量化输出,并将输出结果存储于片上临时寄存器(register)。算术计算模块需要充分利用所有的片上乘法和加法资源,这需要将上一层的输出数据扇出(fanout)复制到模块内的不同乘法单元和加法单元。由于读取的流水线结构,从片上内存读取造成的延时可以忽略不计。内存中的模型结构参数(层数,每一层的权重、偏置数目等)会初始化到控制单元,用以判断每一层模型网络的计算周期,并在一层网络计算完成后,通知数据选择器从多个内存通道中甄选出相应的网络层的数据传送到算术计算模块并切换输出寄存器为下一层的输入寄存器。由于我们的模型都是浅层的,控制电路自身的复杂性不会随着模型复杂度的增加而快速增加,所以适用于大型模型。另一方面,在模型较为简单的情况下,这种全复用架构可能会增加额外复杂度的同时带来的益处有限。因此考虑具体情况,我们使用的实用的架构会因地制宜地在图19的基础上进行修改。我们也可以将最多两级网络的算数运算串联成一条流水线,这样可以减少层与层之间数据等待造成的延迟(下一层的输入需要等待上一层的计算结果,此时无法进行计算,造成片上计算资源的浪费)。但是由于数据的依赖性,在同一时间,我们最多只可以将两层网络的流水线串起来,形成一条更长的流水线,见图19。具体如何分配计算资源到流水线的各个部分也需要根据不同模型的超参数进行调整,但是这个资源的具体分配也由控制单元来决定,是可编程的。

如图20,本申请一示例性实施例还提供了一种容错量子纠错系统,该容错量子纠错系统包括:量子电路、qcp220、awg230、daq240,以及包括多个纠错芯片251的量子纠错解码系统250。

awg230用于向量子电路发送用于错误症状测量的测量波形。

daq240用于采集经量子电路放大后的测量波形,对采集到的测量波形进行解调得到量子电路的错误症状信息,向qcp220发送错误症状信息,该错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列。

qcp220用于将错误症状信息发送给量子纠错解码系统250中的多个纠错芯片251。

纠错芯片251用于运行经规范化处理后的神经网络解码器对错误症状信息进行解码处理,得到错误结果信息,该错误结果信息用于确定量子电路中发生错误的量子比特以及相应的错误类型;其中,神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

在示例性实施例中,纠错芯片251还用于向qcp220发送错误结果信息。

qcp220还用于基于错误结果信息,向awg230发送纠错指令,该纠错指令中包括发生错误的量子比特的位置信息以及相应的错误类型。

awg230还用于基于纠错指令,向量子电路发送纠错波形,该纠错波形用于纠正量子电路中发生错误的量子比特。

可选地,以下至少一组通信采用lvds(低电压差分信号):

1、qcp和awg之间的通信。具体来讲,是qcp的硬件芯片(如fpga)和awg的硬件芯片(如fpga)之间。

2、qcp和daq之间的通信。具体来讲,是qcp的硬件芯片(如fpga)和daq的硬件芯片(如fpga)之间。

3、qcp和纠错芯片之间的通信。具体来讲,是qcp的硬件芯片(如fpga)和纠错芯片(如fpga)之间。

在本申请实施例中,通过使用lvds标准来降低系统整个信号传输链路延时。由于整个纠错系统对延时有非常高的要求,几乎不可能使用任何现有的高速通信协议框架来进行数据传输,因为这些协议虽然可以达到很高的数据率(使用高速serdes的协议可以达到20gbps以上的速度),但数据在传输时会在发送和接收端都需要经过通信协议的转换。如果传输的数据量很大,那么这些协议层的开销就会变得可以忽略不计,但对于量子纠错这种单次数据在几十bit量级的传输而言,数百纳秒的协议开销是不可接受的。因此我们使用lvds标准来进行信号传输,可以达到较高的速率且允许多对同时传输,不会在协议层产生额外的延时,使得整个反馈链路信号传输延时可以满足要求。

下面,对每一步所使用的lvds通道数与速率进行示例性介绍说明:

1、从daq的adc(analogtodigitalconverter,模数转换器)至daq的fpga:adc将量子电路返回的测量波形转换为数字信号,传给fpga进行处理以得到量子比特的测量结果。本系统中使用的adc规格为12bit分辨率,1gbps数据率,因此每块adc至fpga使用了12对lvds,运行在500mhz,每次传输5个点,单次传输需要5ns。

2、从daq的fpga到qcp的fpga:每块daq的fpga的单次传输数据大小为40bit,由以下几部分组成:一块fpga会产生四组测量结果,每组测量结果包括8个qubit,每个qubit的状态可以用1bit来表示(每个qubit测量后仅有0和1两种不同的态),同时每次传输需要8bit的传输头,用来指示有效操作等,即:

40bit=8bit(header)+8(qubits)×4(group)×1(bit)

每块daq的fpga至qcp的fpga使用了8对lvds线,传输时钟频率为200mhz,完成单次传输需要15ns时间。

3、qcp的fpga与纠错芯片的双向传输:两次传输基本同上。

4、从qcp的fpga至awg的fpga:qcp传给awg的数据是波形选择码,即告诉awg从存储中选择何种波形(量子操作)发送出去。qcp的fpga到每块awg的fpga的单次传输数据大小为48bit,由以下几部分组成:每块awg的fpga有8个模拟通道,每个通道存储32种波形,即5bit大小的波形选择码,同样每次传输需要8bit传输头,即:

48bit=8bit(header)+8(channel)×5(bits)

qcp的fpga至每块awg的fpga使用了8对lvds线,传输时钟频率为200mhz,完成单次传输需要15ns时间。

5、从awg的fpga至awg的dac(digitaltoanalogconverter,模数转换器):awg发送纠错波形数据至dac转换为模拟波形(即纠错波形),并最终作用于量子电路。本系统使用的dac规格为16bit分辨率,2gbps传输率,因此fpga至每块dac使用了32对lvds,运行在500mhz,一次传输十个点的数据,需要花费10ns时间。

补充几点说明:首先可以看到,这套系统中会把所有测量结果先传回至qcp,再由qcp传至纠错芯片。显然,这里直接把测量结果传至纠错芯片会节省一定时间,但这样做会要求每块daq的fpga多增加32对lvds连线,会导致目前使用的fpga的管脚资源不够使用。此外,本系统中fpga之间的数据传输的lvds频率要低于da/ad至fpga之间的lvds频率,这是因为在硬件实现时,因为不同模块间的物理距离,fpga之间的pcb(printedcircuitboard,印刷电路板)走线较长,如果频率太高可能会出现数据错位等情况,因此目前先采用了保守的200mhz。

同时上面计算的时间是数字逻辑传输lvds数据所需的时间,信号实际在pcb线上传输的时间并未计算进去,但经实际测算,最远的fpga之间传输数据也只需2~3ns的走线耗时,因此被包含进了接收端的逻辑耗时中,无需再单独计算。

可以发现,一套测控系统所需要的模拟通道数(awg和daq模块)是随着量子电路上包含的比特数量的增长而线性上升的,而模拟通道数的增多,也意味着lvds传输线数量的上升。当前量子测控系统中主要使用fpga来实现各模块的数字逻辑,而fpga只能提供有限数量的管脚,这也导致了一块qcp对应的fpga能控制的模拟通道数量有着限制。同时,qcp上运行的量子指令集同样面对着量子指令处理速度的问题,因此当需要控制的量子比特数上升时,qcp的控制能力面临着瓶颈。

当量子比特数量不是特别多时(约几十上百比特),我们可以使用一套中央式架构来进行控制;当需要控制更多的量子比特时(约数百上千),我们需要从架构上解决qcp面临的可扩展性问题。这里的架构设计主要涉及到量子指令集相关的内容,这里不是本申请的保护内容,不再展开说明。

下面,我们给出一个具体的示例,对本申请技术方案进行介绍说明。

我们以l=5为例,实现基于神经网络解码器的容错量子纠错系统,并计算解码延迟。具体需求如下:

目前,l=5的实时反馈纠错算法共有6个神经网络解码器,每个解码器包含4个隐含层(也可称为矩阵乘网络):

第一层为500个6×4×3的矩阵与1个10×4×3矩阵的卷积;10×4×3矩阵为0,1态判断结果(输入症状比特);6×4×3矩阵为权重(weight);

第二层矩阵为1个2000×400的矩阵与1个2000的向量的乘积;

第三层矩阵为1个400×80的矩阵与1个400的向量的乘积;

第四层矩阵为1个80×64的矩阵与1个64(或2)的向量的乘积;

每层的计算结果都要进行量化截断,处理成8bit无符号定点数据。

实现方案如下:

采用intelstratix10系列fpga芯片来实现神经网络算法;该fpga芯片包含5760个dspip(乘法器ip)资源,最多支持11520个int8(8位整数)乘法。

每个fpga芯片可以实现一个神经网络解码器;整个系统共6个神经网络解码器,需要6片fpga芯片;由于l=5,神经网络解码器只有4层,且最后两层的计算量非常小,完全使用上文介绍方案将使用较为复杂的控制电路,消耗片上资源的同时不会带来更多的并行度,在目前情况下得不偿失。因此本实现实例没有完全照办上文所述的全复用方案,而是采用了每层矩阵运算都有自己的专用电路的方案。

方案框图参见图21所示。每一层网络的输入包含三部分,分别是:

1、上一层网络的计算结果(第一层网络的对应输入为量子比特的态判断结果);

2、权重参数(通过上位机进行配置);

3、量化截断数据(通过上位机进行配置);

其中,权重参数和量化截断数据在启动计算之前,通过上位机配置到片上存储资源中;在接收到态判断结果后,启动计算。

第1层网络与第2层网络计算过程形成流水处理。

第3层网络与第4层网络计算过程形成流水处理。

由于每个fpga芯片同时最多支持11520个int8乘法,而每个神经网络解码器共有1.2m次乘法,因此,需要考虑将11520个int8乘法分配给4层网络,或者说,要考虑每层网络在每个时钟周期内的计算次数。分配原则如下:

1、dspip资源使用率最大;

2、总的计算延时最小;

3、fpga芯片布线通过。

可选择分配策略如下表1所示,表中数据为预估值。

表1

根据上述3个原则,最终使用了方案二所指定的分配策略。

第一层网络中,由于10×6×3矩阵的数据是1bit,所以乘法运算可以使用普通逻辑资源实现,而不需要使用dspip。由于第2层网络计算过程与第1层网络计算过程形成流水处理,所以第2层网络计算的时间可以认为是0。第3层和第4层网络计算亦然。

最终,整个网络模型计算时间为1010纳秒。

该实现已经在实际板卡上验证通过。

具体验证方法为:分别向该电路及pc程序输入相同的数据和参数,比对两者的输出;实测发现,两者输出一致。

总结来说,容错纠错是通往大规模通用量子计算的必经之路,是基础性技术。本申请提供的技术方案使得将浅层神经网络容错解码算法布置于fpga高速反馈控制系统,实现实时容错解码(总延迟1.2us左右,替换最新的对神经网络算子优化的fpga有望将延时进一步减少到700ns左右),较已知mwpm方案减少约10000倍(单核3.7ghzintelxeoncpu)左右,较最优化mwpm约20倍以上的缩短达成实时纠错的要求,具有重大技术意义。

另外,本申请一示例性实施例还提供了一种量子纠错解码方法,该方法可以包括如下步骤:

1、获取量子电路的错误症状信息,该错误症状信息是由量子纠错码的稳定子生成元的本征值构成的数据阵列;

2、运行经规范化处理后的神经网络解码器对错误症状信息进行解码处理,得到错误结果信息,该错误结果信息用于确定量子电路中发生错误的量子比特以及相应的错误类型;

其中,神经网络解码器的核心运算为经数值量化处理得到的无符号定点数的乘积累加运算。

对于方法实施例中未详细说明的细节,可参考上述其他实施例中的介绍说明,此处不再赘述。

另外,本申请一示例性实施例还提供了一种纠错芯片,该纠错芯片用于实现上述量子纠错解码方法。

需要说明的是,在上文实施例介绍中,主要以旋转表面码为例,但本申请技术方案可以拓展到其他有边界的表面码,以及拓展到其他拓扑量子纠错码,包括但不限于高维圆环面码(highdimensiontoriccode),双曲面码(hyperboliccode)及颜色码(colorcode)等。但是在使用其他拓扑量子纠错码时,在症状测量时(奇偶校验时)需要使用类似one-shot或者flagqubit的技术,增加方案的复杂性,并可能会降低纠错性能。另外,上文实施例主要以超导量子计算平台为例,但是由于算法的通用型,本申请可以适用于任何使用拓扑量子纠错码的量子计算物理平台。

另外,当使用缠绕空洞等方法实现clifford(克里福德)进行量子计算时,本申请技术方案在做修改后同样可以适用。当使用晶格手术方案(latticesurgery)实现逻辑量子门时,本申请技术方案在做修改后也可以适用。由于可以适用于对实现逻辑clifford门进行纠错,本申请也同样适用于进行魔法态蒸馏(magicstatedistillation)。这样本申请的控制系统可以对使用拓扑量子纠错码的通用容错量子计算进行实时反馈纠错。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。

以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1