启科量子将按计划启动量子计算软件开源项目——QuTrunk 项目。QuTrunk 为启科量子即将开源的自研量子编程框架软件产品。此次 QuTrunk 项目开源旨在分享启科量子编程软件的部分技术成果,推动量子软件科技的发展与创新,有助于推动量子计算软件工具生态系统建设。
QuTrunk开源项目介绍
QuTrunk 项目是启科量子在量子计算软件研发项目之一,以研发量子编程框架软件为主,主要为量子编程开发提供通用的软件环境。量子计算领域中,量子计算编程软件体系可大致分为硬件、汇编语言、量子线路、量子算法、全栈库、量子通用语言等六个环节。其中 QuTrunk 软件属于量子线路环节。目前量子编程框架 QuTrunk 以 QuSprout 作为后端。QuSprout 也是启科量子自研的一款基于经典计算资源的量子计算模拟软件,支持支持多线程、多节点、GPU 加速,也可预安装在 QuBox 中。
启科量子计算软件产品在设计之初已充分考虑到量子软件产品体系布局的 完整性及各产品之间的独立性。整个量子软件产品体系主要采用分层架构,既可 至上而下解耦为独立产品,又可以随意搭配组合为新的产品体系对外使用,每个 独立的软件产品层接口预留充足,使用的灵活性和可扩展性极强,如启科自研QuBranch QuTrunk QuBox、QuBranch QuTrunk QuRoot 等系列产品。QuTrunk 项 目为量子编程工作提供了量子底层的软件架构,建立起一套统一的量子编程规范, 进而实现量子程序开发的“降本增效”。
目前,国内外也有多家科技公司对量子软件产品进行开源,有开源产品或项目如量子计算开源软件框架 ProjectQ、IBM 公司的开源量子编程开发工具包Qiskit、谷歌开源量子算法框架 Criq、本源量子开源软件项目 QPanda 等。启科量子也将按计划启动量子编程框架软件的开源项目 QuTrunk,旨在通过产品开源的方式促进量子计算软件技术的发展与普及。本次 QuTrunk 量子编程语言框架项目开源旨在推动量子计算软件科技的发展与创新,为量子计算硬件技术攻坚克难提供内生动力,以科技创新引领量子计 算技术发展。QuTrunk 量子开源项目的参与者还将有机会对话量子计算领域翘楚, 拓展编程技术技能,在前沿技术领域中打造量子与人工智能个人品牌。
量子计算技术
早在二十世纪八十年代,理查德·菲利普斯·费曼(Richard Phillips Feynman) 就已提出量子计算机的构想。Shor 推导出同名的“Shor 算法”为量子计算开端打下坚实的基础,这项开创性的工作在理论上证明了量子计算超高的指数级运算效率。随着量子计算技术的不断发展与创新,量子计算软件产品层出不穷,新一代的量子计算发展图景轮廓逐渐清晰。与此同时,量子计算软件的发展也将在一定程度上推动量子硬件的研发工作。就量子计算硬件发展的阶段而言,当前我们正处于含噪声中等规模量子计算时代(NISQ)。
在 NISQ 时代(即含噪声的中型量子,NISQ 全称:Noisy Intermediate-Scale Quantum)高量子噪声是量子计算机的研发难点。尽管量子比特性能强大,但量子位的数量尚不过百,及其容易受到外界环境干扰而导致其状态遭到破坏。而量子模拟器可以实现在不受量子噪声的影响下开发量子应用程序,且可执行的量子程序规模不会受到物理量子计算机保真度的制约。因此,量子模拟器(Quantum simulators)是量子计算机研究中的一种很好的替代方案。量子模拟器是在经典计算机上实现对量子计算机的模拟,其运行完全遵照量子计算机的规律,也可称其为量子虚拟机。启科量子也采用前沿的技术思路,积极筹备并投入到量子计算软件研发工作中,增加量子计算领域的技术积累。
启科量子在量子计算软件产品方面正尝试应用于金融领域的多种量化分析情景、生物医药中的组合优化场景、信息搜索挖掘和算法推荐等大数据优化等多种优化场景。被誉为未来科技的人工智能与量子计算也在不断的碰撞与融合中衍生出多种量子人工智能的产品及应用,具有较好的应用前景与较高的应用价值。
QuTrunk——量子编程框架
QuTrunk 为一款量子编程框架软件产品,使用 Python 作为宿主语言,利用Python 的语法特性实现针对量子程序的 DSL(领域专用语言),所有支持 Python 编程的 IDE 均可安装使用 QuTrunk。
QuTrunk 基于量子逻辑门、量子线路等概念提供量子编程所需的各类API。这些 API 分别由相应的模块实现,比如 QCircuit 实现量子线路功能,Qubit 实现量子比特,Qureg 实现量子寄存器,Command 对应每个量子门操作的指令, Backend 代表运行量子线路的后端模块,gate 模块实现了各类基础量子门操作。同时 QuTrunk 还可以作为其他上层量子计算应用的基础,比如:量子算法、量子可视化编程、量子机器学习等。
图为:QuTrunk内部模块划分及层次结构
灵活的后端设备扩展功能QuTrunk
设有多种量子计算后端模块,如:BackendLocalPy(本地 Python 版本模拟器);BackendLocalCpp(本地 C 版本模拟器);BackendQuSprout(量子计算云服务);BackendIBM(IBM 量子云计算平台)等。开发者在使用 QuTrunk 开发量子程序时,可选择启科自研的量子计算设备 QuBox 作为后端,使用丰富的量子模拟资源运行量子算法。QuBox 连接方式包括远程连接模式和本地模式两种。在采用远程连接方式时,QuBox 只提供量子编程 API,可维护量子线路所有状态, 极大减少对本地资源的占用情况。而本地模式可以使 QuTrunk 成为量子编程与量子模拟的全栈框架。QuTrunk 使用的本地量子计算后端可提供全振幅量子模拟计算。量子云服务可提供 OMP 多线程、多点并行 MPI、GPU 等计算加速,同时预留了对接离子阱量子计算机的接口。
普适的混合量子-经典编程形式
QuTrunk 支持混合量子-经典程序编写,已设计了量子线路分段执行机制, 提供 QuSL 量子汇编指令标准,与 Python 代码完全兼容。由于量子算法中也包含有部分经典计算,因此在使用 QuTrunk 进行编程的过程中,当经典算法与量子算法产生依赖交互时,QuTrunk 可立刻将当前线路信息发送至后端运行并获取运行结果。目前的量子计算软件产品大多使用量子模拟器替代量子计算机,在模拟器模拟完成理论中量子比特的全部状态后,返回最终的真实结果。
为了能在量子虚拟机中更好的模拟真实量子计算机带来的计算误差, QuTrunk 支持在量子线路初始化时设置噪声模型,可为用户带来真实的量子编程体验。QuTrunk 的全振幅量子模拟功能可以一次性模拟计算量子态的所有振幅, 在初始化时配置适当的计算方式,即可体验差异化的计算效率。在通用量子计算机正式问世之前,混合量子-经典计算将是量子计算领域一种很好的发展思路。
简易的编程语言设计与丰富的量子门资源
在 QuTrunk 框架设计之初,研发人员充分遵循产品的易用性、便捷性等设计原则。通过重载“ * ”或“ |”运算符为开发者提供一种近似物理表达式的运算操作方式,让各种量子门表现形式更加直观,降低使用门槛。量子逻辑门是量子算法的基本组成单元,QuTrunk 对所有量子逻辑门及量子编程涉及到的基本概念进行了封装与实现,支持主流的量子算法。在使用 QuTrunk 进行量子编程时, 开发者只需通过提供的量子编程 API 即可直接调用量子逻辑门进行使用。
提供双向解析支持和完备的数据信息统计功能
QuTrunk 框架可在运行的同时不改变整个状态矢量,并获取线路的状态取值, 比如计算某种状态出现的概率信息、计算所有状态的概率振幅信息等。此外, QuTrunk 框架还支持量子线路运行统计功能,如量子比特数、量子门等量子线路信息及运行耗时等设备信息。QuTrunk 还提供了 QASM 的解析功能,即提供双向支持:支持导出 OpenQASM,也支持将 OpenQASM 解析为 QuTrunk 格式。
直观的量子线路打印与可视化编程功能
QuTrunk 与启科自研的量子集成开发环境 QuBranch 配合使用时,支持可视化量子编程,只需通过简单拖拽量子逻辑门符号即可自动生成相应代码和量子态柱状图等。QuTrunk 支持量子线路打印功能。使用时只需要输入线路打印命令, 即可在终端以字符串方式打印量子线路。在量子线路的图形表示中,有多条并排直线分别代表不同的量子比特。其中直线从左到右表示时间顺序,直线上排列的不同符号表示不同的量子逻辑门操作。经过各个逻辑门操作后的量子态都会发生相应的改变。通过 QuTrunk 打印出的量子线路,可以更直观的了解到量子线路中的线路设计。
代码语言:javascript复制q0: ────H────●───────
│
q1: ─────────⊕──────
q2: ──RY(theta)──────
量子软件产品开源的意义
中国信息技术的飞速发展为开源事业奠定了基础。根据 InfoQ 的研究报告显示,目前中国开发者已超过 1000 万。中国整体参与开源的核心人群也已从认知期进入生产期,未来有望引流全球的开源事业。综合开源事业在国内的发展情况, 软件开源已经成为软件行业的一种主流趋势。量子计算软件的开源将有助于推动量子计算软件工具生态系统建设,培养以解决量子计算问题为核心的开发者社区。启科量子计划开源 QuTrunk 项目,欢迎各行业的量子、AI 从业者或爱好者加入 QuTrunk 开源项目。
QuTrunk 项目开源协议为 Apache License 2.0