查看原文
其他

揭开量子计算机外壳,我们看见了什么?

光子盒研究院 光子盒 2021-12-15
光子盒研究院出品


今天我们坐在电脑旁工作时,完全不需要考虑敲打键盘和点击鼠标是如何转化为逻辑运算和电信号的。但在电子计算机发明早期,操作非常复杂。硬件和用户界面的分离是几十年发展的产物。现在量子计算机开发人员正在进行类似的探索。
 
量子计算堆栈是介于用户和物理量子比特之间的一切。堆栈需要具备一些基本功能,必须方便用户交互,将输入转化为硬件操作,并纠正大量错误源。但是,目前还没有一种正确的方法可以将这些任务划分为不同的层次。
 
在美国物理联合会(AIP)旗舰杂志Physics Today的最新一期中,量子技术公司Q-CTRL的Harrison Ball、Michael Biercuk和Michael Hush展示了他们提出的量子计算堆栈。他们将量子计算机分为七层,并详细解释了量子固件层的功能——量子计算机的一个组成部分——对于管理量子比特错误是如何至关重要的。
 
容错量子计算机中的堆栈由对应于软件抽象层次的层组成
 
位于顶层的是量子即服务(QAAS),它代表了用户可以通过云服务进行交互的功能。下一层是量子算法和应用程序,它们使用允许高级抽象的开发工具进行编码。然后,算法和应用程序在第三层编译,在编码块上执行电路。
 
在容错计算中,虽然实现量子纠错(QEC)编码和其他相关任务需要占用一个专用层,但这一操作是在使用QEC的逻辑量子比特上执行的。
 
设备之间的物理连接和对任何杂散耦合的补偿都在硬件感知编译器中考虑。负责最小化硬件错误的量子固件层位于该层和物理硬件之间,它处理硬件校准、调整、表征、稳定和自动化所需的所有任务。
 

经典计算机将信息存储为比特(或位),每个比特的取值为0或1。这些比特的底层是充当开关的场效应晶体管;根据开关是开还是关,每个比特都可以取0或1的值。因此在最基本的层面上,计算机所做的一切——保存信息、执行计算、运行程序——只是用在小电压操纵这几十亿比特的值。
 
相反,量子计算机依赖于量子比特,它们可以处于两种状态之一,∣0〉或∣1〉,或这两种状态的线性叠加,∣ψ〉=α∣0〉+β∣1〉,其中的系数α和β与在每种状态下找到量子比特的概率有关。
 
为什么量子比特存在于叠加态中是有用的?换句话来说,与通过纠缠连接的相同数量的量子比特相比,你可以在n个独立的比特中存储多少信息——这是经典物理无法描述的现象。
 
每个经典比特只需要一个值来描述它是开还是关,因此n比特表示一个二进制数字。n量子比特则能表示2n个数字。
 
例如,一个三量子比特系统。每个量子比特都可以处于∣0〉或∣1〉状态,所以有八种可能的状态可以测量系统——八个系数描述了每个状态的概率。系统中的量子比特越多,相对于经典比特的信息优势就越大。
 
然而,利用巨大的计算空间并不是一件容易的事。例如,编写受益于量子比特特性的算法是一项挑战,因为尽管计算可能会操纵2n个参数,但它们只输出n个值作为最终的量子比特状态。
 
虽然经典计算主要集中在一种硬件上,但量子比特却有许多种类。比如核自旋、光子偏振或量子点自旋都可以用作量子比特。然而,一个特定系统的有用性取决于诸如量子比特操纵和纠缠的容易程度、它们在量子态中保持多久以及它们的态被外界噪声破坏的可能性等。
 
目前,量子比特硬件实现的一个主流方法是离子阱量子比特。在这些设计中,带电粒子受到电磁陷阱的限制,在两个状态之间移动的价电子充当量子比特。中性原子中的超精细跃迁和量子点中的电子自旋翻转也可以起到同样的作用。
 
在这个离子阱量子计算机中,金色电极产生了一个带电粒子的陷阱。电极的结构允许微波和激光束进入。整个系统装在一个超高真空室内。(来源:悉尼大学)
 
一些最著名的量子计算机,包括IBM和Google,都依赖超导Transmon量子比特。Transmon是超导电荷岛,其中∣0〉和∣1〉之间的区别在于束缚的库珀电子对(Cooper pair)。
 

量子比特是容易出错的。各种环境因素(热涨落、电磁辐射、磁场)都会使一个量子比特脱离它的预期状态。这种信息的退化被称为退相干,可能在几分之一秒内发生。
 
尽管使用制冷来减少热涨落,但退相干最终会悄悄来临并产生硬件错误,比如不小心将一个量子比特的状态从∣0〉翻转到∣1〉。一个量子比特可以进行的运算次数受到退相干时间的限制。此外,每一组量子比特硬件都有其独特的偏离理想性能的地方。
 
