使用 QDKPython 套件將工作提交到 Azure Quantum

使用 Q#(OpenQASM)Qiskit 套件,將 Cirq、PennyLane、Azure Quantum、Python 及 QDK 程式提交至 Microsoft Quantum Development Kit。

本文提供每種支援量子語言或框架的工作提交範例。 若要使用不需要Python程式碼的互動式Q#或OpenQASM工作流程,請參閱使用適用於QDK的VS Code擴充功能提交作業。

先決條件

  • 一個有有效訂閱的 Azure 帳號。

  • 工作區 Azure Quantum 要建立工作區,請參見 建立 Azure Quantum 工作區。

  • Python 3.10 或更新版本。

  • 如果你使用 Jupyter Notebook,可使用 Jupyter 環境,例如 VS Code 的 Jupyter 擴充功能和 ipykernel 套件。

  • 安裝 Azure CLI 和 quantum 擴充功能。

    az extension add --upgrade --name quantum
    
  • 安裝包含 jupyter 和 azure extras 的最新版本 qdkPython 套件。

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

    如果你想提交 Qiskit 或 Cirq 程式,請安裝 cirq 和 qiskit 額外套件。

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

連線至你的 Azure Quantum 工作區

Warning

自 2027 年 1 月 11 日起, Azure Quantum Quantum 工作空間的使用者必須持有 Quantum Workspace Data Reader 或 Quantum Workspace Data Contributor 角色,才能存取職缺結果。 提交工作時,必須具備 Quantum Workspace 資料貢獻 者的角色。 為避免工作流程中 Azure Quantum 斷,請在截止日前將這些角色指派給適當的使用者。 欲了解更多資訊,請參閱 工作區中為使用者指派資料存取角色。

在提交工作之前,你需要先連接一個 Azure Quantum 工作區。 此 qdk.azure 模組提供 Workspace 物件,用於連線到 Azure Quantum 工作區。 要連接你的工作空間,請遵循以下步驟。

使用 Azure CLI 登入

如果你還沒登入,建議在開啟 Jupyter 筆記本前,先從終端機登入 Azure。

az login

如果你沒有從終端機登入,每次透過 Quantum 工作區 Python連線時都必須進行驗證。 如果你的帳號有多個訂閱,請設定包含你 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
    

    Note

    是

  2. 確認連線,並查看工作區中可用的 targets。

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

關於其他連線與認證選項,請參見 「連接至您的 Azure Quantum 工作區」。

Note

以下範例將工作提交至 模擬器 targets。 你工作空間中可用的 targets 取決於你已設定的提供者。

準備並提交你的程式

選擇適用於你的量子語言或架構的索引標籤。

使用 qdk.qsharp 模組來定義或載入 Q# 程式碼,編譯一個入口點到 QIR,並將 提交 QIR 給 Azure Quantumtarget。

定義並編譯程式Q#

  1. 使用 Azure Quantumtarget 支援的 QIRtarget 設定檔初始化 Q#。

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

    如需更多關於 QIRtarget 設定檔的資訊,請參閱 Azure QuantumQIRtarget 設定檔(位於 QDK 中)。

  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)