和传统计算机类似,在量子计算领域,计算机硬件是基础,但若没有相应的软件,人们就无法有效利用硬件资源执行量子计算渐开螺旋面。因此,还需要软件工具去设计、优化、运行和理解量子程序。
量子软件开发框架(Software Development Kit,以下简称SDK)可以被视为一套工具箱,它提供了进行量子编程和量子算法设计所需要的基本元素。使用量子SDK,开发者可以高效地创建、调试和运行量子程序。
早期的量子SDK只支持基础量子算法,多用于教育和科研。随着变分量子算法和量子机器学习的发展,出现了新的算法和应用,这些算法可以在有噪声的机器上运行,也对量子SDK提出了新的需求,如自动微分和训练经典-量子混合的机器学习模型。
然而,早期的SDK难以很好地支持这些需求。与此同时,一些现有的量子机器学习平台也存在各种局限性,例如有些忽视了基础的容错量子算法,或者只绑定自家的经典机器学习平台。
支持更多量子算法、兼容度更高、更开放的量子SDK成为新的需求。基于此,量旋科技的工程师们以“开放”和“高效”为核心,设计、研发并开源了量子软件开发框架SpinQit。
从整体架构上来看,SpinQit分为三个部分:前端API、编译器和后端执行平台。
基于图论的中间表示是SpinQit可扩展架构的核心,不同的前端编程语法被对应的编译器转为统一的中间表示,再转为不同后端平台能够执行的格式;
SpinQit的开放特性之一体现在其对不同前端语法的支持上,包括对Python、OpenQASM语言的支持,以及对Qiskit量子编程库的兼容。
量旋科技的工程师们为SpinQit设计了一套基于Python的量子编程语法,它能够同时支持各种不同量子算法的开发需要。
Python为多数量子计算编程的用户所熟悉,选择Python可以降低用户的学习成本和参与开源社区的门槛。同时,SpinQit也能够容易地和众多支持Python的经典机器学习平台结合。
OpenQASM是目前业界使用最广泛的量子汇编语言之一,用于很多量子计算课程。对OpenQASM的支持便于用户将其他平台上的量子程序移植到SpinQit上,或者用来比较不同平台的执行结果。
另外,SpinQit也能够兼容IBM的量子编程库Qiskit。由于不少用户对Qiskit较为熟悉,这在很大程度上方便了程序的复用。
在量子计算领域,有许多基础的量子算法模块,往往被使用在不同的应用场景中,或用于构建组合算法。例如,量子傅里叶变换就是量子相位估计、HHL、Shor等算法的重要组成部分。
在SpinQit中,众多像量子傅里叶变换这样的基础算法被封装为原语和算法API供用户调用,使用户不用重复造轮子,这也是它的重要价值所在。
除基础算法模块,SpinQit也支持变分量子算法这类典型量子-经典混合算法,其被广泛应用于量子化学、组合优化等领域。这类算法的大体架构是将问题建模为哈密顿量,结合含参量子线路进行迭代优化。
SpinQit对整个算法流程进行了充分的支持,包括哈密顿量的处理、参数化线路、经典/量子目标函数脉冲上升时间、经典/量子优化器等等。
特别地,SpinQit实现了纯量子微分算法,可在真实量子计算机上运行,也在经典模拟器中实现了基于反向传播的自动微分。SpinQit实现了一些量子优化器,还通过接口封装,使用户能够使用他们熟悉的经典优化器。
上文提到的一系列量子计算的基本模块构成了对量子机器学习的底层支撑。此外吹膜机,SpinQit提供了接口,能够支持量子计算和PyTorch、TensorFlow等经典机器学习框架的混合学习。
在这些基础上,SpinQit可以支持多种不同类型的量子机器学习算法,例如量子聚类、量子神经网络、量子支持向量机。这些量子机器学习算法已经被证明可以应用于多种不同的场景,例如金融投资、反欺诈和医疗的辅助诊断,以及经典机器学习的领域,包括自然语言处理和图像识别等。
前端输入设计好的量子算法之后,量子程序还需要被翻译成量子计算机能够理解的指令,经过后端执行,才能完成量子计算操作。
在专门为量子计算设计的SpinQit编译系统中,前文所述三种前端语法都有对应的编译器,将程序编译为统一的中间表示。
“中间表示”可以被视为一个中转站,不同的源代码在这里被转换为中间表示,进而再转换为目标后端的执行代码。
除部分特例外,前端用户自定义的量子门都会分解为一些基本门。在SpinQit中,中间表示基于一组基本的量子逻辑门,以图的形式表示相互关系。
SpinQit的内置编译器可以基于中间表示进行不同级别的编译优化,从基础的算符消除、融合,到控制比特的化简等,优化级别可以自行设定,对应的编译时间也不同。
不同执行平台支持的基本量子门是不同的,为了能够在不同平台上运行量子程序,每个执行平台都有对应的汇编器做进一步处理。这些汇编器也会充分利用后端平台的特点,加速一些操作,比如初始态制备。
而丰富的后端执行平台正是SpinQit的一大优势。依托量旋科技强大的量子计算机硬件资源,用户可以选择在包含真机和云平台的不同平台上运行自己的程序。
真机方面,SpinQit是国内唯一可以提交到本地量子计算机执行的SDK。目前SpinQit已对桌面型核磁量子计算机提供支持,未来还将进一步支持超导量子计算机。
作为SpinQit生态的一部分,量旋科技金牛座量子云平台内的云上资源也可供使用,用户同样可将程序提交到云平台执行。
模拟器方面,SpinQit对本地CPU模拟器和大规模GPU模拟器都提供了支持气动控制。
本地的CPU模拟器方便用户进行小规模的程序验证,或是满足教学场景的需要;而GPU模拟器可以将模拟的规模提高到30个量子比特以上,支持高性能的较大规模模拟。
另外,SpinQit还拥有一个特殊后端,就是将量子计算代码转化为OpenQASM代码输出。这样一来,所有支持OpenQASM的第三方平台都可以执行使用SpinQit开发的量子程序。
目前,SpinQit已在GitHub开源,并提供了在线文档,其中包含API说明和一些基本用例。量旋科技的工程师们希望将SpinQit建设成为一个开放的量子计算开源社区,为量子算法的研究和软件开发搭建一个高效的平台。
不仅仅有助于创新和协作,SpinQit的开源也利于推动完善量子SDK开放的标准,改善不同系统和工具间的兼容性。
除开放API和接口,以及开放源代码外,SpinQit的开放特性同样体现在量子计算云平台的支撑上。量子计算云平台为公众开放提供了访问和使用量子硬件的能力,无论身处何地,人们都可以通过网络连接到这些资源。
“金牛座”量子云平台是由量旋科技打造的一款开放物理底层控制、链接多种真实量子计算体系的云服务平台,其搭载多个量子计算体系,同时支持8k7注册下载安装、5、3、2个比特的量子计算,且具有多达24比特的高性能模拟平台。
目前,金牛座云平台提供三种不同层次的服务:一是提供硬件基础设施,SpinQit和线上都可以提交计算任务到量旋科技的量子计算机或模拟器平台执行;二是提供在线编程环境,用户可以通过交互界面和代码的形式来构造量子线路进行实验;三是上线了一批量子算法应用,用案例展示如何用量子程序解决实际的应用问题。
接下来,SpinQit计划从算法、编译系统和执行平台三个层面持续做出改进,包括但不限于:
持续更新最新的量子算法,尤其是量子机器学习算法,为用户提供更全面的支持。
引入即时编译技术,改进含参量子线路处理,避免在变分量子算法或量子机器学习算法的迭代优化过程中重复编译量子线路等。
相信随着不断升级迭代,SpinQit作为一款量子软件开发框架,将进一步推动更多量子软件的诞生,在量子计算中发挥更大的作用。并且,随着对更多量子算法的支持,SpinQit也将助力量子计算机在医疗、金融、人工智能等多个领域的科研与应用。
量旋科技成立于 2018 年,是一家致力于量子计算产业化和普惠化的一站式解决方案服务商,在技术研发和商业落地“双轮驱动”的战略下,依托超导量子计算机、核磁量子计算机、量子计算云平台和应用软件进行产业布局,赋能科研教学、药物研发、金融科技、人工智能等诸多前沿领域,跟合作伙伴共建场景化解决方案,使量子计算走进千行百业静联接,成为真正的生产力工具。