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

使用PythonAzure Quantum包将作业提交到QDK

使用 Microsoft Quantum 开发工具包(QDK)Python 包将 Q#、OpenQASM、Qiskit、Cirq 和 PennyLane 程序提交到 Azure Quantum。

本文提供了每个受支持的量子语言或框架的作业提交示例。 有关不需要 VS Code 代码的交互式 Q# 或 OpenQASM 工作流,请参阅 Python。

先决条件

  • 拥有有效订阅的 Azure 帐户。

  • 一个工作区 Azure Quantum 。 若要创建工作区,请参阅 “创建 Azure Quantum 工作区”。

  • Python 3.10 或更高版本。

  • 如果你使用 Jupyter Notebook,则可使用 Jupyter 环境,例如适用于 VS CodeJupyter 扩展和 ipykernel 包。

  • 使用quantum扩展安装Azure CLI

    az extension add --upgrade --name quantum
    
  • 安装最新版本的 qdkPython 软件包,并包含 azurejupyter 附加组件。

    pip install --upgrade "qdk[azure,jupyter]"
    

    如果要提交 Qiskit 或 Cirq 程序,请安装 cirqqiskit 扩展组件。

    pip install --upgrade "qdk[qiskit,cirq]"
    

连接到您的 Azure Quantum 工作区

在提交作业之前,需要连接到 Azure Quantum 工作区。 qdk.azure 模块提供用于连接到 Azure Quantum 工作区的 Workspace 对象。 若要连接到工作区,请执行以下步骤。

使用 Azure CLI 登录

如果尚未登录,请在打开 Jupyter 笔记本之前从终端登录到Azure。

az login

如果未从终端登录,则每次通过 Python连接到 Quantum 工作区时都需要进行身份验证。 如果帐户有权访问多个订阅,请设置包含工作区的 Azure Quantum 订阅。

az account set --subscription <subscription-id>

会话过期或想要使用不同的Azure帐户时再次运行az login

获取工作区的资源 ID

  1. 登录到 Azure 门户
  2. 转到要在其中提交作业的 Quantum 工作区。
  3. “概述 ”页中,查找并复制 资源 ID

连接到工作区

  1. 若要连接到 Quantum 工作区,请使用复制的资源 ID 创建一个 Workspace 对象。

    from qdk.azure import Workspace
    
    workspace = Workspace(resource_id="") # Add your resource ID
    

    注释

    Y

  2. 验证连接并查看工作区中可用的 targets。

    for target in workspace.get_targets():
        print(target.name)
    

有关其他连接和身份验证选项,请参阅 “连接到 Azure Quantum 工作区”。

注释

以下示例将作业提交到 模拟器 targets。 您工作区中可用的 targets 取决于您已配置的提供程序。

准备并提交计划

选择量子语言或框架的选项卡。

使用qdk.qsharp模块定义或加载Q#代码,将入口点编译为QIR,并将QIR提交到Azure Quantumtarget。

定义和编译 Q# 程序

  1. 使用Q#target支持的targetAzure Quantum配置文件初始化QIR。

    from qdk import qsharp, TargetProfile
    
    qsharp.init(target_profile=TargetProfile.Base)
    

    有关 配置文件的详细信息,请参阅 中的配置文件。

  2. 定义操作 Q# 。 例如,使用以下 RandomBit 操作。

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. 在本地模拟器上测试操作。

    print(qsharp.run("RandomBit()", shots=10))
    
  4. 将操作编译为 QIR.

    from qdk.qsharp import compile
    
    program = compile("RandomBit()")
    

提交 Q# 作业

  1. 从工作区中选择一个兼容的 target。

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. 提交已编译的程序。

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. 等待作业完成并检索其结果。

    job.wait_until_completed()
    print("Status:", job.details.status)
    
    results = job.get_results()
    print(results)