量子计算与开源软件

概述

开源即开放源代码,兴起于软件行业,是源代码可开放共享的开发模式。开发者依托互联网平台,通过共同参与协作,不断累积群体智慧,实现持续创新的方法,具有自由开放、共建共享的特性,是促进信息技术创新的重要途径。开源对于量子计算产业技术价值的提升具有重要意义,同时还有利于提升企业的市场影响力以及产业生态的协同构建。本文将阐述量子计算与开源软件的关系。

1.开源软件介绍

1.1 什么是开源软件

开源软件,又可译为“开放源代码软件”,是指源代码开放、允许用户按照许可证条款对源代码进行修改并可自由重复发行的一类软件。开源软件需要公开源代码, 但需符合相应许可证的相关要求,在遵守许可证的条件下才能得到开源软件的源代码, 并可自由地对其修改或再发布。因此, 开源软件是通过许可证对其进行知识产权保护的, 也是受著作权保护的作品, 未经权利人许可不能随意使用。

OSI(Open Source Initiative)组织是全球范围内开源软件标准的权威发布机构,其对“开源”核心概念要求的界定:

  • 开源软件必须包含可理解与运用的源代码,或提供简便的获取源代码的方式;

  • 开源代码必须允许以源码或编辑后文件的形式传播;

  • 开源许可须允许源码修改及其衍生工作。开源许可不得限制开源软件的再传播,不得以此为由收费;

  • 仅当配合补丁文件一起发布时,开源许可证可以禁止修改的代码的发布;

  • 必须允许修改后的代码生成的软件的发布;

  • 开源许可不得将项目内容限制于特定软件,也不得对一起发布的其它软件施加各种限制。开源项目不得对任何个人、组织以及用途等规定歧视性条款;

  • 开源项目的内容须在无需进一步许可的条件下适用于所有获得该项目的主题;

  • 开源许可不得以某种特定技术或接口为前提,须保持技术中立。

1.2 开源将加快量子计算应用的普及

量子计算为什么没能普及开来呢?原因主要有两个:第一个是缺少针对量子处理器的优化算法,第二个是量子位保持其特殊量子特性时间的时长太短。虽然这主要是一个硬件问题,但是软件的开源能够推动硬件创新的发展。开源能够允许更多的物理学家、数学家及相关企业参与到开发当中,加快量子计算技术应用在公众中的普及,从而提升开发的效率。比如,D-Wave 公司发布了其基本量子计算软件“Qbsolv”的开源版本,向量子统治迈出了重要一步。量子计算一直是高精尖人才才有可能接触到的开发领域,一般从事量子计算开发的都是研究量子物理学的博士生。Qbsolv 的目的,就是能够降低量子计算开发的专业知识门槛,允许更多的开发人员参与到 D-Wave 的计算机编程工作中。

其次,****量子计算软件开源有利于培养用户的习惯****,也有助于推动量子计算的普及。用户习惯的培养有多重要?举个例子。当用户习惯使用Windows系统及其软件,如果换成Mac系统,用户将会很不习惯。这些都基于用户接触计算机时就已经被培养形成的习惯。同样量子计算软件的用户习惯培养也是如此。像发展经典计算机一样,量子计算的发展应从量子计算的硬件、操作系统、软件开发包、语言开发包,到云平台的整个生态系统去推进。

当前国际上非常重视量子计算推广和用户习惯的养成,谷歌和IBM已经开展了很多在线量子编程教育、推广工作,也有非常多的初创公司参与量子软件尤其是量子应用软件的开发,他们已经形成了与传统软件一样成体系的发展模式。马里兰大学量子信息和计算机科学联合中心的联合主任安德鲁·柴尔兹(Andrew Childs)说:“我们现在还处于量子计算发展的早期阶段,如果有开源的平台,对大家都很有利。”

1.3 常见的开源许可协议(Open Source License)

开源软件的License,一般是授权用户使用、拷贝、修改和再发布的合法权利及应当遵守的约定,同时包含作者的免责声明和使用自担责声明。以下将介绍几种开源许可协议介绍及其比较。

