当前正处于量子计算发展的爆发期,量子计算机硬件、软件都在快速迭代升级,全球的量子计算机开发也越来越活跃。本文将延续上篇文章,为大家介绍国内外大厂量子开源软件的发展和应用。
据波士顿咨询发布的报告预测,在不考虑量子纠错算法的进展情况下,2035年全球量子计算应用市场规模将达到近20亿美元,随后暴涨到2050年的2600多亿美元;若量子计算技术迭代速度超出预期,2035年市场规模可突破600亿美元,2050年则有望飙升至2950亿美元。各国争先布局量子计算领域产业。
Cirq 是Google开源的一个量子编程框架,它提供了所有基本运算(例如量子位、门、电路和测试),用于编写、操作和优化量子电路,并针对量子计算机和模拟器运行它们,将帮助开发人员在机器上进行试验,其中包括谷歌自家的超强量子处理器。
Google还发布了 Cirq 软件工具包,让开发人员在不需要量子物理背景的情况下也可以创建算法,该计划也这意味着任何人都可以访问和修改该软件。谷歌将其比作流行的TensorFlow开源工具包,该工具包使得构建机器学习软件变得更加容易。目前,开发人员可以使用 Cirq 创建在模拟器上运行的量子算法。以下是启动并运行Cirq示例:
import cirq
# Pick a qubit.
qubit = cirq.GridQubit(0, 0)
# Create a circuit
circuit = cirq.Circuit(
cirq.X(qubit)**0.5, # Square root of NOT.
cirq.measure(qubit, key='m') # Measurement.
)
print("Circuit:")
print(circuit)
# Simulate the circuit several times.
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=20)
print("Results:")
print(result)
示例结果输出:
Circuit:
(0, 0): ───X^0.5───M('m')───
Results:
m=11000111111011001000
TensorFlowQuantum (TFQ) 是Google发布的量子机器学习开源库,用于混合量子经典机器学习的 Python 框架,致力于建模量子数据。TensorFlow Quantum集成了许多量子算法和逻辑,并提供与现有 TensorFlow API 兼容的量子计算原函数,以及高性能量子电路模拟器。它将量子计算基元(如构建量子电路)引入 TensorFlow 生态系统,使用 TensorFlow 构建的模型和运算使用这些基元来创建功能强大的量子经典混合系统。目前,TensorFlow Quantum 主要面向在经典量子电路模拟器上执行量子电路。
2019年11月,Microsoft推出量子云生态服务--Azure Quantum,为开发者和客户提供预先构建的解决方案以及软件和量子硬件。用户通过使用Azure Quantum及其开发者工具包工具集,可对量子算法进行编程,并优化解决方案,然后在Azure平台内应用这些量子解决方案。
Azure 量子提供商主要包括量子硬件的提供商,以及方案优化提供商。
Azure Quantum 的客户主要是使用Azure提供的量子机器以及 Azure 提供的量子优化服务。其中量子优化服务占了一定的比例。优化服务涉及的领域有导航(复杂的线路规划)、材料化学以及自动驾驶等领域。
QDK 主要包含两部分,首先是量子库,主要是针对不同行业提供了量子算法的封装,包含基本库,化学库,机器学习库等。其次是量子模拟器,针对不同量子场景,提供了不同的量子模拟器。
其量子模拟器的详细说明
以下是量子程序在Azure Quantum上完成实现的阶段工作流
(1)编写量子代码。可以使用适用于 Visual Studio、Visual Studio Code 或 Jupyter Notebook 的 QDK 扩展创建 Q# 程序。
(2)使用库来保持代码的精简程度。量子库可保持代码的精简程度,在执行中完成大量繁重的工作,使用户能够专注于算法的逻辑。
(3)与传统软件集成。使用Quantum开发工具包,可以将 Q# 程序与 Python 和 .NET 集成。
(4)在模拟中运行量子代码。编写程序后,需要使用量子模拟器,以便运行程序的一个小实例,并查看它的功能,而无需访问实际的硬件。
(5)估算资源。运行量子硬件之前,需要确定程序是否可以在现有硬件上运行。可以使用 QDK 资源估算器来获知需要多少个量子比特以及程序需要多长时间。
(6)在量子硬件上运行代码。最后一步是使用 Azure Quantum 在量子硬件上运行用户的程序。
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功能点
名称 | 说明 |
QPU | 1.QPU资源有限,任务采取排队机制,不会立刻返回运算结果, 提供API获取任务执行状态; 2.目前支持 quantum annealing: (D-Wave) 和 gate-model(ionq, Rigetti,OQC) |
Simulator | 1.本地Simulator(免费),集成在Braket SDK中; 2.On-demand Simulator(收费),更高效的模拟服务,支持更多的qubit,embedded simulator等; 3.Nosie模拟,支持两种介入方式:初始化量子线路时介入以及线路运行过程中介入。 |
notebook | 1.可直接创建集成了 Braket SDK的notebook instance; 2.也可下载Braket SDK,在本地部署jupyter。 |
Braket Moment属性 | moment属性的目的是以门为单位,切割一个 circuit,获取 circuit 在某个门操作完成后,当下 相应qubit的状态,从而分析算法的运行过程 |
Task batching | 1.local simulator 不支持; 2.On-demand simulator & QPU支持, 允许circuit 并行,(并行价格更高) |
Task Result | 1.有统一的结果查询入口,方便历史结果查询; 2.结果持久化到s3; 3.结果内容包括:task id, task status,device arn, timestamp |
Hybrid jobs | 1.不同Region,支持的QPU不同,不能跨Region访问当前Region不支持的QPU; 2.可选择预装了PennyLane (Tensorflow, PyTorch)的container; 3.支持BYOC, 通过 Dockerfile, 自定义 container; 4.创建job instance(EC2), 上传算法代码,Job结束后,ec2资源自动释放 |
Notification | 联合SNS, 可以知道任务执行状态以及QPU变化状态。 |
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中查看。
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 量子线路编程。
结果可视化,可以可视化执行的量子线路以及结果。
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
classiq.authenticate()
运行此脚本将在默认浏览器中打开以下确认窗口。
确保窗口中显示的用户代码与脚本打印的用户代码相同。按确认后,出现以下登录屏幕。
使用可用选项之一完成登录。身份验证过程完成后,脚本将结束运行,就能够在当前设备上自由使用 SDK。
使用示例 以下代码示例演示了使用 SDK 进行电路综合。该电路实现了准备量子态并将量子傅里叶变换应用于该状态。得到的电路如下图所示:
1. from classiq import ModelDesigner, QReg
2. from classiq.builtin_functions import StatePreparation, QFT
3. from classiq.interface.generator.state_preparation import (
4. Metrics,
5. NonNegativeFloatRange,
6. )
7.
8. model_designer = ModelDesigner()
9.
10. x = QReg(size=3)
11.
12. probabilities = (0.5, 0.1, 0.2, 0.005, 0.015, 0.12, 0.035, 0.025)
13. sp_params = StatePreparation(
14. probabilities=probabilities,
15. num_qubits=x.size + 1, # 1 extra for an auxillary qubit
16. error_metric={Metrics.KL: NonNegativeFloatRange(upper_bound=0.3)},
17. )
18.
19. model_designer.StatePreparation(params=sp_params, out_wires=x)
20. model_designer.preferences.draw_as_functions = False
21.
22. qft_params = QFT(num_qubits=x.size)
23. model_designer.QFT(params=qft_params, in_wires=x)
24.
25. circuit = model_designer.synthesize()
26. circuit.show()
华为于2012年起开始从事量子计算的研究,量子计算作为华为中央研究院数据中心实验室的重要研究领域,研究方向包括了量子计算软件,量子算法与应用等。
在2021年3月28日,华为MindSpore(AI计算框架)正式开源了量子机器学习库MindQuantum。MindQuantum是结合MindSpore和HiQ开发的量子机器学习库,支持多种量子神经网络的训练和推理。得益于华为HiQ团队的量子计算研发能力和MindSpore高性能自动微分能力,MindQuantum能够高效处理量子机器学习、量子化学模拟和量子优化等问题,为广大的科研人员、老师和学生提供了快速设计和验证量子机器学习算法的高效平台。
下图是MindQuantum的架构图,通过量子模拟器算子来对量子体系进行模拟,可以完成前向传播和梯度计算的功能。在此基础之上,还有量子算法库,如量子神经网络、量子化学模拟的VQE和量子优化算法QAOA等,再往上是量子应用,通过MindQuantum的量子算法进行机器学习、化学模拟和运筹优化等任务。
在MindQuantum中,量子神经网络的结构如下图所描述,其中的量子线路由三大块构成,编码线路会将经典数据编码到量子态上,然后是待训练线路,可以通过调节线路中逻辑门的参数来使得最后的测量结果符合预期。
百度在2018年3月宣布成立量子计算研究所,结合公司自身强大的基础技术能力以及云计算等核心业务,重点研究量子算法、量子AI应用以及量子架构,开发量子计算平台并通过灵活高效的量子硬件接口与不同量子硬件系统进行对接,最终以云计算的方式输出量子计算的能力。
2020年5月,百度飞桨发布量子机器学习开发工具“量桨”(Paddle Quantum),使百度飞桨成为了国内首个、也是目前唯一支持量子机器学习的深度学习平台。同年9月,百度研究院量子计算研究所推出国内首个云原生量子计算平台“量易伏”(QuantumLeaf),可用于编程、模拟和运行量子计算机,为量子基础设施服务提供量子计算环境,与“量脉”和“量桨”共同形成百度量子平台的主体,提供连接顶层解决方案和底层硬件基础所需的大量软件工具及接口。
其中,Paddle Quantum(量桨)建立起了人工智能与量子计算的桥梁,为量子机器学习领域的研发提供强有力的支撑,也提供了丰富的案例供开发者学习。内容涵盖量子模拟、机器学习、组合优化、本地操作与经典通讯、量子神经网络等多个领域的教程。此外,量桨还支持基于测量的量子计算(MBQC),以下表格为MBQC跟量子电路模型的优势和限制比较。
量子电路模型 | 基于测量的量子计算模型 | |
优势 | 与经典计算模型对应易于理解和拓展应用 | 资源态可与计算无关;单比特测量易于操作;可并行测量,算法深度低 |
限制 | 量子门执行顺序固定;电路深度受相干时间限制 | 无经典对应,不直观;资源态比特数多,制备难度高 |
就市场推广而言,量子计算软件的开源能够更快地实现用户的触达,从而获取用户,同时通过开源,量子计算软件开源有利于培养用户的习惯,也有助于推动量子计算技术的普及。量子计算软件的开源能够允许更多的物理学家、数学家及相关企业参与到开发当中,加快量子计算技术应用在公众中的普及,从而提升开发的效率。
通过开源,新的产品能够能更快地打入市场,开放的源代码也更容易获得顾客的信任和了解;在市场中的既有竞品是闭源软件的情况下,开源的基础软件更容易建立上层生态,从而从生态而非软件本身来构建市场壁垒,帮助实现对既有产品的“弯道超车”。
通过开源,企业还可以建立开源社区,可实现对技术、人才的网罗,调动社会资源,并树立拥抱开放的品牌形象,同时进行商业布局。企业通过开源传达出开放的信号,有助于树立正面的品牌形象,这也有利于为企业带来商业化利益,如:投资、产品服务、植入广告等商业变现活动。
据近期TechBullion公布的一组数据显示,到2027年,全球量子计算企业市场规模将达到39.074亿美元,预测期内复合年增长率为47.3%。量子科技作为新兴的前沿行业,近年来赢得了令人瞩目的成就,这些成就为投资者展示了量子科技的巨大前景,量子科技也正在成为风投蜂拥的领域。研究机构The Quantum Insider数据显示,今年上半年,全球量子领域投资总额已经超过了2020年全年,达到13亿美元。2020年全球量子投资总额首次突破了10亿美元,相当于此前四年的总和。根据The Quantum Insider的数据,近年来,全球量子技术的投资多达三分之二都集中于量子计算领域,其中包括量子计算硬件、软件或全栈公司。
目前国内量子计算领域还尚处于一个较初始的阶段,懂量子技术的开发者更加稀缺,而在人才的招聘方面,开源社区汇聚了一大批具备开发能力的人才,有利于企业从而挖掘符合企业要求的人才,不仅有利于降低招聘人才的各项成本,同时还有利于发现符合企业招聘要求的优秀人才。其次,通过开源还可以为企业节省较多的直接开发成本,如需求、设计、构建、测试、实施等各个环节的成本。软件开源后可为企业带来的引流价值和市场宣传等价值、项目直接商业化销售和开源形成的收入差等成本收益。
开源对于量子计算企业的另一大价值体现在生态建设上,以量子计算开源项目为核心,构筑起产品之间、上下游行业之间、企业与个人用户之间的生态圈。企业与企业之间的通过开源项目进行协作,促进开源项目的提升和产品的完善。软件服务的最终目的是构建生态圈,开源所依托的开源社区天然地形成一个生态链接平台,企业通过构筑开放平台汇聚各环节参与者,形成开源生态。
当前正处于量子计算发展的爆发期,量子计算机硬件、软件都在快速迭代升级,全球的量子计算机开发也越来越活跃。启科量子作为量子计算领域的先行者,将致力于推动量子技术的普及,以及推进量子计算开源软件的发展,形成以量子计算为核心的产业生态,增强我国在量子计算领域的竞争力。