IBM Cloud Docs
入门

入门

本教程将指导您完成设置 Qiskit Runtime 服务实例,登录到服务实例以及在量子计算机上运行第一个作业的步骤。

全新的 IBM 量子平台界面已发布,处于抢先体验模式。 建议您开始使用该界面来使用 IBM 量子服务。 因为它是建立在 IBM Cloud 上的,所以迁移非常简单。 详情请参阅 迁移指南

  • 如果您是从需要设置 Qiskit Runtime的 IBM Quantum 程序进行实体升级,请参阅 从开放式套餐升级,以获取有关设置云帐户,服务实例和使用用户的指示信息。
  • 如果您的组织具有更复杂的结构,请参阅 组织的套餐 Qiskit Runtime,以获取更灵活的指示信息来设置服务实例并使用用户。
  • 如果您是首次单独设置 Qiskit Runtime 服务,或者如果管理员邀请您加入实例,请继续执行本主题中的步骤。

创建服务实例

如果您已创建 Qiskit Runtime 服务实例或已被管理员邀请到一个服务实例,请跳至下一步。 要确定您是否已具有对实例的访问权,请检查 IBM Cloud "实例" 页面。 如果显示了一个或多个实例,那么可以跳至 安装 Qiskit 软件包

  1. 根据需要访问的内容,从 Qiskit Runtime 供应页面中选择相应的服务套餐。 有关这些套餐的更多信息,请参阅 Qiskit Runtime 套餐 主题。

    • 精简版(已弃用 ):免费模拟器专用套餐,帮助您开始使用 Qiskit Runtime。 通过遵循我们的示例和教程,了解如何使用 Qiskit Runtime 其中一个可用于高效运行回路的预构建程序。
    • 标准:访问 IBM QPU 和模拟器的“即用即付”模式。 通过在实际的量子硬件上运行,构建您自己的程序,并利用 Qiskit Runtime 的所有优势,同时维护对 Lite 套餐可用的所有模拟器的访问权。
  2. 完成所需信息,然后单击 创建

安装或更新 Qiskit 软件包

在开发环境中安装或更新以下软件包。 它们允许您使用 Qiskit Runtime创建回路并使用原语程序。 有关详细指示信息,请参阅 Qiskit 安装和设置主题。 定期检查 Qiskit 发行说明 (或重新运行这些命令),以便始终具有最新版本。

您不能使用 "pip install -U qiskit 从任何 Qiskit0.x版本升级到1.0或更高版本。 详情和说明请参阅 Qiskit1.0迁移指南

即使已安装软件包,也请确保运行这些命令,以确保您具有最新版本。

# Installs the latest version of the Qiskit meta-package for circuit creation.
pip install qiskit -U
# Installs the latest version of the Qiskit Runtime package, which is needed to interact with the Qiskit Runtime primitives on IBM Cloud.
pip install qiskit-ibm-runtime -U

向服务认证

要向服务认证,请使用 IBM Cloud API 密钥和 CRN 调用 QiskitRuntimeService :

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>")

查找您的访问凭证

  1. 查找 API 密钥。 从 API 密钥页面中,查看或创建 API 密钥,然后将其复制到安全位置,以便您可以将其用于认证。
  2. 查找您的云资源名称 (CRN)。 打开 "实例" 页面,然后单击您的实例。 在打开的页面中,单击图标以复制 CRN。 将其保存在安全位置,以便您可以将其用于认证。

(可选) 将凭证保存到磁盘

(可选) 将凭证保存到磁盘 (在 $HOME/.qiskit/qiskit-ibm.json 文件中)。 如果不将凭证保存到磁盘,那么每次启动新会话时都必须指定凭证。

如果将凭证保存到磁盘,那么将来可以使用 QiskitRuntimeService() 来初始化帐户。

from qiskit_ibm_runtime import QiskitRuntimeService

# Save account to disk and save it as the default.
QiskitRuntimeService.save_account(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>", name="account-name", set_as_default=True)

# Load the saved credentials
service = QiskitRuntimeService(name="account-name")

如果需要更新已保存的凭证,请再次运行 save_account,传入 overwrite=True 和更新后的凭证。

有关使用 Cloud Quantum Qiskit API 的指示信息,请参阅 API 文档中的 authentication 部分。

测试设置

使用 Sampler 运行简单电路以确保正确设置环境:

from qiskit import QuantumCircuit
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

# Create empty circuit
example_circuit = QuantumCircuit(2)
example_circuit.measure_all()

# You'll need to specify the credentials when initializing QiskitRuntimeService, if they were not previously saved.
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

sampler = Sampler(backend)
job = sampler.run([example_circuit])
print(f"job id: {job.job_id()}")
result = job.result()
print(result)

运行程序

Qiskit Runtime 使用 原语程序 与量子计算机进行交互。 以下程序公开可用。 要了解有关 V2 原语中的更改的更多信息,请阅读 迁移到 V2 原语

  • 采样器: 允许用户指定一个电路作为输入,然后返回每次射击的输出(位字符串)(V2)或准概率(V1)。 这使用户能够在破坏性干扰的背景下更有效地评估多个相关数据点的可能性。
  • 估算器: 允许用户指定电路和可观察值的列表,并选择性地在这些列表之间分组,以高效地评估给定参数输入的期望值和方差。 它旨在使用户能够高效地计算和解释许多算法所需的量子算子的期望值。

此示例使用“采样器”原语:

# Prepare the input circuit.
from qiskit import QuantumCircuit

bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)
bell.measure_all()

# Execute the circuit
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

# Run the sampler job locally using FakeManilaV2
backend = FakeManilaV2()

from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_bell = pm.run(bell)

sampler = Sampler(backend)

job = sampler.run([(isa_bell,)])
result = job.result()

pub_result = result[0]
# Get counts from the classical register "meas".
print(f" >> Counts for the meas output register: {pub_result.data.meas.get_counts()}")

ISA 输入

为确保更快、更高效的结果,自 2024 年 3 月 1 日起,电路和可观测数据在提交至 Qiskit Runtime 基元之前,需要进行转换,以便仅使用 QPU 支持的指令(称为 * 指令集架构 (ISA)* 电路和可观测数据)。 请参阅 传输文档,以获取转换回路的指示信息。

此更改具有以下重要影响:

  • 由于转化是为了匹配特定后端上可用的电路,因此 必须 指定后端。 如果未指定后端,那么将接收到错误。

    以前,如果您没有指定后端,则会使用您可以访问的最不繁忙的 QPU。 要使用现在最不繁忙的 QPU,请使用类似下面的代码:backend = service.least_busy(operational=True, simulator=False)

  • 原语将不再执行布局或路由操作。 因此,提及这些任务的转化选项将不再具有任何效果。 用户仍然可以通过使用 optimization_level=0 来请求原语不执行输入电路的优化。

用于生成 ISA 电路和可观察内容的示例代码:

from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

# Create a new circuit with two qubits (first argument) and two classical
# bits (second argument)
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

# Set up six different observables.
observables_labels = ["ZZ", "ZI", "IZ", "XX", "XI"]

from qiskit.quantum_info import SparsePauliOp
observables = [SparsePauliOp(label) for label in observables_labels]

# Convert to an ISA circuit and layout-mapped observables.
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)
observables = [
    observable.apply_layout(isa_circuit.layout) for observable in observables
]

后续步骤