IBM Quantum 的定向执行模型会完全按照指令运行电路,让用户在客户端就能明确掌控整个纠错技术栈——从误差缓解到纠错本身——同时不牺牲 100 多量子位系统的性能表现。
曾经隐藏在 IBM 服务器端运行的误差缓解程序,如今转移到客户端运行,用户可以检查、定制并扩展这些程序。
这正是 IBM 量子优势演示所使用的同一套框架,也是目前已在 IBM 硬件上开展的纠错研究的基础——从后选择量子纠错到距离为 5 的表面码,后者能将每轮逻辑错误率降低多达 2.8 倍。
一个全新的 Executor 原语为该模型提供动力,能够扩展到数千种电路变体,并支持用户手动组合自定义的误差缓解与纠错流程。
如果你已经在使用 Qiskit 的 Sampler 和 Estimator 原语,升级过程非常顺畅:只需更新服务提供方,现有代码即可继续正常运行。
如今最具挑战性的量子实验很少只涉及单次电路运行。相反,这类工作负载通常涵盖大量密切相关的电路变体,建立在针对噪声、随机化和后处理的多阶段工作流之上——而手动组装这些流程需要耗费大量时间和精力。
借助 IBM Quantum Compute Service 中的定向执行模型,这一局面正在改变。定向执行是一种全新的、更底层的执行模型,顾名思义,它会完全按照用户指定的方式运行电路——为用户提供一种明确、可组合的方式来表达电路的运行逻辑,同时清晰呈现在 IBM 量子硬件上究竟发生了什么。关键的是,用户获得这种可见性与控制力的同时,并不需要以牺牲 100 多量子位系统一贯的性能表现作为代价。
让我们回顾一下这一切是如何发展而来的。IBM 量子硬件上的执行最早始于 backend.run,这是一种直接运行电路列表的方法。当工作负载只是少量电路时,这种方式完全够用,但随着高级实验越来越依赖于用于扭转操作、随机化和噪声学习的大量电路变体,每一种变体都必须在客户端构建后通过网络传输。Sampler 和 Estimator 原语改变了这一局面,它们在服务器端——当时被称为 Qiskit Runtime,现为 IBM Quantum Compute Service 的近实时环境中——生成这些变体。这在规模上提升了性能,但也让执行过程变成了一个黑箱。
定向执行是下一步演进。它让我们重新回归单一入口点,但这并非简单地回到 backend.run。其背后的机制已经被彻底重建,以提供以往无法实现的控制力和性能水平。用户现在可以在客户端构建类似 Sampler 和 Estimator 这样的算法原语,根据自身用例进行定制,然后将其交给 Executor,在 IBM Quantum Compute Service 的近实时环境中按指定方式处理。
编程模型的演进,从 backend.run(2016–2022 年)到服务器端的 Sampler 和 Estimator(2022 年至今),再到 Executor 原语(2026 年起)。
这一点之所以重要,有两个原因。首先,这正是 IBM 及其合作伙伴近期借助可信计算实现量子优势演示所使用的同一套框架。其次,它将 IBM Quantum Compute Service 转变为一个可以探索应对误差的全部方法谱系的平台——从先进的误差缓解技术,到研究人员已经在 IBM 量子硬件上运行的纠错码。
我们深知,一套能正常使用的工具链至关重要,因此定向执行模型的目标是在不造成中断的前提下取得进展。如果用户目前正在使用 Sampler 和 Estimator 原语,代码将继续正常运行。升级过程被设计为低摩擦的,因此在大多数情况下,唯一需要改变的只是导入语句,而不是代码主体。除非用户本身有意探索更底层的工具,否则完全不需要去使用它们。
本文将介绍定向执行模型的构建模块,以及展示这些模块如何协同工作的相关资源。想要预览定向执行的实际效果,可以尝试 IBM Quantum Platform 上全新的 PEC with logical noise models 教程。
定向执行模型是什么
从本质上讲,定向执行是一个框架,它让用户能够描述电路在运行之前应如何被转换和随机化——而无需自行生成电路变体。用户定义转换和随机化规则;IBM Quantum Compute Service 负责高效地准备和运行这些电路。
为定向执行模型提供动力的是一个全新的原语——Executor。所有新的客户端工具和原语都构建在它之上,这使得我们能够在不破坏用户代码的前提下整合服务器端的支持。
定向执行模型:客户端软件包与 Samplomatic 生成模板电路和 samplex,由 Executor 原语在 IBM Quantum Compute Service 上运行。
当用户的研究依赖于精确控制电路运行方式时,直接使用 Executor 会非常有用。例如,如果用户的工作涉及开发新的误差缓解协议、研究噪声在电路特定区域中的传播方式,或是针对数千种电路变体进行硬件性能基准测试,那么 Executor 将是一个极具价值的工具。
同时,并非所有研究都需要这种程度的控制。为了保留用户已经习惯的便利性,Sampler 和 Estimator 原语现在也构建在 Executor 之上。我们已经对它们进行了调整,使其能够在幕后无缝利用 Executor,而输入和输出保持不变。对大多数用户而言,这意味着唯一需要做的就是更新服务提供方。
不同之处在于,它们所执行的误差缓解不再是一个黑箱。相关逻辑现在在客户端运行,因此用户可以查看其实现方式、进行调整,或者直接针对 Executor 编写自己的方法。从多个角度来看,这正是定向执行的核心目标和组织原则:需要便利时就享受便利,需要控制时就拥有控制。
定向执行模型由若干关键组件构成。接下来,让我们按照用户最有可能使用它们的顺序逐一介绍。
Box 与注解:表达意图
定向执行建立在 Qiskit SDK v2.0 和 v2.1 中首次引入的两项能力之上:box(BoxOp 指令)和注解。box 用于将电路中的指令分组,以便后续处理;注解则为这些 box 打上标签,向转译器或执行栈的后续阶段传达相应指令。
Samplomatic 中预定义的一些常见注解包括:
Twirl:应用 Pauli 或 Clifford 扭转操作以缓解噪声
InjectNoise:以可控、可配置的方式注入噪声,用于误差缓解研究
ChangeBasis:在执行时控制量子位进出特定基态的旋转方式
用户可以使用 box 来定义电路中有意义的区域,然后添加注解来声明每个 box 中的操作应如何被转换。关于具体操作,可以参阅 Samplomatic 转译器指南,其中涵盖了将操作分组为 box 以及使用注解的方法。
Samplomatic:构建执行方案
开源库 Samplomatic 会解析用户经过分组和注解的电路,并将其转化为具体的执行方案,产生两项输出:
模板电路:一个标准的、参数化的 Qiskit 电路,作为每个电路变体的可检查蓝图,其中包含运行时将填入的可调参数。
samplex:一份结构化、可检查的方案,用于说明随机化和经典后处理应如何进行——它并非一堆预先计算好的变体。它遵循张量输入/输出模型:输入参数的张量进入,随机化数值的张量输出。
由于两者都是在本地生成的,用户可以在将任何内容提交到硬件之前,准确检查扭转操作、噪声注入和其他转换是如何在电路中传播的。具体方法可以参阅 Samplex 输入输出指南,其中展示了如何设置和读取 samplex;以及调试与追踪指南,其中展示了如何在运行前检查布局并追踪转换过程。
Executor 原语
一旦用户制定好方案,Executor 原语就会负责运行它。它是支撑定向执行其他工具的底层引擎。
Executor 将每个模板电路视为一个张量操作器,接收参数值的张量并生成结果的张量。这意味着它可以扩展到大量变体组合,而无需手动组装。
与 Sampler 和 Estimator 接收的 PUB(Primitive Unified Blocs,原语统一区块)列表不同,Executor 接收的是可容纳多个条目的 QuantumProgram。如果不熟悉这一概念:PUB 是原语运行的基本工作单元——本质上是一个电路,连同执行所需的数据捆绑在一起。QuantumProgram 则扩展了这一模型。它可以容纳多个条目,每个条目都捆绑了一个电路、其参数值,以及执行期间将应用的各种操作。
一旦程序定义完成,Executor 会通过多次射击循环来运行它。它的设计初衷就是为了实现规模化,运行在我们为第一代 Sampler 和 Estimator 打造的同一套高性能运行环境之上,因此它能够处理 5000 次甚至更多随机化操作的工作负载,而不会牺牲性能。
Executor 还支持广播功能。用户可以使用熟悉的 NumPy 风格规则,在单个任务中对噪声尺度、基变换或参数集进行扫描。
基于定向执行构建的工具
box、Samplomatic 和 Executor 共同构成了定向执行模型本身。围绕它们的是一个日益壮大的开源工具生态系统,这些工具建立在该模型之上,将底层控制能力转化为可直接使用的功能,使用户无需从零开始实现噪声学习或误差缓解。这些工具包括 Sampler 和 Estimator 原语的客户端实现,以及其他若干软件包:
一个典型的误差缓解工作流分为四个步骤,分别由以下定向执行软件包负责处理:Samplomatic、Qiskit Noise Learning、Qiskit Mitigation 以及 Executor 原语。
全新的 Sampler 和 Estimator:具备真正缓解能力的本地模式
全新的客户端 Sampler 和 Estimator——作为 qiskit-ibm-runtime 0.50.0 的一部分于上周发布——不仅取代了原有原语的功能,还对其进行了改进。定向执行模型带来的透明性意味着它们所执行的缓解操作现在是可检查、可定制的,而不再隐藏在服务器端。这也让本地模式的能力大大增强。
在客户端运行缓解操作意味着用户可以在将任何内容发送到量子处理单元(QPU)之前,先在本地进行测试。在服务器端的 Estimator 中,针对本地模拟器运行时会完全忽略用户的弹性选项。缓解操作是一个黑箱,因此没有任何东西可供重现。借助新的客户端实现,qiskit-ibm-runtime 的本地模式现在会应用与硬件上相同的误差缓解。例如:
这将在不久的将来成为默认的 Estimator。from qiskit_ibm_runtime.executor_estimator import Estimator from qiskit_ibm_runtime.fake_provider import FakeKingston estimator = Estimator(FakeKingston()) estimator.options.resilience_level = 1 estimator.run(pubs)
在这里,resilience_level = 1 会在模拟器上为用户的电路实际应用一级误差缓解(TREX),而服务器端的 Estimator 则会直接忽略这一设置。这一变化使用户能够在花费 QPU 时间之前,先在本地原型测试和比较不同的缓解策略。
需要注意的是,FakeKingston 模拟的是一个 156 量子位的设备,这对于本地态向量模拟器来说规模过大,难以完全重现。由于用户可用的 QPU 全都超过 100 个量子位,我们建议针对经过误差缓解的电路运行 Clifford(稳定子)模拟,以进行快速、近似的检验。
Qiskit Noise Learning——客户端噪声特征描述
许多量子误差缓解技术都依赖于精确了解电路中噪声出现的具体位置。Qiskit Noise Learning 是一个客户端开源软件包,用于 Pauli-Lindblad 噪声学习,可直接配合 box 和注解使用。
在最初版本的 Estimator 中,噪声学习和注入都在服务器端运行;用户无法查看或定制噪声映射。现在,这种特征描述在客户端运行,为用户提供了逐区域的可见性、完整的定制能力,并同时支持 Pauli-Lindblad 和 TREX 协议。
Qiskit Noise Learning 相对于 NoiseLearner 的关系,就如同 Executor 相对于各类原语的关系——同样的底层能力,以可供用户查看、定制和扩展的方式呈现出来。与原语的情况一样,我们将继续为不需要这些高级能力的用户提供便捷的 NoiseLearner 风格接口:需要便利时就享受便利,需要控制时就拥有控制。
想要了解完整的 API 以及一些实用示例,请务必查阅 Qiskit Noise Learning 文档。
Qiskit Mitigation
Qiskit Mitigation 是一个开源软件包,包含多种量子误差缓解方法,可直接配合 Samplomatic 构建缓解流程。它包含了诸如概率性误差消除(PEC)、概率性误差放大(PEA)、扭转读出误差消除(TREX)以及门折叠零噪声外推(ZNE)等方法的实现。
除了这些核心方法之外,Qiskit Mitigation 还提供了一系列高级构建模块,这些模块让复杂工作流的实现变得切实可行——并且这些模块都是直接开放可调用的。用户可以根据电路对称性或时空检验来计算后选择噪声通道,从而降低 PEC 的采样开销;可以添加位翻转检验后选择来过滤非马尔可夫噪声;可以借助高级误差缓解方法计算期望值;等等。
然而,用户并不需要手动构建这些内容才能从中获益。全新的客户端 Sampler 和 Estimator 正是基于这些相同的实现构建而成,因此无论用户是想调用高级原语,还是希望手动组装自己的流程,Qiskit Mitigation 都能让用户在最适合自身需求的层级上开展工作。而且由于它采用模块化设计,用户可以单独修改某一部分——例如,为 ZNE 工作流替换一个自定义的外推器——而无需重写整个协议。
定向执行适合哪些人使用
由于支撑定向执行的软件包、库和各项能力都是模块化的,这一全新模型能够适配用户的各种工作方式和场景:
应用研究人员可以继续使用即插即用的 Sampler 和 Estimator,搭配熟悉的选项(如 resilience_level)——无需做任何改动。更多信息可参阅 Sampler 和 Estimator 指南,或查看 0.50.0 版本的发行说明,了解全新客户端实现的详细内容。
算法开发人员可以检查并调整 Qiskit Mitigation 中的方法——正如 PEC with logical noise models 教程中所展示的那样。
硬件专家可以手动组合完整的工作流——例如在电路的某一区域应用 PEC,在另一区域应用 PEA。关于这方面的详细示例,可以阅读 Algorithmiq 与 IBM 近期发布的算符 Loschmidt echo 演示——这是一项量子优势成果,其完整的缓解与验证流程正是直接构建在定向执行技术栈之上的。
要获得对电路执行更多的控制权,只需要编写少量额外代码。而如果用户不需要这种控制权,也完全不必为此操心。
深入了解:带有阴影光锥的 PEC
为了展示定向执行的实际应用,让我们看看它如何处理一个此前原始 Sampler 和 Estimator 无法实现的工作流:在单一流程中结合概率性误差消除(PEC)、阴影光锥(SLC)、TREX 和后选择技术。
这里展示的示例只是一个高层概览。完整可运行的代码可以在 PEC with shaded lightcones 完整教程中找到。
1. 问题映射。定义可观测量以及所需的测量基。
2. 优化。转译电路,并使用 Samplomatic 将其指令分组为带注解的 box。然后计算阴影光锥边界,以确定哪些误差可以安全地不加缓解。
3. 执行。学习每个独特层上的噪声,将边界转化为逐误差的缩放比例,然后构建模板电路和 samplex,并通过 Executor 在单个任务中运行整个程序。
4. 后处理。对原始结果应用 TREX 和后选择,以恢复经过缓解的期望值。
结果显示:SLC 将 PEC 的采样开销降低了约 3.4 倍,同时保持了相当的准确度。关于完整的噪声模型设置、每个参数以及详细分析,可以参阅相关教程。
立即体验纠错码研究
定向执行不仅适用于误差缓解——它已经成为实际纠错研究的基础。同样的客户端控制能力,既能让用户将硬件噪声塑造为 Pauli 噪声以用于缓解,也能让用户在当今的硬件上构建和研究纠错码。
例如,IBM 近期提出的逻辑误差时空缓解方案,将 PEC 叠加在后选择量子纠错之上,大幅降低了采样开销;而 Qiskit Paulice 则为该平台带来了当下即可使用的后选择量子纠错能力。研究人员目前也在运行完整的纠错码:一项近期研究在 IBM Quantum Nighthawk 上实现了距离为 5 的表面码,通过识别少数表现不佳的组件并对其进行规避路由,将每轮逻辑错误率提升了多达 2.8 倍。
这种控制能力甚至延伸到电路层级之下。通过脉冲级访问权限,用户可以控制门操作的时序、执行快速量子位重置,并读取软(预分类)测量信息——这些都是用户可以用来调优 QEC 电路性能的手段。综合来看,这些能力使 IBM Quantum Compute Service 成为一个可以探索从量子误差缓解到量子纠错全部谱系的平台。
展望未来:从缓解到纠错的统一平台
Executor 是定向执行模型的初始实现。用户可以期待它随着时间推移获得更多功能。
最终,它将演化为一种更为通用的执行接口——一种能够灵活地在客户端和服务器端之间调配经典预处理和后处理工作的接口,将目前仅覆盖预处理的客户端透明性,进一步扩展到后处理环节。
而且,由于它是我们目前拥有的最灵活的框架,新的误差缓解和纠错研究成果都将首先落地于 Executor。这是一个为了长远未来而打造的平台。
借助 AI 辅助完成迁移
如果用户正在将现有代码迁移到客户端原语上,完全不必手动完成这一过程。
伴随此次发布,我们也公开了首个官方 Qiskit AI 技能:migrate-qiskit-ibm-runtime,这是一款迁移辅助工具,可以将用户的 qiskit-ibm-runtime 代码迁移到全新的客户端 Sampler 和 Estimator,并在迁移过程中标记出破坏性变更。它支持从 V1 以及旧版服务器端 V2 原语进行迁移。此初始版本(0.1.0)涵盖了从 qiskit-ibm-runtime 0.1.0 到最新 0.50.0 版本之间的所有迁移操作,包括这些年来 IBM Quantum Compute Service API 的各项变更。
该工具是开源的,托管在 Qiskit/skills 的 Github 仓库中。用户可以将其添加到自己的 AI 编程助手中,指向自己的代码,让它完成这些机械性的工作。这也是上手门槛最低的方式:先完成迁移,再按照自己的节奏逐步探索本文介绍的各项工具。
开始使用定向执行
理解定向执行模型最快的方式就是亲自使用它。
升级环境。确保用户使用的是最新版本的 qiskit-ibm-runtime,以获得 Executor 以及全新的客户端 Sampler 和 Estimator。无论用户是否会直接调用 Executor,这都是让工作负载进入定向执行模型的关键一步。
深入了解。查阅定向执行模型文档,了解更多关于 Samplomatic、Executor、Qiskit Noise Learning 以及 Qiskit Mitigation 的内容。
动手尝试。完整学习 PEC with shaded lightcones 教程。该教程端到端地使用了定向执行,在 Executor 原语上结合了 PEC、SLC、TREX 和后选择技术。
已经在使用 Sampler 和 Estimator 了吗?不用担心,现有代码不会受到任何影响,仍可继续正常运行,而定向执行所带来的各项高级能力,也将在用户准备好探索时随时可用。
Q&A
Q1:定向执行模型是什么?它解决了什么问题?
A:定向执行是 IBM Quantum Compute Service 中一种新的、更底层的执行模型,它会完全按照用户指定的方式运行电路,让用户能够明确控制误差缓解与纠错流程,同时不牺牲 100 多量子位系统的性能。它解决了此前 Sampler 和 Estimator 原语把误差缓解逻辑隐藏在服务器端、无法检查和定制的问题。
Q2:Executor 原语具体是做什么的?
A:Executor 是定向执行模型的底层引擎,它将模板电路视为张量操作器,接收参数值张量并生成结果张量,可以扩展到数千种电路变体而无需手动组装。它还支持广播功能,可以用 NumPy 风格的规则在单个任务中扫描噪声尺度、基变换或参数集。
Q3:原来使用 Sampler 和 Estimator 的用户升级会很麻烦吗?
A:不会,升级过程被设计为低摩擦的。原有代码可以继续正常运行,在大多数情况下,用户只需要更新导入语句和服务提供方,代码主体基本不需要改动,就能用上定向执行带来的透明性和控制力。
