Odeslat úlohy do Azure Quantum pomocí balíčku QDKPython

K odeslání Q#, OpenQASM, Qiskit, Cirq a PennyLane programů do Azure Quantum použijte balíček Microsoft Quantum Development Kit (QDK) Python.

Tento článek obsahuje příklady odeslání úloh pro každý podporovaný kvantový jazyk nebo architekturu. Informace o interaktivním pracovním postupu Q# nebo OpenQASM, který nevyžaduje kód Python, najdete v článku Odesílání úloh pomocí rozšíření QDK pro VS Code.

Předpoklady

  • Účet Azure s aktivním předplatným.

  • Pracovní Azure Quantum prostor. Pokud ho chcete vytvořit, přečtěte si téma Vytvoření Azure Quantum pracovního prostoru.

  • Python 3.10 nebo novější.

  • Pokud používáte poznámkový blok Jupyter, prostředí Jupyter, například rozšíření Jupyter pro VS Code a balíček ipykernel.

  • Nainstalujte Azure CLI s rozšířenímquantum.

    az extension add --upgrade --name quantum
    
  • Nainstalujte nejnovější verzi balíčku qdkPython s doplňky azure a jupyter.

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

    Pokud chcete odeslat program v Qiskit nebo Cirq, nainstalujte doplňky qiskit a cirq.

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

Připojte se ke svému Azure Quantum pracovnímu prostoru

Před odesláním úlohy se musíte připojit k pracovnímu Azure Quantum prostoru. Modul qdk.azure poskytuje Workspace objekt pro připojení k Azure Quantum pracovním prostorům. Pokud se chcete připojit ke svému pracovnímu prostoru, postupujte takto.

Přihlášení pomocí Azure CLI

Pokud jste to ještě neudělali, přihlaste se k Azure z terminálu předtím, než otevřete poznámkový blok Jupyter.

az login

Pokud se z terminálu nepřihlásíte, musíte se ověřit při každém připojení k pracovnímu prostoru Quantum prostřednictvím Python. Pokud má váš účet přístup k více předplatným, nastavte předplatné, které obsahuje váš Azure Quantum pracovní prostor.

az account set --subscription <subscription-id>

Znovu spusťteaz login, když vyprší platnost relace nebo když chcete použít jiný účet Azure.

Získejte ID prostředku svého pracovního prostoru

  1. Přihlaste se do Azure Portalu.
  2. Přejděte do pracovního prostoru Quantum, do kterého chcete úlohu odeslat.
  3. Na stránce Přehled vyhledejte a zkopírujte ID prostředku.

Připojení k pracovnímu prostoru

  1. Pokud se chcete připojit k pracovnímu prostoru Quantum, vytvořte Workspace objekt s ID prostředku, které jste zkopírovali.

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

    Note

    Y

  2. Ověřte připojení a zobrazte targets, které je dostupné v pracovním prostoru.

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

Další možnosti připojení a ověřování najdete v tématu Připojení k pracovnímu Azure Quantum prostoru.

Note

Následující příklady odesílaly úlohy do simulátoru targets. Dostupnost targets ve vašem pracovním prostoru závisí na nakonfigurovaných poskytovatelích.

Příprava a odeslání programu

Zvolte kartu pro váš kvantový jazyk nebo architekturu.

Modul qdk.qsharp použijte k definování nebo načtení kódu Q#, zkompilování vstupního bodu do QIR a odeslání QIR do Azure Quantumtarget.

Definování a kompilace Q# programu

  1. Inicializujte Q# pomocí profilu QIRtarget, který Azure Quantumtarget podporuje.

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

    Další informace o profilech QIRtarget naleznete v části Azure QuantumQIRtarget profily v nástroji QDK.

  2. Definujte operaci Q#. Použijte například následující RandomBit operaci.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Otestujte operaci na místním simulátoru.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Zkompilujte operaci na QIR.

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

Odešlete úlohu Q#

  1. Vyberte kompatibilní target z vašeho pracovního prostoru.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Odešle zkompilovaný program.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Počkejte, až se úloha dokončí, a získejte její výsledky.

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