量子编程框架软件的计算后端
  IyvZMorDF85N 2023年11月02日 34 0

在真正可用量子计算机还未研制出来之前,量子模拟器后端可以支持用户进行更高效率的模拟计算、进行多个量子线路任务管理和实现多进程并行计算、返回量子线路的计算结果。现阶段有许多巨头企业已经在量子计算行业布局多年,也有在量子计算行业有多年技术基础的研发团队进军量子算计算行业。国内市场也开始出现与量子计算结合的一些新兴产物,如人工智能行业与量子计算结合、高性能计算与量子计算模拟等。本文将主要介绍量子编程框架的计算后端,旨在阐述量子计算软件发展的基础支撑。


1.Paddle Quantum

飞桨(PaddlePaddle)是百度公司发布的一个开源深度学习平台,积累了百度在深度学习方面多年的技术研究和业务应用基础,集成了深度学习核心训练和推理框架、基础模型库、端到端开发套件等丰富的工具组件。百度飞桨(PaddlePaddle)早在2018年10月就已发布Paddle的开源框架V1.0的稳定版本。

近日,随着ChatGPT的在国内爆火,百度也对外介绍了其大模型项目文心一言,英文名为ERNIE Bot。人工智能技术驱动的自然语言处理工具软件需要大量的算力(芯片)来支持其训练与部署,需要大量的预料数据训练模型和大算力的服务器做应用支持。如果这类技术衍生出搜索引擎等为普通大众服务的软件,低能耗且高效的算力平台将会成该类产品发展的必要支撑。2020年初,百度发布了基于百度飞桨(PaddlePaddle)研发的量子机器学习平台量桨(Paddle Quantum),主要支持量子神经网络的搭建与训练,提供量子化学、组合优化等功能。

量子编程框架软件的计算后端_量子计算

图:量羲技术全景图

乾始的定位是集量子硬件、量子软件、量子应用于一体的产业级超导量子计算机,目前可以为客户提供10 量子比特高保真度超导量子硬件资源服务。整个使用流程及产品路线如下图所示,用户通过量子相关软件产品(量子应用),经由量子操作系统(量易伏)处理,通过量子软硬件接口(量脉)运行量子硬件资源。主要硬件资源包括超导量子硬件、第三方量子硬件及提供软件模拟的经典计算资源等。

量子编程框架软件的计算后端_ci_02


2.QPanda计算后端

QPanda是由本源量子开发的开源量子计算编程框架,它可以用于构建、运行和优化量子算法。QPanda作为本源量子计算系列软件的基础库,为OriginIR、Qurator、量子计算服务提供核心部件。目前提供C++和Python两种版本。其中Qurator为QPanda提供开发环境,OriginIR、Quil均为Qpanda的量子编程语言。OriginIR可以支持延续经典计算中的if、While操作,在QPanda中表示为Qif、QWhile。这方面的的设计主要可以实现量子程序内嵌经典程序,实质上也是一种经典-量子混合的逻辑。关于OriginIR、Quil的具体情况将在后期文章中具体介绍。

量子编程框架软件的计算后端_ci_03

真实量子计算服务      

本源官方网站提供真实的量子计算服务,悟源1号和悟源2号均能提供6个量子比特的真实量子计算服务。因为量子比特数量规模的限制,许多量子算法还无法在真正的量子计算中运行。   

模拟量子计算服务

模拟量子计算服务主要是由QriginQ集群提供,该集群虚拟机类型比较丰富,包括全振幅量子虚拟机(35Qbite)、部分振幅量子虚拟机(68Qbite)、单振幅量子虚拟机(200Qbite)、含噪声量子虚拟机(34Qbite)。

目前QPanda的后端计算资源由本源超导量子计算机作为支撑,未使用其他三方量子计算资源,在量子计算全栈产品研发方面成绩斐然。


3.QuTrunk计算后端

启科量子自主研发一款量子编程框架 QuTrunk,为量子编程开发提供了一个通用的软件环境。QuTrunk 使用 Python 作为宿主语言,利用 Python 的语法特性实现针对量子程序的 DSL(领域专用语言),所有支持 Python 编程的 IDE 均可安装使用 QuTrunk。目前,QuTrunk的量子计算后端模块主要用于执行量子线路,支持Python本地后端、qusprout和qusaas两种远程后端以及第三方后端(目前支持IBM和AWS Braket)。QuSprout是启科量子自研的一款基于经典计算资源的量子计算模拟软件,支持支持多线程、多节点、GPU 加速,也可预安装在 QuBox 中。当用户使用QuTrunk生成量子线路后, 如果需要更高的运行效率,需要连接到 QuSprout 计算后端来进行模拟计算。


3.1Python本地后端

