你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Quantum 作业

在 Azure Quantum 中运行量子程序时,可以创建并运行 作业。 创建和运行作业的步骤取决于作业类型和提供程序,以及 target 为工作区配置的。

作业属性

所有作业都具有以下通用属性:

属性 说明
ID 作业的唯一标识符。 它在工作区中必须独一无二。
提供程序 你希望运行作业的主体。
Target 你希望运行作业的对象。 例如,提供商提供的确切量子硬件或量子模拟器。
Name 用户定义的名称,可帮助组织作业。
Parameters 的 targets可选输入参数。 有关可用参数的定义,请参阅所选 target 文档。

创建作业后,可以使用有关其状态和运行历史记录的各种元数据。

作业生命周期

编写量子程序后,可以选择 target 并提交作业。

此图显示了提交作业后的基本工作流:

Azure Quantum 作业流

首先,Azure Quantum 会将作业上传到工作区中配置的 Azure 存储帐户。 然后,作业将添加到作业中指定的提供商的作业队列。 随后,Azure Quantum 将下载程序,并为提供商进行转换。 提供商处理作业,并将输出返回 Azure 存储,你可以在其中下载输出。

监视作业

提交作业后,可以监视作业的状态。 作业具有以下可能的状态:

状态 描述
正在等待 作业正在等待运行。 某些作业将在等待状态下执行预处理任务。 waiting 始终是第一个状态,但是,作业可能会先转到 executing 状态,然后你才能观察到 waiting 状态的作业。
正在执行 当前 target 正在运行作业。
succeeded 作业已成功完成,并且输出可用。 这是最终状态
失败 作业已失败,并提供了错误信息。 这是最终状态
已取消 用户请求取消作业运行。 这是最终状态。 有关详细信息,请参阅本文中的作业取消

succeededfailedcancelled 状态被视为“最终状态”。 作业处于这些状态之一后,不会再对作业进行任何更新,并且相应的作业输出数据不会更改。

此图显示了可能的作业状态转换:

显示向 Azure Qauntum 提交的作业工作流的关系图。

作业成功完成后,它会显示一个指向 Azure 存储帐户中输出数据的链接。 访问此数据的方式取决于用于提交作业的 SDK 或工具。

如何监视作业

可以通过 Python、Azure 门户和 Azure CLI 监视作业。

作业的所有属性都可访问 job.details。 例如,可以访问作业名称、状态和 ID,如下所示:

print(job.details)
print("\nJob name:", job.details.name)
print("Job status:", job.details.status)
print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...}
Job name: MyPythonJob
Job status: Succeeded
Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f

作业计数

若要获取大量作业产生的计数,可能需要执行工具的Quantum Development Kit本地安装。 通过本地安装,可以本地存储作业 ID。

可以复制以下代码以获取作业列表及其结果:

for job in workspace.list_jobs():
    print(job.id, job.details.name, job.details.output_data_uri)

作业取消

如果作业尚未处于最终状态(例如 succeededfailedcancelled),则可以请求取消作业。 如果作业处于 waiting 状态,则所有提供商都会取消该作业。 但是,如果作业处于 executing 状态,则并非所有提供商都支持取消作业。

注意

如果在作业开始运行后取消该作业,帐户可能仍需要支付该作业的部分或全部费用。 请参阅所选提供商的计费文档