量子计算与经典应用集成
经典计算越来越受到当今最复杂的计算问题的挑战,即使在我们最强大的超级计算机的规模上也是如此。 量子计算机承诺大幅扩展我们的计算功能。 通过利用量子物理的属性来执行计算,它们为某些类型的问题提供指数加速。 例如,量子计算机非常适用于需要计算在优化、模拟或机器学习方案中经常出现的大量可能组合的问题。
但是,量子计算组件具有不同于经典软件的操作模型。 通常有一个或多个经典计算组件来协调量子组件的执行。 此业务流程包括以下活动:
- 准备输入数据
- 将量子计算 作业提交到目标量子环境
- 监视作业执行
- 作业结果的后处理
可以通过以下两种方式之一将此业务流程与经典应用程序集成:
- 通过紧密耦合集成。 量子资源的业务流程逻辑集成到经典组件或组件中。
- 通过松散耦合集成。 量子资源的业务流程逻辑公开为 API,该 API 可由各种经典软件组件调用。
本文介绍如何在每个设计中实现量子应用程序。 每个实现都使用 Azure Quantum 作为量子计算引擎,但它们在其他方面稍有不同,如下所示。
紧密耦合的方法
潜在的用例
在这些情况下,首选紧密耦合方法:
- 一个团队拥有量子代码和经典代码,并且代码已集成。
- 量子组件与经典组件共享相同的生命周期。
- 量子组件的使用仅限于单个应用程序或少量相关应用程序。
- 量子作业表示一个专用解决方案(例如分子模拟),该解决方案仅供一个专用经典应用程序使用。
- 实现的算法本质上是混合量子经典,例如变体量子特征索尔弗(VQE)和量子近似优化算法(QAOA)。
建筑
下载此体系结构的 PowerPoint 文件。
数据流
- 已登录用户通过经典客户端应用程序触发量子作业执行。
- 客户端应用程序将输入数据放入 Azure 存储。
- 客户端应用程序将作业提交到 Azure Quantum 工作区,并指定执行目标或目标。 客户端通过存储在 Key Vault 中的数据标识工作区,并通过 托管标识向工作区进行身份验证。
- 量子提供程序在目标环境中运行作业。
- 客户端应用程序通过轮询作业状态监视作业执行。
- 量子作业完成后,客户端应用程序就会从存储获取计算结果。
此工作流实现 异步 Request-Reply 模式,以及为 azure Quantum 作业生命周期定义的步骤。
组件
- Azure Quantum 提供了 工作区(可从 Azure 门户访问)来获取与在各种目标上运行量子作业相关的资产。 作业在量子模拟器或量子硬件上运行,具体取决于你选择的提供程序。
- Microsoft Entra ID 协调用户身份验证,并帮助保护对 Azure Quantum 工作区的访问。
- Key Vault 保护和维护密钥和其他机密(如 Azure Quantum 工作区名称)的控制。
- Azure 存储 为量子提供程序的输入数据和结果提供存储。
考虑
这些注意事项实现 Azure Well-Architected 框架的支柱,这是一组指导原则,可用于提高工作负荷的质量。 有关详细信息,请参阅 azure Well-Architected Framework
可靠性
可靠性可确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅 可靠性的设计评审清单。
量子计算功能的可用性取决于 量子计算提供程序的可用性和安装基础。 根据计算目标,经典客户端应用程序可能会遇到目标长时间延迟或不可用的情况。
对于周围的 Azure 服务,通常的可用性注意事项适用:
安全
安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅 安全的设计评审清单。
与 松耦合替代的体系结构不同,此处提供的体系结构基于仅一个客户端访问 Azure Quantum 工作区的假设。 此方案会导致以下配置:
- 由于客户端已知,因此可以通过与应用程序关联的 托管标识实现身份验证。
- 可以在客户端本身中实现请求限制和结果缓存。
一般情况下,请考虑在适当情况下为安全 应用
松散耦合方法
潜在的用例
在这些情况下,首选松散耦合方法:
- 你有一个专门的量子专家团队,他们集中为其他团队提供量子功能,量子组件独立于任何经典客户端组件进行开发。
- 量子作业表示可由多个经典应用程序重复使用的通用解决方案(例如作业计划)。
建筑
下载此体系结构的 PowerPoint 文件。
数据流
- 登录用户通过经典应用程序触发量子作业执行。
- 经典应用程序调用自定义作业 API 来提交作业。
- API 网关触发作业提交 Azure 函数,该函数传递作业输入数据。
- 该函数将输入数据放入 Azure 存储。
- 该函数将作业提交到 Azure Quantum 工作区,并指定执行目标或目标。 该函数通过 Azure Key Vault 中存储的数据标识工作区,并通过 托管标识向工作区进行身份验证。
- 量子提供程序在目标环境中运行作业。
- 客户端应用程序通过 API 调用轮询作业状态来监视作业执行。
- API 网关通过轮询量子提供程序的作业状态来监视作业执行。
- 作业完成后,计算结果将存储在 Azure 存储中。 客户端应用程序使用通过 Azure 函数实现的 API 获取结果。
此工作流实现 异步 Request-Reply 模式,以及为 azure Quantum 作业生命周期定义的步骤。
组件
- Azure Quantum 提供了 工作区(可从 Azure 门户访问)来获取与在各种目标上运行量子作业相关的资产。 作业在量子模拟器或量子硬件上运行,具体取决于你选择的提供程序。
- Microsoft Entra ID 协调用户身份验证,并帮助保护对 Azure Quantum 工作区的访问。
- API 管理 是 API 网关,用于集中公开用于量子作业管理的 API 终结点。
- Azure Functions 用于将客户端请求转发到适当的量子资源。
- Azure Key Vault 保护并维护密钥和其他机密(如 Azure Quantum 工作区名称)的控制。
- Azure 存储 为量子提供程序的输入数据和结果提供存储。
可靠性
量子计算功能的可用性高度取决于 量子计算提供程序的可用性和安装基础。 根据计算目标,经典客户端应用程序可能会遇到目标长时间延迟或不可用的情况。
对于周围的 Azure 服务,通常的可用性注意事项适用:
- 若要实现高可用性,可以将 API 管理 部署到多个区域或区域。
- 如果使用异地复制,可以在多个区域中预配 azure Functions
。 - 使用 Key Vault 冗余选项。
- 如有必要,请考虑在 存储中使用复制选项。
安全
与 紧密耦合的替代体系结构不同,此处提供的体系结构基于多个客户端通过 API 访问 Azure Quantum 工作区的假设。 此方案会导致以下配置:
- 客户端必须向 API 进行身份验证。 可以使用 身份验证策略来实现此身份验证。
- 可以通过与函数关联的 托管标识 实现 Azure 函数的身份验证。 可以使用这些标识向 Azure Quantum 工作区进行身份验证。
- 多个客户端访问 API。 可以使用 API 管理请求限制 来实现请求限制,以保护量子后端并限制量子资源的使用。
- 根据请求模式,可以使用 API 管理缓存策略来实现量子计算结果的缓存。
一般情况下,请考虑在适当情况下为安全 应用
性能效率
性能效率是工作负荷的缩放能力,以满足用户以高效方式满足它的需求。 有关详细信息,请参阅 性能效率的设计评审清单。
应用程序性能取决于基础量子计算目标的可用性和性能。 有关经典组件性能和可伸缩性的信息,请查看 典型的可伸缩性设计模式,以及 性能效率清单。
常见功能
以下功能是紧密耦合和松散耦合实现模型的常见功能
选择
此处提供的体系结构适用于需要量子计算资源用于其计算任务的业务问题。 对于某些计算难题,构建用于执行 高性能计算 或提供 AI 功能的现有服务可能是替代方法。
考虑
一些 Azure 量子目标(尤其是量子硬件)对于可预见的未来来说,将是有限的资源。 通过排队机制实现对这些资源的访问。 将量子作业提交到 Azure Quantum 时,此作业将添加到作业队列中。 一旦目标完成之前队列条目的处理,将执行该作业。 可以通过 列出可用目标来获取预期的等待时间。 若要计算完整的响应时间,需要将等待可用资源的时间添加到作业执行时间。
可靠性
由于 Azure Quantum 等量子目标环境通常提供有限的错误更正(仅限于 Azure Quantum 的量子处理器),因此可能会发生其他错误(例如量子计算机超时),因此建议监视作业执行,以便可以通知用户作业状态。 当作业执行因暂时性错误而失败时,请实现 重试模式。 通过异步调用提交作业,并轮询结果,以避免不必要的阻止调用客户端。
由于量子计算资源通常受到限制,复原预期应考虑这一因素。 因此,本文中提供的建议可能会提供额外的复原能力措施。
成本优化
成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。
此解决方案的总体成本取决于选择运行量子作业的量子计算目标。 计算经典组件的估计成本非常简单。 可以使用 Azure 定价计算器。
对于 Azure Quantum 服务,请考虑可以通过 Azure 市场产品/服务使用 Quantum 计算提供程序。 定价取决于资源类型(模拟器或硬件)、SKU 和使用情况。 有关详细信息,请参阅方案所需的提供程序的参考页。 这些参考页列在 Azure Quantum上的
卓越运营
卓越运营涵盖部署应用程序并使其在生产环境中运行的运营流程。 有关详细信息,请参阅 卓越运营的设计评审清单。
可将量子作业合并到经典 CI/CD 管道中,可以使用 Azure DevOps 对典型设计进行细微更改。 以下设计演示了可应用于紧密耦合和松散耦合体系结构的 DevOps 管道工作流。
建筑
下载此体系结构的 PowerPoint 文件。
数据流
- 开发人员更改应用程序组件的源代码。
- 更改将提交到源代码存储库。
- 对量子代码的更改会触发量子生成管道。 生成管道会签出代码、编译代码、估计所需的资源,并在模拟器上运行算法。
- 编译的量子算法提交到量子环境进行测试。
- 更改会触发经典组件的生成管道。 管道检查代码、编译代码,并运行单元和集成测试。
- 成功编译和测试会触发发布管道。 管道首先通过部署存储在存储库中的 Azure 资源管理器模板(基础结构即代码)来预配 Azure 环境。
- 编译的经典应用程序项目将部署到 Azure。 量子作业在运行时提交到量子工作区。
- Application Insights 监视运行时行为、运行状况、性能和使用情况信息。
- 根据需要更新积压工作项,具体取决于监视结果。
- 开发人员使用 Application Insights 进行应用程序反馈和优化。
组件
此解决方案使用以下 DevOps 工具:
- Azure Repos 提供无限制的云托管专用 Git 存储库。 此处用于存储量子代码和经典代码以及用于预配环境的 Azure 资源管理器模板。
- Azure Pipelines 使你能够持续生成、测试和部署到云。 在这里,它用于实现 CI/CD,包括代码部署前的环境预配。
或者,可以使用 GitHub 存储库和 GitHub 操作来实现 CI/CD 进程。
该解决方案使用以下其他组件:
- 客户端应用程序协调量子作业。 可以使用紧密耦合的
或松散耦合 方法实现集成。 - Azure Quantum 为与运行量子计算应用程序关联的资产提供 工作区。 作业在量子模拟器或量子硬件上运行,具体取决于所选提供程序。
- Microsoft Entra ID 协调用户身份验证并保护对 Azure Quantum 工作区的访问。
- Azure Key Vault 保护并维护对密钥和其他机密(如量子工作区名称)的控制。
- Azure 存储 保存量子作业的输入和输出数据。
- Application Insights 监视应用程序、检测应用程序异常(例如性能不佳和故障)并将遥测数据发送到 Azure 门户。
性能效率
应用程序性能取决于基础量子计算目标的可用性和性能。 有关经典组件性能和可伸缩性的信息,请查看 典型的可伸缩性设计模式,以及 性能效率清单。
贡献
本文由Microsoft维护。 它最初由以下参与者编写。
主体作者:
- Holger Sirtl |Microsoft技术中心的高级技术架构师
若要查看非公共LinkedIn配置文件,请登录到LinkedIn。
后续步骤
- 有关 Microsoft Quantum(一个全堆栈开放式量子计算生态系统)的概述,请参阅 Microsoft Quantum 并完成 Quantum 计算基础 学习路径。
- 有关 Azure Quantum 服务的详细信息,请参阅 Azure Quantum。
- 有关 Azure Quantum 作业管理的一般信息,请参阅 使用 Azure Quantum 作业。
- 有关在量子硬件上运行算法的信息,请参阅模块 使用 Azure Quantum在量子硬件上运行算法。
相关资源
-
卓越运营原则 - 异步 Request-Reply 模式
- 松散耦合量子计算