QuTrunk的backend模块是量子计算后端模块,用于执行量子线路,支持Python本地后端。本地后端的使用需要将量子线路到本地后端运行、获取线路的状态向量和概率或计算Pauli操作的期望值。首先使用from qutrunk.backends import BackendLocal准备计算后端,参照如下示例:

from qutrunk.backends import BackendLocal
from qutrunk.circuit import QCircuit
from qutrunk.circuit.gates import H, CNOT, Measure

new QCircuit object
qc = QCircuit(backend=BackendLocal())
or use as default
qc = QCircuit()
qr = qc.allocate(2)
H * qr[0]
CNOT * (qr[0], qr[1])
Measure * qr[0]
Measure * qr[1]
res = qc.run(shots=100)


3.2QuSprout 后端

QuSprout 提供了qusprout,quwork 服务模块来支持量子计算的模拟。qusprout 服务通过 RPC 与 QuTrunk 量子编程框架连接,主要负责量子线路的任务管理、quwork 服务的启动等。quwork 服务主要负责量子线路的计算并返回计算结果。QuSprout提供多线程OMP、多节点并行MPI、GPU硬件加速。要使用QuSprout,请确保网络已连接并且服务IP和端口设置正确。(开源地址:https://github.com/qudoor/qusprout)

量子编程框架软件的计算后端_ci_04

首先使用from qutrunk.backends import BackendQuSprout准备QuSprout后端,使用示例如下:

from qutrunk.circuit import QCircuit
from qutrunk.backends import BackendQuSprout
from qutrunk.circuit.gates import H, CNOT, Measure
use BackendQuSprout
qc = QCircuit(backend=BackendQuSprout())
qr = qc.allocate(2)

apply gate
H * qr[0]
CNOT * (qr[0], qr[1])
Measure * qr[0]
Measure * qr[1]

run circuit
res = qc.run(shots=100)

print result
print(res.get_counts())

以上示例包含了一般量子程序步骤,包括计算后端的选择、量子门应用(根据量子汇编QuSL,按需使用量子逻辑门操作)、运行量子线路、打印运行结果。


4.可扩展的第三方后端

4.1IBM后端    

IBM Backend  

使用QuTrunk调用IBM Backend:使用from qutrunk.backends import BackendIBM准备IBM后端。注意,这里使用IBM后端需要输入token验证。在使用三方后端时,都需要获取可用的后端设备列表,然后再将量子线路发送到第三方后端,最后返回计算结果。

使用示例:

from qutrunk.circuit import QCircuit
from qutrunk.backends import BackendIBM
from qutrunk.circuit.gates import H, CNOT, Measure

use BackendIBM
token = "IBM Quantum token"
qc = QCircuit(backend=BackendIBM(token=token))
qr = qc.allocate(2)

apply gate
H * qr[0]
CNOT * (qr[0], qr[1])
Measure * qr[0]
Measure * qr[1]

run circuit
res = qc.run(shots=100)
print(res)

 

IBM QE Cloud Platform

在IBM QE云平台上运行量子线路,主要是管理QuTrunk和the IBMQ web API之间的session。在QuTrunk和IBMQ WEB API之间管理会话控制,主要包括获取合适的后端设备,判断资源是否可以运行量子程序,从而获取可用的IBM backends设备列表。IBM模拟器如下:

量子编程框架软件的计算后端_量子计算_05


4.2Amazon Braket

Amazon Braket 提供四种模拟器,分别为本地模拟器、SV1、TN1、DM1。如果我们的内存量足够大的或者进行原型设计时可以使用本地模拟器;当模拟的量子比特数超过 34 量子比特全状态向量时则需要使用 SV1;DM1 用于模拟高达 16 量子比特的线路上的噪声;TN1 用于模拟局部纠缠高达 50 量子比特的量子线路。目前QuTrunk也可以通过AWS Braket使用各种后端计算资源,具体操作可见https://github.com/qudoor/qutrunk

启科最新发布的离子阱量子计算工程机”天算1号“AbaQ1 采用分布式设计每个节点捕捉 20 个完全链接的离子,平台可接驳最多 8 个计算节点,最多可达到一百多量子比特的链接。目前,QuTrunk的量子计算后端模块主要用于执行量子线路,支持Python本地后端、qusprout和qusaas两种远程后端以及第三方后端(目前支持IBM和AWS Braket),后续可能会增加更多适用后端。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月09日   30   0   0 cii++数据
  X5zJxoD00Cah   2023年12月11日   26   0   0 知乎Python迭代器
  X5zJxoD00Cah   2023年12月12日   34   0   0 Python.net
  gBkHYLY8jvYd   2023年12月08日   21   0   0 #includecii++
  gBkHYLY8jvYd   2023年12月11日   20   0   0 cic++最小值
IyvZMorDF85N