发明内容
本发明的目的在于克服上述的不足,提供一种变分量子算法线路的并行训练方法及存储介质,以提高变分量子算法线路的训练效率。
本发明的第一方面,提供了一种变分量子算法线路的并行训练方法,应用于呈星型拓扑网络布置的中央计算节点和一组量子计算节点,所述方法包括:
步骤一:每个量子计算节点均获取待训练的变分量子算法VQA线路的线路信息,以使得各个量子计算节点根据该线路信息建立VQA线路;
步骤二:中央计算节点根据量子计算节点数量M,将VQA线路中的参数划分为M个部分;将所有参数的初始值发送给每一量子计算节点,并发送计算第i部分参数
对应的梯度的指令至第i个量子计算节点,i为小于或等于M的正整数;
步骤三:每个量子计算节点响应于对应的所述指令,利用初始值更新本地的VQA线路的参数值,运行所述VQA线路,并基于参数位移算法计算所述VQA线路的运行结果相对于参数
的梯度/>
,基于所述梯度/>
计算预设损失函数相对于参数/>
的梯度
;
步骤四:中央计算节点聚合所有的梯度
,利用自适应矩阵估计优化器对VQA线路的参数进行更新;
步骤五:中央计算节点将更新后的参数值发送至其中一个量子计算节点,测试VQA线路是否收敛,若收敛则停止计算,将当前参数值作为最优参数值以得到优化后的VQA线路,若不收敛,则返回步骤二,继续迭代训练,此时将更新后的参数的参数值代替所述初始值发送至各个量子计算节点以更新各个量子计算节点的VQA线路。
可选地,所述基于所述梯度
计算预设损失函数相对于参数/>
的梯度/>
,包括:
应用链式法则基于梯度
计算预设损失函数相对于参数/>
的梯度/>
;
基于梯度
和公式/>
更新中间梯度/>
,其中,
初始值为0;
建立全为0的Mask向量,所述Mask向量的元素数量与
中分量数量相同;
对于
中的第j个分量,如果该分量的绝对值大于阈值,则令Mask向量中第j个元素的值为1,遍历/>
中的每个分量,得到最终的Mask向量,j为小于或等于/>
中分量数量的正整数;
针对所述梯度
中每一个分量,将该分量与所述Mask向量中对应位置的元素相乘,得到梯度/>
。
可选地,所述针对所述梯度
中每一个分量,将该分量与所述Mask向量中对应位置的元素相乘之后,所述方法还包括:
对所述Mask向量取反;
将取反后的Mask向量中的每一元素与所述梯度
中对应分量相乘,以得到更新后的梯度/>
参与下一次所述公式/>
的运算。
可选地,所述方法还包括:在返回执行所述步骤二时,停止发送计算第i部分参数
对应的梯度的指令至第i个量子计算节点,发送计算第i部分参数/>
对应的梯度的指令至第k个量子计算节点,其中,k=(i+1) mod M。
可选地,所述步骤一中的每个部分参数通过对整个参数集合切片得到。
可选地,所述运行所述VQA线路之前,所述方法还包括:
基于如下等式中的至少一者从量子计算节点的量子比特中搜索符合要求的量子比特:
其中,DM[x,y]是量子比特x和量子比特y之间的最小距离,RM[x,y]是量子比特x和量子比特y之间的最可靠路径,m[y]是量子比特y的测量可靠性,S为搜索到的量子比特集,C为候选量子比特集;
将搜索到的符合要求的量子比特分组,以用于运行所述VQA线路。
可选地,所述量子比特分组的数量根据每个量子计算节点的噪声率以及所述VQA线路所需的量子比特数量进行确定。
可选地,所述中央计算节点和量子计算节点通过经典通信技术或量子通信技术通信。
可选地,所述的各个量子计算节点包括离子阱量子计算机、半导体量子计算机、超导量子计算机和光量子计算机中的一种或多种。
本发明的第二方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
基于上述技术方案,变分量子算法线路的训练基于中央计算节点和一组量子计算节点实现,每个量子计算节点获取线路信息建立VQA线路,中央计算节点将VQA线路中的参数分组,然后将参数分发给多个量子计算节点,并发送指令指示量子计算节点计算梯度,使得多个量子计算节点同时参与训练任务。之后中央计算节点聚合所有量子计算节点计算的该梯度,并利用优化器更新VQA线路的参数,最后通过测试后得到最终优化后的VQA线路。通过将参数分发给多个量子计算节点并行执行训练任务,使得训练任务被分割后由多个量子计算节点同时分别执行一部分,进而提高了VQA线路的训练效率。
具体实施方式
下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
图1是根据一示例性实施例示出的一种并行量子计算系统的示意图,包括呈星型拓扑网络布置的中央计算节点和一组量子计算节点,即以中央计算节点为中心,使用单独的线路将中央计算节点与各个量子计算节点连接。参见图1,该系统包括中央计算节点110和本地的量子计算节点121、量子计算节点122、量子计算节点123,中央计算节点可以为实现经典计算的服务器,量子计算节点可以为量子计算机。所述中央计算节点和量子计算节点通过经典通信技术或量子通信技术通信,具体地,经典通信技术可以包括4G,5G,TCP/IP等无线通信技术,量子通信技术可以包括基于BB84等量子密钥分发协议实现的通信技术,本发明对此不做具体限制。在一种实施方式中,中央计算节点数量为1个,量子计算节点的数量为多个,可以视具体训练场景来决定。
在一种实施方式中,所述的各个量子计算节点包括离子阱量子计算机、半导体量子计算机、超导量子计算机和光量子计算机中的一种或多种,以提供系统的兼容性,方便将第三方的量子计算机接入系统进行计算。例如量子计算节点121为离子阱量子计算机、量子计算节点122为超导量子计算机、量子计算节点123为光量子计算机,在另一种实施方式中,三个量子计算节点均为超导量子计算机。
在一种实施方式中,量子计算机是混合结构的,它包含两大部分:一部分是经典计算机,负责执行经典计算与控制;另一部分是量子设备,负责运行量子程序进而实现量子计算。而量子程序是一串能够在量子计算机上运行的指令序列,实现了对量子逻辑门操作的支持,并最终实现量子计算。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。
在实际应用中,因受限于量子设备硬件的发展,通常需要进行量子计算模拟以验证量子算法、量子应用等等。量子计算模拟即借助普通计算机的资源搭建的虚拟架构(即量子虚拟机)实现特定问题对应的量子程序的模拟运行的过程。通常,需要构建特定问题对应的量子程序。本发明实施例所指量子程序,即是经典语言编写的表征量子比特及其演化的程序,其中与量子计算相关的量子比特、量子逻辑门等等均有相应的经典代码表示。
量子线路作为量子程序的一种体现方式,也称量子逻辑电路,是最常用的通用量子计算模型,表示在抽象概念下对于量子比特进行操作的线路,其组成包括量子比特、线路(时间线)、以及各种量子逻辑门,最后常需要通过量子测量操作将结果读取出来。
不同于传统电路是用金属线所连接以传递电压信号或电流信号,在量子线路中,线路可看成是由时间所连接,亦即量子比特的状态随着时间自然演化,在这过程中按照哈密顿运算符的指示,一直到遇上逻辑门而被操作。
一个量子程序整体上对应有一条总的量子线路,本发明所述量子程序即指该条总的量子线路,其中,该总的量子线路中的量子比特总数与量子程序的量子比特总数相同。可以理解为:一个量子程序可以由量子线路、针对量子线路中量子比特的测量操作、保存测量结果的寄存器及控制流节点(跳转指令)组成,一条量子线路可以包含几十上百个甚至成千上万个量子逻辑门操作。量子程序的执行过程,就是对所有的量子逻辑门按照一定时序执行的过程。需要说明的是,时序即单个量子逻辑门被执行的时间顺序。
需要说明的是,经典计算中,最基本的单元是比特,而最基本的控制模式是逻辑门,可以通过逻辑门的组合来达到控制电路的目的。类似地,处理量子比特的方式就是量子逻辑门。使用量子逻辑门,能够使量子态发生演化,量子逻辑门是构成量子线路的基础,量子逻辑门包括单比特量子逻辑门,如Hadamard门(H门,阿达马门)、泡利-X门(X门,泡利X门)、泡利-Y门(Y门,泡利Y门)、泡利-Z门(Z门,泡利Z门)、RX门(RX旋转门)、RY门(RY旋转门)、RZ门(RZ旋转门)等等;多比特量子逻辑门,如CNOT门、CR门、iSWAP门、Toffoli门等等。量子逻辑门一般使用酉矩阵表示,而酉矩阵不仅是矩阵形式,也是一种操作和变换。一般量子逻辑门在量子态上的作用是通过酉矩阵左乘以量子态右矢对应的向量进行计算。例如,量子态右矢|0>对应的向量可以为
,量子态右矢|1>对应的向量可以为/>
。
本发明提供了一种变分量子算法线路的并行训练方法,应用于如图1所示的呈星型拓扑网络布置的中央计算节点和一组量子计算节点,参见图2,该方法包括:
步骤一:每个量子计算节点均获取待训练的变分量子算法VQA线路的线路信息,以使得各个量子计算节点根据该线路信息建立VQA线路;
步骤二:中央计算节点根据量子计算节点数量M,将VQA线路中的参数划分为M个部分;将所有参数的初始值发送给每一量子计算节点,并发送让第i个量子计算节点计算第i部分参数
的梯度的指令,i为小于或等于M的正整数;
步骤三:每个量子计算节点响应于对应的所述指令,利用初始值更新本地的VQA线路的参数值,运行所述VQA线路,并基于参数位移算法计算所述VQA线路的运行结果相对于参数
的梯度/>
,基于所述梯度/>
计算预设损失函数相对于参数/>
的梯度/>
;
步骤四:中央计算节点聚合所有的梯度
,利用自适应矩阵估计优化器对VQA线路的参数进行更新;
步骤五:中央计算节点将更新后的参数值发送至其中一个量子计算节点,测试VQA线路是否收敛,若收敛则停止计算,将当前参数值作为最优参数值以得到优化后的VQA线路,若不收敛,则返回步骤二,继续迭代训练,此时将更新后的参数的参数值代替所述初始值发送至各个量子计算节点以更新各个量子计算节点的VQA线路。
在步骤一中,变分量子算法VQA线路的线路信息包括VQA线路(即变分量子算法线路)的量子比特的数量等信息,以及施加于各个量子比特的量子逻辑门的种类、顺序和数量等信息,根据线路信息可以构建VQA线路。
可以由量子计算节点获取中央计算节点发送的线路信息,当然量子计算节点也可以通过其他方式获取线路信息,例如通过移动存储设备将线路信息导入至量子计算节点,对此本发明不做限制。
步骤一执行完成后,进入执行步骤二,在步骤二中,中央计算节点将VQA线路中的参数
划分为M部分(M为量子计算节点的数量),/>
;其中每个部分参数/>
通过对整个参数集合切片得到,即/>
,d为参数总数。
参数划分好后,对于每一个量子计算节点,中央计算节点均发送所有参数的初始值,并对应发送指令,将计算第1部分参数
对应的梯度的指令发送至第1个量子计算节点,将计算第2部分参数/>
对应的梯度的指令发送至第2个量子计算节点,对应其他量子计算节点依次类推,以保证每个指令均被发送至一个量子计算节点。
步骤二执行完成后,进入执行步骤三。在步骤三中,量子计算节点接收初始值和指令后,利用初始值更新自己本地的VQA线路的参数值,对于第i个量子计算节点,分别运行两次,第一次运行时,将其分配的参数
加上一个偏置量s,得到输出结果/>
,第二次运行时,将其分配的参数/>
减去一个偏置量s,得到输出结果/>
。然后,基于参数位移算法计算VQA线路运行结果f相对于参数/>
的梯度:
举例来讲,第1个量子计算节点分配的参数
具体包括3个参数a、b、c,则可以先针对第一个参数a,将其加上偏置量s运行一次,然后减去偏置量运行一次,再根据上述公式计算f相对于a的梯度,然后按照相同的方法计算f相对于b和c的梯度,进而得到f相对于参数
的梯度。
之后根据预设损失函数的计算公式,基于链式法则计算该预设损失函数相对于参数
的梯度/>
。例如计算预设损失函数相对于VQA线路运行结果f的梯度,再根据链式法则将预设损失函数相对于VQA线路运行结果f的梯度与f相对于参数/>
的梯度/>
相乘,即得到预设损失函数相对于参数/>
的梯度/>
,当然也可以采用其他方式计算,例如对计算过程做一些优化。预设损失函数可以根据实际情况选择,例如可以为均方差损失函数或交叉熵损失函数。
步骤三执行完成后,进入执行步骤四,在步骤四中,每个量子计算节点将自己计算出的预设损失函数相对于参数
的梯度/>
发送至中央计算节点,使得中央计算节点聚合所有的梯度/>
,然后利用自适应矩阵估计优化器(Adam,Adaptive momentestimation)根据梯度/>
进行计算,以对VQA线路的所有参数进行更新。
步骤四执行完成后,进入执行步骤五,在步骤五中,中央计算节点选择某一个量子计算节点,将更新后的参数值发送给该量子计算节点,以使得该量子计算节点利用该参数值更新本地的参数,然后运行本地的VQA线路得到运行结果,用于判断VQA线路是否收敛,具体地,可以计算本次测试过程得到的VQA线路的运行结果与上次测试过程得到的VQA线路的运行结果之间的差值,若差值小于阈值,则判定VQA线路收敛。
若判定VQA线路收敛,则停止包括整个训练过程在内的计算,将当前的参数值即本次计算过程得到的参数值作为最优参数值,利用最优参数值作为VQA线路的参数值,得到优化后的VQA线路。
若判定VQA线路不收敛,则返回步骤二,重复上述过程,进行迭代训练,在返回执行步骤二时,将更新后的参数值代替初始值,发送给每一个量子计算节点,而不再发送初始值,以继续参数值的更新计算,每个量子计算节点利用接收的更新后的参数值来更新本地的参数,得到新的VQA线路并开始新一轮的计算过程,直至最后得到收敛的VQA线路为止。
基于上述技术方案,变分量子算法线路的训练基于中央计算节点和一组量子计算节点实现,每个量子计算节点获取线路信息建立VQA线路,中央计算节点将VQA线路中的参数分组,然后将参数分发给多个量子计算节点,并发送指令指示量子计算节点计算梯度,使得多个量子计算节点同时参与训练任务。之后中央计算节点聚合所有量子计算节点计算的该梯度,并利用优化器更新VQA线路的参数,最后通过测试后得到最终优化后的VQA线路。通过将参数分发给多个量子计算节点并行执行训练任务,使得训练任务被分割后由多个量子计算节点分别同时执行一部分,进而提高了VQA线路的训练效率。
可选地,在步骤三中,基于所述梯度
计算预设损失函数相对于参数/>
的梯度
,包括:
S301,应用链式法则基于梯度
计算预设损失函数相对于参数/>
的梯度
;
S302,基于梯度
和公式/>
更新中间梯度/>
,其中,/>
初始值为0;
S303,建立全为0的Mask向量,所述Mask向量的元素数量与
中分量数量相同;
S304,对于
中的第j个分量,如果该分量的绝对值大于阈值,则令Mask向量中第j个元素的值为1,遍历/>
中的每个分量,得到最终的Mask向量,j为小于或等于
中分量数量的正整数;
S305,针对所述梯度
中每一个分量,将该分量与所述Mask向量中对应位置的元素相乘,得到梯度/>
。
在步骤S301中,计算VQA线路的运行结果相对于参数
的梯度/>
后,可以计算预设损失函数相对于VQA线路的运行结果的梯度,然后根据链式法则将两个梯度相乘得到预设损失函数相对于参数/>
的梯度/>
,为了降低通信带宽,在保证一定训练准确度的情况下提高中央计算节点与量子计算节点的通信效率,后续对梯度/>
进行优化。
梯度
计算完成后,进入执行步骤S302,在步骤S302中,将/>
加上计算出的梯度/>
,再将计算结果替代原本的/>
作为新的中间梯度/>
,/>
初始值为0,即第一次参与加法计算的/>
的值为0。
步骤S302执行完成后,进入执行步骤S303。在步骤S303中,建立Mask向量,该向量为0向量,其元素全为0,且Mask向量的元素数量与
中分量数量相同,便于后续运算。
Mask向量建立好后,进入执行步骤S304,在步骤S304中,将中间梯度
的分量也即其向量中的元素的绝对值与阈值比较,对于第j个分量,如果该分量的绝对值大于阈值,则令Mask向量中第j个元素的值为1,否则保持不变仍然为0,遍历/>
中的每个分量进行该比较运算,得到最终的Mask向量。
步骤S304执行完成后,进入执行步骤S305,将梯度
中每一个分量与Mask向量中对应位置的元素相乘,得到梯度/>
,例如将梯度/>
中第1个分量与Mask向量中第1个元素相乘,第2个分量与第二个元素相乘,其余的依次类推进行逐元素乘法,得到梯度
作为预设损失函数相对于参数/>
的梯度参与后续训练过程。具体运算公式如下:
通过将梯度中绝对值较小的分量置0,减小了用于传输至中央计算节点的梯度的信息量,使得梯度稀疏,进而减少了中央计算节点与量子计算节点的通信带宽,提高了通信效率,节约了通信成本,且保留了数值较大的分量,保证了训练的方向总体正确。
可选地,针对所述梯度
中每一个分量,将该分量与所述Mask向量中对应位置的元素相乘之后,也即步骤S305之后,所述变分量子算法线路的并行训练方法还包括:
对所述Mask向量取反;
将取反后的Mask向量中的每一元素与所述梯度
中对应分量相乘,以得到更新后的梯度/>
参与下一次所述公式/>
的运算。
具体来讲,梯度
计算完成后,梯度/>
的部分分量被舍弃,未参与之前的训练过程,为了使得舍弃部分参与后续训练,先对S304中计算出的Mask向量取反,即将该Mask向量中的0变为1,1变为0。然后将取反后的Mask向量中的每一元素与所述梯度/>
中对应分量相乘,即将相同位置的元素与分量相乘,得到更新后的梯度/>
。如此,可以将上一次被舍弃的梯度/>
的分量加入到下一次计算,进而提高对梯度信息的利用,有利于训练效率的提升。可以采用如下公式计算:
其中,
表示对Mask向量取反,/>
表示逐元素乘法。
可选地,所述变分量子算法线路的并行训练方法还包括:在返回执行所述步骤二时,停止发送计算第i部分参数
对应的梯度的指令至第i个量子计算节点,发送计算第i部分参数/>
对应的梯度的指令至第k个量子计算节点,其中,k=(i+1) mod M。
具体来讲,在下一次迭代返回执行步骤二时,采用交替训练策略,将分配给各个量子计算节点的参数顺序移动一位,使得每个量子计算节点对不同于上次迭代过程的参数部分进行计算,例如让第2个量子计算节点计算第1部分参数。将
分配给第i个量子计算节点定义为:/>
,则交替训练策略可表示为:/>
。
也就是说,我们对可训练参数和量子计算节点之间的对应关系执行循环移位。交替训练策略与训练过程一起重复,这使得每个参数部分
在整个训练过程中由所有量子计算节点依次训练。当本地量子计算节点之间的噪声差异增加时,由于交替训练策略,变分量子算法并行运算的性能下降相对较小。此外,变分量子算法并行运算的性能变得更稳定,因为不同实验的平均值的方差显著更小。这两个优点表明,该策略可以有效地用于减轻不同本地的量子计算节点之间的大噪声差异的负面影响。
可选地,运行所述VQA线路之前,也即步骤三之前,所述变分量子算法线路的并行训练方法还包括:
基于如下等式中的至少一者从量子计算节点的量子比特中搜索符合要求的量子比特:
其中,DM[x,y]是量子比特x和量子比特y之间的最小距离,RM[x,y]是量子比特x和量子比特y之间的最可靠路径,m[y]是量子比特y的测量可靠性,S为搜索到的量子比特集,C为候选量子比特集;
将搜索到的符合要求的量子比特分组,以用于运行所述VQA线路。
具体来讲,为了在量子计算节点的QPU(Quantum Processing Unit,量子计算单元)上运行量子线路实例,需要将物理量子比特分配给每个逻辑量子比特。可以采用基于FW(Floyd-Warshall)路径搜索算法来计算距离矩阵DM和可靠性矩阵RM,并基于上述等式进行搜索,等式为广度优先搜索算法(BFS,breadth-first search)的变体,一次搜索从一个可用的量子比特开始,这是一个大小为1的子图(S)。然后,它将S扩展到其可用的相邻(候选)量子比特(C),直到其足够大以运行量子线路,之后重复该步骤直至分配得到一定数量的量子比特分组,再在每个量子比特分组上建立相同的VQA实例,以并行运算得到多个测量结果。由于量子线路需要运行多次以得到统计上尽量准确的结果,因此通过在每个量子计算节点的QPU分区并行,加快了训练速度。
上述基于RM[x,y]进行计算的第一个等式优先考虑降低噪声率。基于DM[x,y]进行计算的第二个等式优先考虑电路深度的最小化,它将具有最小距离路径的量子比特添加回子图。如果多个候选量子比特具有相同的距离,则第一个等式中的可靠性可以被用作联络断路器(tie breaker)。一般来讲,距离比可靠性更重要,可最大限度地提高连接性,从而减少所需的交换次数,降低量子线路深度。在一种实施方式中,可以仅基于第一个等式或第二个等式进行量子比特搜索,也可以结合两者,优先用第二个等式进行分组,在第二个等式分组无法进行时,采用第一个等式进行分组。
由于图搜索采用贪婪搜索策略,因此每个连续分配的质量都会下降。QPU上物理量子比特的噪声率将决定可以同时运行多少个实例。VQA线路实例的数量可以由用户指定,或者量子计算节点可以根据问题的大小和可用的量子比特的数量进行有根据的猜测。故量子比特分组的数量可以根据每个量子计算节点的噪声率以及所述VQA线路所需的量子比特数量进行确定。例如噪声率较高时,可以提高分组的数量,以降低噪声影响。
图3是根据一示例性实施例示出的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图3,电子设备1900包括处理器1922,其数量可以为一个或多个,以及存储器1932,用于存储可由处理器1922执行的计算机程序。存储器1932中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1922可以被配置为执行该计算机程序,以执行上述的变分量子算法线路的并行训练方法。具体地,前述并行量子计算系统中的中央计算节点可以被配置为该电子设备1900,以执行上述变分量子算法线路的并行训练方法中中央计算节点所执行的步骤。并行量子计算系统中的量子计算节点为上述混合结构时,其中的经典计算机部分可以被配置为该电子设备1900,以控制量子计算节点执行上述变分量子算法线路的并行训练方法中量子计算节点所执行的步骤。电子设备1900也可以被配置为一个独立于并行量子计算系统的设备,以控制并行量子计算系统执行上述的变分量子算法线路的并行训练方法。
另外,电子设备1900还可以包括电源组件1926和通信组件1950,该电源组件1926可以被配置为执行电子设备1900的电源管理,该通信组件1950可以被配置为实现电子设备1900的通信,例如,有线或无线通信。此外,该电子设备1900还可以包括输入/输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,Unix TM, Linux TM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的变分量子算法线路的并行训练方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1932,上述程序指令可由电子设备1900的处理器1922执行以完成上述的变分量子算法线路的并行训练方法。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。