亚马逊AWS官方博客

弧光量子 & Amazon Braket 实现全流程对接打造量子应用生态

isQ 作为国产、纯原生的编程语言是由中国科学院软件研究所(软件所)、清华大学计算机系与北京中科弧光量子软件技术有限公司(弧光量子)共同研发,具有简洁、易用、高效、扩展性强、可靠性高等特点。基于以上独特的优势,isQ 已完成与 Amazon Braket 全流程的对接,用户可以通过 isQ 设计和编程量子算法,并且能够方便地调用 Amazon Braket 后台提供的多种量子硬件资源,包括 Rigetti、OQC 的超导量子硬件、IonQ 的离子阱量子硬件、QuEra 的中性原子硬件以及 Xanadu 的光量子硬件等。这使得量子计算用户能够在真实的量子硬件上运行并验证他们的量子算法,为用户提供许多便利,为国内外各类机构及个人开展量子计算理论研究、基础实验和应用探索提供更优质的平台,帮助用户充分体验量子计算的优势。

isQ 的开发公司——弧光量子是一家专注于量子软件和量子计算应用的高科技公司,由中国科学院软件研究所及其量子软件研究团队共同出资设立,依托中国科学院计算机科学国家重点实验室,以产业化运营方式推进量子软件的快速发展和广泛应用,致力于成为世界一流的一站式量子软件产品和服务提供商。

isQ 功能介绍

isQ 是软件所、清华大学计算机系和弧光量子共同自主研发的量子编程语言。

isQ 不仅仅包含程序设计过程,还包括测试、分析、定理性证明、等价性验证等其他工具。即 isQ 包含从底层开发的设计逻辑到工程化的实现技术都是纯原生的,其包含的各种功能和实现逻辑框架如图所示。

isQ 量子编程语言

  • 支持经典量子混合编程,其语法功能主要包括:
    • 支持经典变量的定义及使用:四则运算,逻辑运算等。
    • 经典控制流:if-else,for-loop,while-loop。
    • 量子变量的定义及使用:酉门操作(基础门)和非酉操作(测量,重置)。
    • 自定义量子门:通过矩阵的形式定义酉门。
    • 量子 oracle 的定义与使用:通过真值表或者经典逻辑函数的方式定义。
    • 参数化编程:支持参数化电路的生成,在编译或运行时传入具体的参数值。其示例代码如图所示。
    • isQ 量子编译器
      • 定义了一套较为通用的量子中间表示。
      • 基于量子中间表示,进行了经典及量子电路层面的优化。
      • 对接了多种量子指令集,如 QIR,EQASM,QpenQASM,QCIS。

该量子编译器是 isQ 区别于其他量子编程软件栈的一个重要体现。通过这种通用的量子中间表示,编译器在保留部分高层语法结构的情况下进行程序的优化,并且通过代码生成模块便捷地将程序转换为不同形式的指令集,包括纯量子指令集(如 QCIS)和经典量子混合指令集(EQASM,QIR,OpenQASM)。isQ 工作流程如下图所示。

isQ 量子程序编译器要点

      • 将高层语言转换为底层硬件指令集。
      • 是 isQ 区别于其他量子编程软件栈的一个重要体现。
      • 借助量子中间表示,编译器在保留部分高层语法结构的情况下进行程序的优化,并且通过代码生成模块便捷地将程序转换为不同形式的指令集。