IBM量子计算机置于制冷系统中
 
但是不能指望量子计算堆栈中的更高层次来解释这种系统到系统的变化;程序员需要能够在不知道底层硬件的错误的情况下请求执行一个操作。(想象一下如果每台电脑都需要个性化软件!)
 
量子固件为更高级别的计算堆栈创建了量子比特硬件的一个虚拟版本。它专注于所有低层次的量子控制任务,可以用来稳定硬件和缓解错误。例如,使用有关硬件的信息来自主定义射频或微波脉冲的抗错误版本(error-resistant version),这些脉冲作用于量子比特以执行量子逻辑操作。
 
实际上,量子固件是一组协议的统称,这些协议将量子硬件与量子计算堆栈中更高、更抽象的层级连接起来。更具体地说,量子固件规定了如何操纵物理硬件来提高稳定性和减少各种错误过程——本质上是“虚拟化”底层不完善的硬件。然后,量子计算堆栈中更高的抽象层与量子比特交互。
 
之所以叫固件,是因为尽管例程通常是软件定义的,但它们位于堆栈中物理层的上层,并且对于更高的抽象层来说实际上是不可见的。这种低层级控制的方法,类似于计算机工程中的其他固件形式,例如DRAM(动态随机存取存储器)刷新协议,可以稳定经典存储硬件,防止电荷泄漏造成的性能下降。
 
这些协议负责调度、定义相关的控制和测量操作、执行驱动逻辑等。我们在使用DRAM很少意识到这些协议的存在。
 
虽然量子固件本身不能解决硬件错误的问题,但它在抑制诸如量子比特谐振频率等硬件参数的缓慢漂移方面特别有效;这些漂移是量子计算硬件的“肮脏”秘密。这种能力使固件成为量子纠错协议的有力补充,量子纠错协议更适合处理随机错误。
 
量子固件是计算堆栈的抽象层,其操作由嵌入式微处理器协调
 
如上图所示,微处理器访问云计算资源,执行计算密集型任务,如开环控制优化,并虚拟化硬件,以便与软件堆栈的更高层进行交互。
 
在这里的概念中,微处理器向可编程逻辑器件(如FPGA)发送命令。这些装置负责为物理层反馈稳定、基于测量的决策制定和其他任务实时处理测量结果。此外,它们还向其他硬件元件提供指令,例如直接数字合成器和任意波形发生器。
 

在经典计算机中,编译器为需要完成的任务获取更高级别的指令,将这些指令翻译成一系列使用底层硬件执行的操作。同样的事情发生在量子计算机中。
 
硬件感知量子编译器,也称为transpiler,负责计算如何以考虑量子比特之间物理连接的方式完成一组逻辑操作。

虽然物理量子比特不容易移动,但两个量子比特的状态可以交换,进行有效的重排。
 
transpiler计算出如何在给定硬件约束的情况下实现量子比特之间的任意操作,例如哪些量子比特直接相互连接。它还决定每次操作使用哪一个量子比特——例如,如果某个特定的量子比特已知有故障,信息可能需要绕过它。
 
当前的量子计算时代,硬件感知编译器是唯一的编译器。因此它承担着减少执行算法所需的量子逻辑操作数量的额外责任。以这种方式优化量子比特的使用可以让任务尽快完成,鉴于量子态的寿命很短,这一点很重要。
 
未来,当量子纠错被常规使用时,这部分责任将由更高层级的逻辑层编译来承担。更低层级编译器的任务是将逻辑量子比特操作转化为物理量子比特操作。
 

即使有量子固件,错误也不可避免地来自退相干和不完美的量子比特操作。量子纠错(QEC)被设计用来检测和修复这些错误。它通过在许多量子比特上涂抹信息,来防止个别量子比特失效。每一组纠错的物理量子比特组成一个逻辑量子比特然后可以在量子电路中使用。
 
令人惊讶的是,逻辑量子比特可以被设计成即使底层量子比特的态消失,逻辑量子比特的态仍然存在,原则上是无限期的。
 
一旦一个逻辑量子比特被编码,一个复杂的算法被用来识别错误并以一种不丢失编码信息的方式进行校正。(直接测量量子比特会破坏它们的量子态。)一个简单的实现(Implementation)使用冗余来提供保护;即使其中一个量子比特最终处于错误的状态,它们全部错误的概率也低。
 
用QEC纠正量子比特错误本质上是资源密集型的,目前的一些方案每个逻辑块使用几十个物理量子比特,并且可能需要比现有设备更多的可用量子比特来提供真正的好处。
 
因此,从长远来看,QEC比现在的机器更重要。量子固件旨在通过处理较容易预测的噪声来减轻QEC例程的负担,从而提高QEC的资源效率。
 