MIT许可证

MIT源自麻省理工学院(Massachusetts Institute of Technology, MIT),用户有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本,可根据程式的需要修改授权条款为适当的内容。在软件和软件的所有副本中都必须包含版权声明和许可声明。MIT条款可与其他授权条款并存。另外,MIT条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与GPL相容。格式:一般使用 MIT 授权的项目,需在源文件头部增加以下内容:

Copyright [yyyy] [name of copyright owner]. All rights reserved.

[yyyy]:表示该源文件创建的年份。[name of copyright owner]:即版权所有者。如果为个人项目,就写个人名称;若为团队项目,则宜写团队名称。

BSD许可证

BSD开源协议是一个给予使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。BDS由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。但是,如果要使用BSD协议的代码或以BSD协议代码为基础做二次开发自己的产品,需要满足以下条件:

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;

  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。;

  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

Apache许可证

Apache许可证是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布,需要满足的条件也和BSD类似:

  • 需要给代码的用户一份Apache License。如果用户修改了代码,需要在被修改的文件中说明。

  • 在延伸的代码中需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。

  • 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache License。用户可以在Notice中增加自己的许可,但不可以表现为对Apache License构成更改。

  • Apache License也是对商业应用友好的许可。用户也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。格式:该许可证要求在所有的源文件中的头部放置以下内容才能算协议对该文件有效:

Copyright [yyyy] [name of copyright owner]

[yyyy]:表示该源文件创建的年份。[name of copyright owner]:版权所有者。如果为个人项目,就写个人名称;若为团队项目,则宜写团队名称。示例:Mindquantum/Apache License 2.0

图片

LGPL许可证

LGPL许可证是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

GPL许可证

GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。GPL还规定:只要修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。

图片

怎么选择开源软件的License

1.4 开源软件许可合规工具

开源软件是异质的和重复使用的,这虽然对软件开发有积极意义,但对合规性造成了挑战。合规性需要多种工具,这些工具最好能组合成一个工作流程,以支持一些业务和开发人员的要求。其中一个要求是在现代开发环境中的易用性,即代码开发周期越来越短,新的开发成果越来越快地被推向运营。要做到这一点,开源合规性工具很可能需要与开发工具集成。以下将介绍几种开源软件许可合规工具。

AboutCode Toolkit

「官网」:AboutCode

https://www.aboutcode.org/

「许可证」:Apache-2.0

「摘要」:AboutCode Toolkit 和 About 文档提供了一种简单的方式来记录你在项目中使用的第三方软件组件的来源、许可、使用和其他重要或有趣的信息。此外,这个工具能够生成归属声明,并识别你的项目中使用的可重新分配的源代码。

AboutCode Manager

「官网」:AboutCode

https://www.aboutcode.org/

「许可证」:Apache-2.0

「摘要」:AboutCode Manager 提供了一个先进的可视化用户界面,帮助你快速评估由ScanCode 识别的许可证和其他通知,并记录你对一个组件的有效许可证的结论。AboutCode Manager是基于 Electron的,是使用 nexB 的 AboutCode 工具的主要桌面/UI 工具。

Apache Rat

「官网」:Apache Rat

http://creadur.apache.org/rat/

「许可证」:Apache-2.0

「摘要」:Apache Rat 是一个发布审计工具,主要针对许可证。它用 Java 编写,通过 Maven 和 Ant 的插件在命令行中运行。Rat 是可扩展的。它是 Apache Creadur 项目的一部分。

Apache Tentacles

「官网」:Apache Tentacles

http://creadur.apache.org/tentacles/

「许可证」:Apache-2.0

「摘要」:Apache Tentacles 通过自动与包含发布工件的版本库进行交互来帮助审查者。Apache Tentacles 简化了审查由大量工件组成的版本库的工作。它是用 Java 编写的,从命令行运行。

Apache Whisker

「官网」:Apache Whisker

http://creadur.apache.org/whisker/

「许可证」:Apache-2.0

