Taken verzenden naar Azure Quantum met het QDKPython pakket

Gebruik het Microsoft Quantum Development-kit (QDK) Python-pakket om Q#, OpenQASM, Qiskit, Cirq en PennyLane-programma's in te dienen bij Azure Quantum.

Dit artikel bevat voorbeelden van het indienen van taken voor elke ondersteunde kwantumtaal of elk ondersteund framework. Zie Python voor een interactieve QDK- of VS Code-werkstroom waarvoor geen -code is vereist.

Prerequisites

  • Een Azure-account met een actief abonnement.

  • Een Azure Quantum werkruimte. Om er een te maken, raadpleegt u Een Azure Quantumwerkruimte maken.

  • Python 3.10 of hoger.

  • Als u een Jupyter-notebook gebruikt, is er een Jupyter-omgeving zoals de Jupyter-extensie voor VS Code en het ipykernel pakket.

  • Installeer Azure CLI met de quantum extensie.

    az extension add --upgrade --name quantum
    
  • Installeer de nieuwste versie van het qdkPython pakket met de azure en jupyter extra's.

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

    Als u een Qiskit- of Cirq-programma wilt indienen, installeert u de extra’s van cirq en qiskit.

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

Verbinding maken met uw Azure Quantum werkruimte

Voordat u een taak verzendt, moet u verbinding maken met een Azure Quantum werkruimte. De module qdk.azure stelt het object Workspace beschikbaar om verbinding te maken met Azure Quantum-werkruimtes. Volg deze stappen om verbinding te maken met uw werkruimte.

Aanmelden met Azure CLI

Als u dat nog niet hebt gedaan, meldt u zich aan bij Azure vanuit een terminal voordat u een Jupyter-notebook opent.

az login

Als u zich niet aanmeldt vanuit de terminal, moet u zich telkens verifiëren wanneer u verbinding maakt met een Quantum-werkruimte via Python. Als uw account toegang heeft tot meerdere abonnementen, stelt u het abonnement in dat uw Azure Quantum werkruimte bevat.

az account set --subscription <subscription-id>

Voer az login opnieuw uit wanneer de sessie verloopt of wanneer u een ander Azure-account wilt gebruiken.

De resource-id van uw werkruimte ophalen

  1. Meld u aan bij het Azure-portaal.
  2. Ga naar de Quantum-werkruimte waar u uw taak wilt verzenden.
  3. Zoek en kopieer resource-id op de pagina Overzicht.

Verbinding maken met de werkruimte

  1. Als u verbinding wilt maken met uw Quantum-werkruimte, maakt u een Workspace object met de resource-id die u hebt gekopieerd.

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

    Note

    Y

  2. Controleer de verbinding en bekijk de targets beschikbare in de werkruimte.

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

Zie Verbinding maken met uw Azure Quantum werkruimte voor andere verbindings- en verificatieopties.

Note

In de volgende voorbeelden worden taken verzonden naar de simulator targets. Welke targets beschikbaar is in uw werkruimte, is afhankelijk van uw geconfigureerde providers.

Uw programma voorbereiden en verzenden

Kies het tabblad voor uw kwantumtaal of framework.

Gebruik de module qdk.qsharp om Q# code te definiëren of te laden, een toegangspunt naar QIR te compileren en de QIR in te dienen bij een Azure Quantumtarget.

Het programma definiëren en compileren Q#

  1. Initialiseer Q# met een targetQIR-profiel dat door Azure Quantumtarget wordt ondersteund.

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

    Zie target voor meer informatie over QDKAzure Quantum-profielen.

  2. Definieer een Q# bewerking. Gebruik bijvoorbeeld de volgende RandomBit bewerking.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Test de bewerking op de lokale simulator.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Compileer de bewerking naar QIR.

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

Q# De taak verzenden

  1. Selecteer een compatibele target uit uw werkruimte.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Verzend het gecompileerde programma.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Wacht totdat de taak is voltooid en de resultaten ervan is opgehaald.

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