量子电路是时序逻辑门的映射逻辑门通过一系列量子比特来运行算法下图是一个简单的例子,这是一个在贝尔态中纠缠两个量子比特的电路。
 
 
两个量子比特以纯∣0〉状态开始。Hadamard门作用于第一个量子比特,将其置于∣0〉和∣1〉状态的叠加中,并且在每个状态下找到量子比特的概率相等。只有当控制qubit(•)处于状态∣1〉时,双量子比特CNOT门才将目标qubit(⊕)翻转到∣1〉,从而产生所示的纠缠输出状态。
 
量子比特的初始状态在左边,最终状态在右边,在它们之间有一系列的门,指示对每个量子比特执行的操作。电路中表示的量子比特不是物理量子比特,而是逻辑量子比特。

一个逻辑量子比特可以使用许多相互作用的物理量子比特来实现,这些物理量子比特的硬件错误可以通过QEC来缓解
 
一个算法可以用多个逻辑等效电路来表示,电路优化的目标是找到需要最少运算或时间步长的算法。执行更少的运算可以使算法运行得更快,这对于任何量子计算机来说都是一个重要的目标,不管它是否使用QEC。
 

量子算法扮演着与经典算法相同的角色:它们为完成计算任务提供分步指令。
 
虽然一个常规算法原则上可以在量子计算机上运行,但是真正的量子算法利用了底层硬件的量子特性。例如,在量子计算机中操纵一个量子比特,会影响全部n个量子比特的态和描述它所需的2n个系数中的每一个,从而有效地并行执行许多操作。
 
然而,它不是完全的并行计算。测量量子比特的最终状态时,每个态要么是0要么是1;算法只输出n个值而不是所有2n个系数。
 
鉴于这种测量限制,真正利用量子计算机巨大的计算空间是很棘手的。量子算法开发的整个领域都致力于搞清楚如何有效地利用这些资源。一些问题,如分解素数,被公认是能够通过量子算法加速的。
 
这种加速反映在算法必须经过多少步才能得到答案。传统计算机计算素数所需的步数与素数的大小成指数关系,而量子计算机的步数只是多项式关系。量子傅里叶变换也比经典傅里叶变换快得多。
 
其他任务,如下棋,几乎没有从量子算法中获益,因为所需的步数仍然会随着问题的复杂性而过快增长。
 
变分量子算法是经典算法和量子算法之间的折衷。它将计算分解为一个小的量子部分和一个更大的经典优化问题,因此,变分量子算法只需要一个比实现量子傅里叶变换的机器小得多的量子计算机。这种算法有望解决金融、物流和化学问题。
 

大多数想使用量子计算机的人不会去制造或购买量子计算机——至少短期内不会。为了方便访问有限的量子计算资源,多家公司已经建立了基于云的基础设施,允许远程操作。与经典计算机一样,量子计算堆栈的最高层级提供了用户交互界面
 
Amazon Braket、微软Azure Quantum和Rigetti QCS都是量子即服务(QaaS)产品。但这些公司不一定提供对自己量子计算机的访问。例如,Amazon Braket将用户连接到D-Wave、Rigetti和IonQ的资源。这种方法使量子计算机类似于其他基于云的托管计算资源,如GPU。
 
上述服务可以使用高级编程语言编写代码。对于有编程经验的人来说,生成的算法可能不会显得特别奇特。例如,开源软件开发工具包Ocean(来自D-Wave)、Qiskit(来自IBM)和Forest(来自Rigetti)支持编程语言Python。专门为量子计算设计的语言包括类似于C语言的量子计算语言(QCL)和作为C++扩展的Q语言。代码定义了构成逻辑算法的一系列操作。
 
一个简短的Qiskit算法,类似于“Hello, World!”程序,在∣1〉状态下初始化一个量子比特。
 
参考文章:
[1]https://physicstoday.scitation.org/do/10.1063/PT.6.1.20210305a/full/#:~:text=One%20popular%20example%20of%20qubit%20hardware%20implementation%20is,moving%20between%20two%20states%20acts%20as%20the%20qubit.
[2]https://physicstoday.scitation.org/doi/10.1063/PT.3.4698

—End—

相关阅读:
可扩展的量子计算机,从里德堡原子萌芽
从基础量子位到当下火热的量子计算机,一文助你入门量子计算
中科院范桁:从量子计算机分解 21=3×7 说开去
重磅发布!2020全球量子计算机产业发展报告
万字报告!2021量子技术全景展望

#光子盒社群招募中#

进入光子盒社群,与我们近距离互动,了解量子领域更多产业、商业、科技动态,领取量子技术产业报告。
 
现添加社群助手微信Hordcore即可进群 ,与我们一起展望未来!

你可能会错过:
: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存