Skicka jobb till Azure Quantum med QDKPython paketet

Microsoft Quantum Development Kit Använd paketet (QDK) Python för att skicka Q#, OpenQASM, Qiskit, Cirqoch PennyLane program till Azure Quantum.

Den här artikeln innehåller exempel på jobbinskickning för varje kvantspråk eller ramverk som stöds. För ett interaktivt Q#- eller OpenQASM-arbetsflöde som inte kräver Python-kod, se Skicka jobb med tillägget QDK för VS Code.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration.

  • En Azure Quantum arbetsyta. Information om hur du skapar en finns i Skapa en Azure Quantum arbetsyta.

  • Python 3.10 eller senare.

  • Om du använder en Jupyter-anteckningsbok, en Jupyter-miljö som tillägget Jupyter för VS Code och paketet ipykernel.

  • Installera Azure CLI med quantum tillägget.

    az extension add --upgrade --name quantum
    
  • Installera den senaste versionen av qdkPython paketet med azure och jupyter extrafunktionerna.

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

    Om du vill skicka in ett Qiskit- eller Cirq-program, installera tilläggen cirq och qiskit.

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

Ansluta till din Azure Quantum arbetsyta

Innan du skickar ett jobb måste du ansluta till en Azure Quantum arbetsyta. Modulen qdk.azure innehåller objektet Workspace för att ansluta till Azure Quantum arbetsytor. Följ dessa steg för att ansluta till din arbetsyta.

Logga in med Azure CLI

Om du inte redan har gjort det loggar du in på Azure från en terminal innan du öppnar en Jupyter-anteckningsbok.

az login

Om du inte loggar in från terminalen måste du autentisera varje gång du ansluter till en Quantum-arbetsyta via Python. Om ditt konto har åtkomst till flera prenumerationer anger du den prenumeration som innehåller din Azure Quantum arbetsyta.

az account set --subscription <subscription-id>

Kör az login igen när sessionen upphör att gälla eller när du vill använda ett annat Azure konto.

Hämta resurs-ID för din arbetsyta

  1. Logga in på Azure-portalen.
  2. Gå till Quantum-arbetsytan där du vill skicka in jobbet.
  3. På sidan Översikt letar du upp och kopierar resurs-ID.

Anslut till arbetsytan

  1. Om du vill ansluta till din Quantum-arbetsyta skapar du ett Workspace objekt med det resurs-ID som du kopierade.

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

    Note

    Y

  2. Kontrollera anslutningen och visa de targets som är tillgängliga på arbetsytan.

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

Andra alternativ för anslutning och autentisering finns i Ansluta till din Azure Quantum arbetsyta.

Note

I följande exempel skickas jobb till simulatorn targets. Vilka targets som är tillgängliga på din arbetsyta beror på dina konfigurerade leverantörer.

Förbereda och skicka in ditt program

Välj fliken för ditt kvantspråk eller ramverk.

Använd modulen qdk.qsharp för att definiera eller läsa in Q# kod, kompilera en startpunkt till QIRoch skicka QIR till en Azure Quantumtarget.

Definiera och kompilera Q# programmet

  1. Initiera Q# med en QIRtarget-profil som Azure Quantumtarget stöder.

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

    Mer information om QIRtarget-profiler finns i Azure QuantumQIRtarget profiler i QDK.

  2. Definiera en Q# åtgärd. Använd till exempel följande RandomBit åtgärd.

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. Testa åtgärden på den lokala simulatorn.

    print(qsharp.run("RandomBit()", shots=10))
    
  4. Kompilera åtgärden till QIR.

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

Skicka jobbet Q#

  1. Välj en kompatibel target från din arbetsyta.

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. Skicka det kompilerade programmet.

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. Vänta tills jobbet har slutförts och hämta dess resultat.

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