主要特点

    • 对量子 oracle 更友好的支持——支持真值表方式和逻辑表达式定义 oracle。
    • 支持高级结构的优化——直接优化循环,对于量子随机游走等算法能编译得到更优的电路深度,且编译时间更短。
    • 更好的硬件接口——针对硬件拓扑结构做进一步的电路优化。
    • 量子分布式编程——实现了分布式量子编程的基本框架。
  • isQ 与 Amazon Braket 对接
    • 对接框架
      我们基于 isQ 实现了与 Amazon Braket 的对接,并基于对接之后的框架调用了 Amazon Braket 的量子硬件资源,实现了一个量子机器学习任务。
      IsQ 与 Amazon Braket 对接的框架流程如下图所示。

      用户可以在弧光量子云平台上或是在本地终端上,通过 isQ 软件栈构建相应于不同任务的量子算法。我们首先基于 isQ 语法编写了量子程序,代码片段如下图所示。

      在构建好量子电路之后需要指定 backend 为 Amazon Braket,然后通过 Amazon Braket 即可指定需要调用的真实量子硬件资源,如图所示。

      在 isQ 和 Amazon Braket 实现全流程的对接之后,我们使用 1000 个样本的德国信用卡数据集(https://online.stat.psu.edu/stat508 /book/export/html/796)进行验证。此数据集有关于贷款申请人的 20 个人口社会特征信息,以及一个关于申请人是否存在信用卡风险(或者说是否批准申请人贷款申请)的标签,0 表示存在风险,1 表示申请人可信没有风险。我们基于 isQ 设计了 10 个量子比特的量子神经网络,通过 Pauli 测量输出是否批准贷款的预测结果。其整体的量子神经网络示意图如下所示。

      我们使用了 Amazon Braket 上的 79 量子比特超导量子计算机,如图所示。我们定义的神经网络包含 28 个参数,量子电路的深度为 15,参数迭代了近 10 个 epoch。

      我们选择了 500 个数据作为训练集,500 个作为测试集,在真实量子计算机上总共运行了大约 10000 次(10000个 task)。为了应用硬件,我们采用了 SPSA(Simultaneous Perturbation Stochastic Approximation)方法进行量子电路参数的更新,每 200 个训练集用来更新参数,之后 100 个测试集用以测试在当前更新参数后的测试准确率。使用和模拟器相同的 seed 下,最后我们获得了最好 61% 的准确率(在模拟器上为 65.4% 的准确率,使用的 AdamW 梯度更新方法)。

    • isQ 对接 Amazon Braket 的量子神经网络实现
      对于本次基于 isQ 搭建量子神经网络通过调用 Amazon Braket 的超导量子计算机训练信用卡数据集,我们采用的是 hybrid job 的方式。首先进入亚马逊云上的 Amazon Braket,然后选择 Amazon Braket 上的 jobs 创建 job,创建 job 需要将基于 isQ 搭建的量子神经网络训练模型代码上传至 Amazon S3 上,如图所示。

      然后将存在 S3 上的模型代码文件对应的 S3 URI 复制到 job 创建页面,如图所示。

      在指定要运行的模型代码文件之后需要有 isQ 和 Amazon Braket 的运行环境,因此需要自行构建一个包含 isQ 和 Amazon Braket 的 docker 镜像文件,并将镜像文件上传到 Amazon Elastic Container Registry(ECR)存储库中,复制 docker 镜像文件在 ECR 上的 URI 到 job 创建界面,如图所示。

      最后单击 create job 就创建好了 hybrid job,并在 Amazon Braket 的 jobs 界面就会显示目前 job 的状态信息,如图所示。

      在 Docker 容器中运行打印的输出结果会显示在 AWS CloudWatch 的日志组当中,如图所示。

最后

isQ 将与亚马逊硬件对接作为布局量子应用生态的重要基石。同时,弧光量子也积极寻求与其他国内外硬件资源的对接,不断升级已有的算法包,并深入不同行业,以实现更多领域的量子算法应用开发。我们坚信,这些努力将推动量子技术在科研及工程等领域的应用不断进步,为产业发展和应用探索开辟新的可能性。

本篇作者

楼华哲

弧光量子核心技术 isQ 语法及编译器的创始开发者,主导国内首个完整的量子程序设计平台的工程化开发,成功推动 isQ 与多种技术路线硬件的技术对接,参与超导硬件测控软件的开发。主要研究成果作为论文已被国际顶级期刊《IEEE 量子工程期刊》收录。

崔国龙

弧光量子量子计算算法解决方案架构师,国内量子计算算法研究的先驱人才,长期从事量子算法研究及工程化实现,并与国内外多家生物医药公司和金融企业展开合作。通过基于量子机器学习训练的数据,他已取得显著的量子优势。

宋旭宏

弧光量子量子计算行业分析师,兼具量子技术知识和行业经验的综合性量子计算的传播者。长期深耕量子计算行业分析的领域,为客户量身塑造前沿的量子计算解决方案。凭借敏锐的行业触觉,及时捕捉最新的技术趋势,已助力客户在量子计算中占据领先地位。

Kelvin Guo

亚马逊云科技资深解决方案架构师。主要技术方向为 MLOps,DevOps,容器,数据分析。20+年软件开发,项目管理,敏捷思想落地,工程效能咨询和落地经验。