「摘要」:Apache Whisker 协助组装的应用程序保持正确的法律文件。Whisker 可以 验证--针对某一个发行版检查其元数据的质量 生成--从元数据中生成法律文件 对于复杂的组合式应用程序特别有用。

Bang

「官网」:Bang

https://github.com/armijnhemel/binaryanalysis-ng

「许可证」:AGPL-3.0

「摘要」:Binary Analysis Next Generation,即 BANG,是一个分析二进制文件的工具。目前,它的主要目标是非常迅速地找出二进制文件的内容,如固件更新,并使从内容中提取的信息可用于进一步分析,如许可证合规性、安全研究或成分分析。它支持大约 130 种不同的文件格式。

(以上引用来源:盘点现有开源软件许可合规工具。https://mp.weixin.qq.com/s/cb7qlH4s3aZUiXo_dHmhDw

2. 量子计算开源软件

一台量子计算机的架构可以被视为具有以下典型层的堆栈:最底层是实际的量子计算硬件,硬件上面一层是系统层,在系统层之上是软件和应用层。最顶层是现在最常见的云技术。

图片

图:量子计算机堆栈

软件是连接人与机器的桥梁,通过软件才能发挥机器的作用。在量子计算机还未能大面积普及使用的时候,量子计算开源软件的发展,有利于让更多用户接触并使用它,从而推动量子计算硬件的研发,以及促进量子计算产业的提前布局与生态的良性培养。下面将介绍量子计算领域开源软件状况。

2.1 量子云服务

量子云是提供以量子计算能力为核心的一种云服务。由于量子计算机仍需要严苛的运行环境与复杂的辅助设备,这些系统造价高昂,普通用户很难接触到。量子云平台有助于让更多用户体验、学习、探索量子计算,使用云技术连接用户与真实的量子计算设备。通过供来自互联网上的用户将待执行的量子程序,通过经典信道远程提交到量子云平台的服务器上,在量子云平台完成它的编译,执行与读出最后将计算结果返回给各用户。

量子云平台有利于吸引更多人在平台探索量子计算在各个方面的研究和应用,了解、接触和运行量子算法,这不仅能有助于了解处理器的性能、技术瓶颈等重要特性,还将帮助到下一代处理器开发,为优化应用积累经验。

图片

2.2 量子模拟器

量子模拟是利用可控的量子系统去模拟待研究的量子系统,它可以作为一种有效的实验手段用于研究经典计算机难以计算的问题和实验条件无法观测的现象。用量子计算模拟器开展量子算法的设计,将解决无法使用、高代价使用真实量子计算机的问题。

通过在经典计算机上运行的量子模拟器,可在量子系统上模拟量子算法的运行。比如 Microsoft Quantum 开发工具包 (QDK) 包含一个完整状态向量模拟器以及其他专用量子模拟器。QDK 提供了可模拟本地计算机上的量子计算机的全态模拟器,可以使用全态模拟器来运行和调试用 Q# 编写的量子算法。以下是如何从C#、Python、命令行、Jupyter Notebook调用并运行全态模拟器的操作:

从 C# 调用模拟器 创建 QuantumSimulator 类的实例,然后将其与任何附加参数一起传递给量子操作的 Run 方法。

using (var sim = new QuantumSimulator()) 

从 Python 调用模拟器 将 Q# Python 库中的 simulate() 方法与导入的 Q# 操作一起使用:

qubit_result = myOperation.simulate()

从命令行调用模拟器 从命令行运行 Q# 程序时,全态模拟器是默认的目标计算机。或者,可以使用 --simulator(或 -s 快捷方式)参数指定所需的目标计算机 。以下两个命令都使用全态模拟器运行程序。

dotnet run   

从 Jupyter Notebook 调用模拟器 使用 Q# magic 命令 %simulate 运行 Q# 操作。

%simulate myOperation

2.3 量子编译器

量子计算程序需要最终被转化为量子计算机能够执行的一种表示方法就是“量子编译”。而量子编译器需要对量子程序进行一系列变换以满足量子处理器的物理约束。

编译量子电路需要添加额外的门,这些门将量子位状态移动到所需的门可以在实际量子处理器的物理约束下作用于它们的位置。在某种程度上,这类似于如何将经典程序从程序员理解的语言(例如,C++)编译成硬件可以执行的二进制表示。下图是量子编译过程的示例。

图片

2.4 量子操作系统

操作系统是管理计算机软硬件的“大管家”,也是决定其性能的关键技术领域。“如果把量子芯片比喻成人的心脏,量子计算机操作系统就相当于人的大脑,量子应用软件则是血肉。”中科院院士、中科院量子信息重点实验室主任郭光灿说,一个好的操作系统,可以让量子计算机的运行更加高效、稳定。

目前全球范围内可供使用的量子计算机数量非常有限,如果不能做到有效利用,就会出现算力浪费情况。因此,量子计算机也需要操作系统对其进行有效调配和管理,硬软件协同发展才能让量子计算机实现落地应用。“本源司南”是国内首个量子操作系统。

图片

2.5 量子算法

量子算法是一套用于分析问题的计算机指令,其利用量子现实的独特性质,即一个比特的数据可以代表两个相反的值,例如二进制逻辑中的1和0。量子算法需要一台量子计算机才能运行。

Shor算法

Shor量子算法可以有效地用来进行大数因子分解。大数因子分解现在广泛用于电子银行、网络等领域的公开密匙体系RSA安全性的依据。采用现有计算机对数N(二进制长度为LogN)做因子分解,其运算步骤(时间)随擦和高输入长度(LogN)指数增长。

迄今在实验上被分解的最大数为129位,1994年在世界范围内同时使用1600个工作站花了8个月时间才完成这个分解。若用同样计算功能来分解250位的数则要用80万年,而对于1000位的数,则要有〖10〗^25年。与此相反,量子计算机采用Shor算法可以在几分之一秒内实现1000位数的因子分解,而且操作时间仅随输入数的3次方增长。可见Shor量子算法将这类“难题”问题编程“易解”问题。Shor的开创性工作有力的刺激了量子计算机和量子密码术的发展,成为量子信息科学发展的重要里程碑之一。

Grover算法

Grover 算法,也称为量子搜索算法,可以对随机数据库相对经典搜索平方根加速。为了实现这样的加速,Grover算法主要依赖于量子态的叠加,适用于解决如下问题:从 N个未分类的客体中寻找出某个特定的客体。

Grover算法的重要性,一是因为本身解决的无序数据库搜索问题就是一个很重要的问题;二是因为,这个量子算法的提出,和Shor质因子分解算法提出一样,给了研究者们用量子算法解决经典算法无法有效解决的问题的希望,极大提高了人们对于量子算法研究的热情;再者,从Grover算法衍生出了一系列利用了幅度放大思想的算法,是现今量子算法研究中的一个重要部分。

量子近似优化算法(QAOA)

QAOA是一个多项式时间的近似优化算法,属于变分量子算法(VQA)的一种,可用于解决组合优化问题、最大分割问题等难题。该算法在解决某些NP-hard问题时有明显的加速效果,可以在多项式复杂度下给出问题的近似解。

QAOA算法的核心思想是通过量子绝热优化算法从初始哈密顿量的基态,逐步迭代演化至目标问题的哈密顿量的基态;在此过程中需要逐步优化量子绝热算法的参数,参数的优化过程主要是在经典计算上完成,绝热演化过程是在量子计算上完成。原则上,QAOA算法需要在通用量子计算机上完成运算,即要求量子计算机能实现图灵完备的量子门操作;然而,受限于通用量子计算机的物理实现,目前停留在几十个量子比特的规模。

3. 国内外大厂量子开源软件的发展和应用

据波士顿咨询发布的报告预测,在不考虑量子纠错算法的进展情况下,2035年全球量子计算应用市场规模将达到近20亿美元,随后暴涨到2050年的2600多亿美元****;若量子计算技术迭代速度超出预期,2035年市场规模可突破600亿美元,2050年则有望飙升至2950亿美元。各国争先布局量子计算领域产业。

3.1 Google

Cirq 是Google开源的一个量子编程框架,它提供了所有基本运算(例如量子位、门、电路和测试),用于编写、操作和优化量子电路,并针对量子计算机和模拟器运行它们,将帮助开发人员在机器上进行试验,其中包括谷歌自家的超强量子处理器。

Google还发布了** Cirq 软件工具包,让开发人员在不需要量子物理背景的情况下也可以创建算法****,该计划也意味着任何人都可以访问和修改该软件。**谷歌将其比作流行的TensorFlow开源工具包,该工具包使得构建机器学习软件变得更加容易。目前,开发人员可以使用 Cirq 创建在模拟器上运行的量子算法。以下是启动并运行Cirq示例:

import cirq     

示例结果输出:

Circuit:   

TensorFlowQuantum (TFQ) 是Google发布的量子机器学习开源库,用于混合量子经典机器学习的 Python 框架,致力于建模量子数据。TensorFlow Quantum集成了许多量子算法和逻辑,并提供与现有 TensorFlow API 兼容的量子计算原函数,以及高性能量子电路模拟器。它将量子计算基元(如构建量子电路)引入 TensorFlow 生态系统,使用 TensorFlow 构建的模型和运算使用这些基元来创建功能强大的量子经典混合系统。目前,TensorFlow Quantum 主要面向在经典量子电路模拟器上执行量子电路。

3.2 微软

2019年11月,Microsoft推出量子云生态服务--Azure Quantum,为开发者和客户提供预先构建的解决方案以及软件和量子硬件。用户通过使用Azure Quantum及其开发者工具包工具集,可对量子算法进行编程,并优化解决方案,然后在Azure平台内应用这些量子解决方案。

Azure 量子提供商主要包括量子硬件的提供商,以及方案优化提供商。

Azure Quantum 的客户主要是使用Azure提供的量子机器以及 Azure 提供的量子优化服务。其中量子优化服务占了一定的比例。优化服务涉及的领域有导航(复杂的线路规划)、材料化学以及自动驾驶等领域。

QDK 主要包含两部分首先是量子库,主要是针对不同行业提供了量子算法的封装,包含基本库,化学库,机器学习库等。其次是量子模拟器,针对不同量子场景,提供了不同的量子模拟器。

其量子模拟器的详细说明

以下是量子程序在Azure Quantum上完成实现的阶段工作流

6.png

(1)编写量子代码。可以使用适用于 Visual Studio、Visual Studio Code 或 Jupyter Notebook 的 QDK 扩展创建 Q# 程序。

(2)使用库来保持代码的精简程度。量子库可保持代码的精简程度,在执行中完成大量繁重的工作,使用户能够专注于算法的逻辑。

(3)与传统软件集成。使用Quantum开发工具包,可以将 Q# 程序与 Python 和 .NET 集成。

(4)在模拟中运行量子代码。编写程序后,需要使用量子模拟器,以便运行程序的一个小实例,并查看它的功能,而无需访问实际的硬件。

(5)估算资源。运行量子硬件之前,需要确定程序是否可以在现有硬件上运行。可以使用 QDK 资源估算器来获知需要多少个量子比特以及程序需要多长时间。

(6)在量子硬件上运行代码。最后一步是使用 Azure Quantum 在量子硬件上运行用户的程序。

3.3 亚马逊

Amazon Braket 是2019年亚马逊推出的一种全托管式Amazon Web Services(AWS)解决方案,可让开发人员、研究人员和科学家,去探索、评估和实验测试量子计算。它允许用户从零开始设计自己的量子算法,或者从一组预先构建的算法库中进行选择。一旦定义了算法,Amazon Braket就会提供一个完全托管的模拟服务来帮助排除故障和验证。

Amazon Braket 可以分为三个方面:

(1)Build, 安装了 Amazon Braket SDK 的 Jupyter 环境(支持本地部署),进行量子编程

**(2)Test, **在模拟器中执行量子线路,Braket 支持 4 种 Simulator, 其中 local simulator 可以在本地模拟量子环境

(3)Run, 可以在真实量子环境中运行量子算法。目前 AWS 量子环境提供商有 D-Wave, IonQ, OQC. 因为量子计算机噪音影响目前无法完全去除,AWS 提供了 hybrid 的量子环境,通过QPU协同CPU工作,通过 PennyLane 开源库,支持 hybrid 算法。

Amazon Braket工作原理

Amazon Braket功能点


Braket Task Flow

Braket SDK 特性

(1)Moment 属性, Braket 有一个 pseudo-time概念,定义为moment, 含义是一个 qubit 在当下的moment,执行一个门操作。moment属性的目的是以门为单位,切割一个 circuit,从而获取 circuit 在某个moment 时的临时状态,从而分析算法的运行过程。代码如下图所示:

(2)Braket SDK 返回结果类型:Braket 返回结果支持多种类型,针对不同的后端平台,返回结果类型也有所不同,具体如下表所示:

(3)Verbatim compilation compiler 不做优化,算法的每一步都准确翻译,保证算法的执行与设计一致,(编译阶段,即将circuit中的门操作翻译成QPU native gate阶段,Braket compiler默认会做优化),该功能使用场景:例如benchmark 硬件的性能等

(4)支持OpenQASM 3.0 标准

(5)针对不同量子计算机平台,支持获取量子连接性查询接口

(6)Hybrid jobs, Braket 支持PennyLane的 embedded simulators, embedded simulator GPU。

(7)Hybrid jobs, Braket 针对 hybrid algorithms 提供了Hybrid jobs, 创建 job 时可上传量子算法的脚本,以及其他相关参数,job结果可持久化到s3中,也可在console, cloud watch中查看。

3.4 IBM

IBM是目前全世界该领域发展最领先的,其致力于构建科研和商用的量子硬件及平台系统,在量子云计算领域的研究具有系统化、成熟化的研发运营模式,在硬件和软件方面形成了相对完善的研发链,已逐渐建立日益成熟的量子云计算生态。

IBM cloud是IBM为企业提供的公有云,它作为下一代混合多云平台,具备诸多先进的数据和 AI 功能以及 20 个行业的深厚企业专业知识。IBM cloud 提供的工具套件主要包含三个,Quantum Services, Quantum Composer, Quamtum Lab。

(1)Quantuam Service

Quantum Service 可以理解为 IBM Quantum cloud 的 Lambda, 支持pipeline方式的量子编程。包括Programs, Systems和Simulators。

Programs 角色为前端,通过Qiskit Runtime 服务(目前处于Beta版本),运行Qiskit 创建的 Circuit 量子程序. 目前 Qiskit Runtime 集成到 Quantum Service中,同时也提供了 REST API,通过 Swagger 可直接测试。

Simulators 量子环境模拟程序。IBM 针对不同量子算法特点,提供了多种 Simulator。

(2)Quantum Composer Composer 是 IBM cloud 上图形可视化量子编程的服务入口,通过拖拽量子操作图标,构建量子线路,并可以在量子物理机或模拟器上运行。

Composer 可以直接将图形量子线路解析成 OpenQASM 2.0 代码(目前 IBM 只支持 OpenQASM 2.0 标准)和 Qiskit 代码。

Inspect circuit, 通过断点,对量子线路执行进行 debug。

Custom Operations, 通过对选中的多个 Operations 进行编组操作,可以创建自定义的 Operation

支持OpenQASM 2.0 直接编程

Visualizations, 可视化量子线路对量子比特 qubit 状态的影响。包括相位(Phase)、Q-Sphere等。

(3)Quantum Lab 是 IBM Cloud 上集成了 Qiskit 和 jupyterLab 的开发环境。类似 Web 端的 QuIDE。使用者无须安装任何库,可以直接编写 Qiskit 代码, 并运行在真实量子环境或者是模拟器上。

Quantum Lab 功能:

可以直接在 jupyter notebook 上编写 Qiskit 代码,编写量子线路,并运行。也可以上传本地的 Qiskit 代码。

可以嵌入 Quantum Composer, 在 jupyter notebook 中进行 drag/drop 量子线路编程。

结果可视化,可以可视化执行的量子线路以及结果。

3.5 Classiq

Classiq 由 Nir Minerbi 于 2020 年创立,总部位于以色列特拉维夫,是一个量子算法设计软件开发平台。Classiq平台旨在匹配客户的量子堆栈。该平台囊括了热门的量子编程语言(如Cirq、Qiskit、Braket和Q#),它可与所有量子编程语言和任何通用门的量子计算机协作。

Classiq 平台可实现从高级模型到门级解决方案和硬件执行的电路合成自动化,让量子算法开发人员可以自由地对可以解决现实世界问题的量子电路进行建模。Classiq 平台要求设计人员通过创建高级电路模型来描述电路功能。

该模型是使用带有文本 或Pythonic (SDK)接口的量子描述语言 (QDL) 编写的。然后,该模型由 Classiq 综合引擎提取,该引擎使用高级约束优化求解器从数十亿个可能选项中选择最佳电路(或多个电路)。综合引擎旨在找到与一组设计约束和规则相匹配的电路,这些设计约束和规则也由设计人员定义,以及嵌入在平台中并且可以被设计人员覆盖的一般规则。

合成电路可以以任何常见的通用门级格式(QASM、Q#、Braket 等)输出,并且可以轻松调整为其他更专有的格式。然后可以通过更改执行文件中的后端名称在任何量子后端(硬件或模拟器)上执行最终电路。以下展示如何在 Python中访问 Classiq 的平台的步骤:

安装 开始使用 Python SDK前,需要安装 Python(版本 3.7+)。

pip install -U classiq

验证 必须执行身份验证才能使用 SDK,需要异步调用单一的认证函数。

import classiq

运行此脚本将在默认浏览器中打开以下确认窗口。

确保窗口中显示的用户代码与脚本打印的用户代码相同。按确认后,出现以下登录屏幕。

使用可用选项之一完成登录。身份验证过程完成后,脚本将结束运行,就能够在当前设备上自由使用 SDK。

使用示例

以下代码示例演示了使用 SDK 进行电路综合。该电路实现了准备量子态并将量子傅里叶变换应用于该状态。得到的电路如下图所示:

 from classiq import ModelDesigner, QReg   

3.6 华为

华为于2012年起开始从事量子计算的研究,量子计算作为华为中央研究院数据中心实验室的重要研究领域,研究方向包括了量子计算软件,量子算法与应用等。

在2021年3月28日,华为MindSpore(AI计算框架)正式开源了量子机器学习库MindQuantum。MindQuantum是结合MindSpore和HiQ开发的量子机器学习库,支持多种量子神经网络的训练和推理。得益于华为HiQ团队的量子计算研发能力和MindSpore高性能自动微分能力,MindQuantum能够高效处理量子机器学习、量子化学模拟和量子优化等问题,为广大的科研人员、老师和学生提供了快速设计和验证量子机器学习算法的高效平台。

下图是MindQuantum的架构图,通过量子模拟器算子来对量子体系进行模拟,可以完成前向传播和梯度计算的功能。在此基础之上,还有量子算法库,如量子神经网络、量子化学模拟的VQE和量子优化算法QAOA等,再往上是量子应用,通过MindQuantum的量子算法进行机器学习、化学模拟和运筹优化等任务。

在MindQuantum中,量子神经网络的结构如下图所描述,其中的量子线路由三大块构成,编码线路会将经典数据编码到量子态上,然后是待训练线路,可以通过调节线路中逻辑门的参数来使得最后的测量结果符合预期。

3.7 百度

百度在2018年3月宣布成立量子计算研究所,结合公司自身强大的基础技术能力以及云计算等核心业务,重点研究量子算法、量子AI应用以及量子架构,开发量子计算平台并通过灵活高效的量子硬件接口与不同量子硬件系统进行对接,最终以云计算的方式输出量子计算的能力。

2020年5月,百度飞桨发布量子机器学习开发工具“量桨”(Paddle Quantum),使百度飞桨成为了国内首个、也是目前唯一支持量子机器学习的深度学习平台。同年9月,百度研究院量子计算研究所推出国内首个云原生量子计算平台“量易伏”(QuantumLeaf),可用于编程、模拟和运行量子计算机,为量子基础设施服务提供量子计算环境,与“量脉”和“量桨”共同形成百度量子平台的主体,提供连接顶层解决方案和底层硬件基础所需的大量软件工具及接口。

其中,Paddle Quantum(量桨)建立起了人工智能与量子计算的桥梁,为量子机器学习领域的研发提供强有力的支撑,也提供了丰富的案例供开发者学习。内容涵盖量子模拟、机器学习、组合优化、本地操作与经典通讯、量子神经网络等多个领域的教程。此外,量桨还支持基于测量的量子计算(MBQC),以下表格为MBQC跟量子电路模型的优势和限制比较。

4. 量子计算软件开源的意义

4.1 有利于技术的普及,以及培养用户的习惯

就市场推广而言,量子计算软件的开源能够更快地实现用户的触达,从而获取用户,同时通过开源,量子计算软件开源有利于培养用户的习惯,也有助于推动量子计算技术的普及。量子计算软件的开源能够允许更多的物理学家、数学家及相关企业参与到开发当中,加快量子计算技术应用在公众中的普及,从而提升开发的效率。

4.2 打开市场,扩大市场影响力

通过开源,新的产品能够能更快地打入市场,开放的源代码也更容易获得顾客的信任和了解;在市场中的既有竞品是闭源软件的情况下,开源的基础软件更容易建立上层生态,从而从生态而非软件本身来构建市场壁垒,帮助实现对既有产品的“弯道超车”。

4.3 增强品牌效应,更易获取投资

通过开源,企业还可以建立开源社区,可实现对技术、人才的网罗,调动社会资源,并树立拥抱开放的品牌形象,同时进行商业布局。企业通过开源传达出开放的信号,有助于树立正面的品牌形象,这也有利于为企业带来商业化利益,如:投资、产品服务、植入广告等商业变现活动。

据近期TechBullion公布的一组数据显示,到2027年,全球量子计算企业市场规模将达到39.074亿美元,预测期内复合年增长率为47.3%。量子科技作为新兴的前沿行业,近年来赢得了令人瞩目的成就,这些成就为投资者展示了量子科技的巨大前景,量子科技也正在成为风投蜂拥的领域。研究机构The Quantum Insider数据显示,今年上半年,全球量子领域投资总额已经超过了2020年全年,达到13亿美元。2020年全球量子投资总额首次突破了10亿美元,相当于此前四年的总和。根据The Quantum Insider的数据,近年来,全球量子技术的投资多达三分之二都集中于量子计算领域,其中包括量子计算硬件、软件或全栈公司。

4.4 实现人才招聘,以及开发成本的优化

目前国内量子计算领域还尚处于一个较初始的阶段,懂量子技术的开发者更加稀缺,而在人才的招聘方面,开源社区汇聚了一大批具备开发能力的人才,有利于企业从而挖掘符合企业要求的人才,不仅有利于降低招聘人才的各项成本,同时还有利于发现符合企业招聘要求的优秀人才。其次,通过开源还可以为企业节省较多的直接开发成本,如需求、设计、构建、测试、实施等各个环节的成本。软件开源后可为企业带来的引流价值和市场宣传等价值、项目直接商业化销售和开源形成的收入差等成本收益。

4.5 助力实现生态价值

开源对于量子计算企业的另一大价值体现在生态建设上,以量子计算开源项目为核心,构筑起产品之间、上下游行业之间、企业与个人用户之间的生态圈。企业与企业之间的通过开源项目进行协作,促进开源项目的提升和产品的完善。软件服务的最终目的是构建生态圈,开源所依托的开源社区天然地形成一个生态链接平台,企业通过构筑开放平台汇聚各环节参与者,形成开源生态。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容