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

目录

isQ 功能介绍

isQ 量子编程语言

最后


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 的日志组当中,如图所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值