IBM Qiskit 架构
如上图所示,qiskit由四部份组成,Terra, Aer, Ignis, Aqua
Terra
Terra是“土”元素,是Qiskit其余部分的基础。Terra是在线路和脉冲级别上构成量子程序的基础,并且针对特定设备进行了优化,同时管理远程量子设备上所执行的一批实验。Terra定义了各种交互接口,以提供理想的最终用户体验,以及对优化层,脉冲调度和后端通信的有效处理。
Qiskit Terra分为六个主要模块:
-
Circuit 量子电路是用于量子计算的模型,通过对量子位的寄存器执行一系列量子操作(通常是门)来完成计算。量子电路通常以量子点中的量子位|0,…,0>开始和这些量子操作将量子位演化为无法在传统计算机上有效表示的状态。为了提取关于状态的信息,量子电路必须进行测量,测量结果(由于量子系统的基本性质,结果可能是随机的)被映射到可以有效表示的经典寄存器中。
-
Pulse 脉冲计划表是一组脉冲,这些脉冲将发送到应用于量子实验的实验通道中(实验输入线)。这是比电路更下层的结构,因此需要将电路中的每个门表示为一组脉冲。在此级别上,可以设计实验以减少误差(动态去耦,误差减轻和最佳脉冲形态)。
-
Transpiler 量子计算研究的主要内容是研究如何在真实设备上运行量子电路。在这些设备中,实验误差和退相干会在计算过程中引入误差。因此,为了获得可靠的实现,必须减少量子电路的门数和总运行时间。编译器通过引入管理器的概念,来允许用户探索优化其给定的算法,以找到更好的量子电路。我们称其为编译器,因为最终结果仍然是电路。
-
Providers 一旦用户使电路在后端上运行,他们就需要一种使用它的便捷方法。在Terra中,我们使用四个部分进行此操作:
-
Provider 是提供一组不同后端(Backend)的一个实体(例如,通过此后端可用的IBM量子体验)。它与这些后端进行交互,以例如找出哪些可用的后端,或检索特定后端的实例。
-
Backend 代表模拟器或真实的量子计算机,负责运行量子电路并返回结果。他们有一个run方法,该方法接受qobj作为输入并返回BaseJob对象。该对象允许作业的异步运行,以便在作业完成时从后端检索结果。
-
Job 为已提交的作业。其能监视给定时间点的作业的执行状态(例如,是否作业正在排队,正在运行或已失败),还可以控制该作业。
-
Result. 作业完成后,Terra允许使用result = job.result()从远程后端获取结果。该结果对象保存着量子数据,并且与之交互的最常见方式是使用result.get_counts(circuit)。这种方法允许用户从量子电路中获取原始计数,并将其用于Terra所提供的量子信息工具中进行更多分析。
-
Quantum Information 要执行更高级的算法和对在量子计算机上运行的电路进行分析,拥有实现简单量子信息任务的工具非常重要。这些方法包括估计指标,生成量子状态、量子操作和量子通道。
-
Visualization 在Terra中,我们有许多工具可以可视化量子电路。这样可以快速检查量子电路,以确保它是用户想要实现的。有文本,python和 latex 版本。一旦电路运行,重要的是能够查看输出。有一个简单的函数(plot_histogram)可以绘制包含交互式版本的量子电路的结果。还有一个函数plot_state和plot_bloch_vector允许绘制量子态。这些功能通常仅在使用statevector_simulator后端时使用, 但也可以在运行状态层析成像实验(Ignis)之后用于实际数据。
Aer
Aer“空气”元素,Aer渗透到所有Qiskit元素中。为了真正加速量子计算机的开发,我们需要更好的模拟器,仿真器和调试器。Aer通过演示经典处理器在多大程度上可以模拟量子计算,从而帮助我们了解经典处理器的局限性。此外,我们可以使用Aer来验证当前和不久将来的量子计算机是否正常运行。这可以通过扩大模拟范围,并模拟现实噪声对计算的影响来完成。
Aer使用Qiskit软件堆栈为量子电路提供了高性能仿真器框架。它包含优化的C ++仿真器后端,用于执行Terra中编译的电路。Aer还提供了用于构建高度可配置的噪声模型的工具,以对在真实设备上执行期间发生的错误执行逼真的噪声仿真。
Qiskit Aer包括三个高性能模拟器后端:
-
Qasm模拟器
允许对qiskit电路进行理想或者含噪的多次执行,并返回计数或存储内容。可以使用多种方法来更有效地模拟不同的电路。这些包括:
statevector -使用密集的statevector模拟。 stabilizer -使用仅对Clifford电路和噪声模型有效的Clifford稳定状态模拟器。 extended_stabilizer-使用近似模拟器将电路分解成稳定器状态项,其数量随非Clifford门的数量而增长。 matrix_product_state-使用 Matrix Product状态(MPS)模拟器。
-
Statevector Simulator
允许理想的单次执行qiskit电路,并在应用后返回模拟器的最终状态向量。
-
Unitary Simulator
允许qiskit电路的理想单次执行,并返回电路本身的最终unit矩阵。请注意,此后端电路不能包含测量或复位操作。
Ignis
Ignis是“火”元素,致力于消除噪声和错误并开辟一条新道路。这包括更好地表征错误,改善门控以及在存在噪声的情况下进行计算。Ignis适用于那些想要设计量子纠错码,或者希望研究通过层析成像等方法来表征错误的方法,或者是通过探索动态去耦和最优控制来找到使用门的更好方法的人。
Ignis为用户提供代码,可以在给定最少的用户输入参数的情况下轻松生成用于特定实验的电路。Ignis代码包含三个基本构建块:
- Circuits
电路模块提供了代码,可根据最少的一组用户参数为特定的Ignis实验生成电路列表。然后将它们运行在Terra或Aer上。 - Fitters
Ignis实验的结果将传递到Fitters模块,在其中根据描述实验的物理模型对它们进行分析和拟合。Fitters可以绘制数据并拟合,并输出参数列表。 - Filters
对于某些Ignis实验,Fitters可以输出Filter对象。使用Ignis实验的校准结果,可以使用过滤器来减轻其他实验中的错误。
Qiskit Ignis分为三种可以执行的实验类型:
- Characterization
设计了表征实验,以测量系统中的参数,例如噪声参数(T1,T2-star,T2),哈密顿参数(例如ZZ相互作用率和门中的控制误差)。 - Verification
验证实验旨在验证栅极和小电路性能。验证包括状态和过程层析成像,量子体积和随机基准测试(RB)。这些实验提供了确定性能指标(例如门保真度)的信息。 - Mitigation
缓解实验运行校准电路,分析该校准电路以生成缓解例程,这些例程可应用于在同一后端运行的任意结果集。Ignis代码将生成运行校准测量的电路列表。这些测量的结果将由Fitter处理,并将输出一个过滤器,该过滤器可用于将缓解措施应用于其他结果。
Aqua
Aqua是“水”元素,是生命的元素。为了使量子计算达到其期望,我们需要找到实际应用。Aqua是构建量子计算机算法的地方。这些算法可用于构建量子计算应用程序。化学,优化,金融和人工智能领域的专家可以访问Aqua,他们希望探索使用量子计算机作为特定计算任务的加速器的好处。
在许多领域,例如化学,人工智能(AI),优化和金融领域,已经发现了可能受益于量子计算能力的问题。但是,量子计算需要非常专业的技能。为了满足想要在软件堆栈的各个级别使用量子计算并做出贡献的广大从业人员的需求,我们创建了Qiskit Aqua。
- 更多精彩????
上一篇: MyEclipse 7.1发布
下一篇: 原创企业级控件库之大数据量分页控件