Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan skicka Qiskit-program som ska köras på Azure Quantum targets med Microsoft Quantum Development Kit (QDK). Du kan också köra Qiskit-program på din lokala dator med QDK:s inbyggda sparse-simulator. QDK stöder både version 1 och version 2 av Qiskit.
I den här artikeln får du lära dig hur du kör Qiskit-program med QDK-biblioteket Python från en Jupyter Notebook i Visual Studio Code (VS Code).
Kommentar
Det är en bra idé att köra kvantprogrammet på en simulator target innan du skickar ett jobb som ska köras på en kvantdator target. Varje Azure Quantum-provider erbjuder en eller flera kostnadsfria simulatorer targets.
Förutsättningar
Om du vill skicka Qiskit-jobb till Azure Quantum och köra Qiskit-program på den lokala glesa simulatorn måste du ha följande:
En Azure Quantum-arbetsyta i din Azure-prenumeration. Information om hur du skapar en arbetsyta finns i Skapa en Azure Quantum-arbetsyta.
En lokal Python miljö (version 3.10 eller senare) med Python och Pip installerat.
Visual Studio Code (VS Code) med Python och Jupyter-tilläggen installerade.
Biblioteket
qdkPython medazureextrafunktionerna ochqiskitipykernelpaketet.pip install --upgrade "qdk[azure,qiskit]" ipykernel
Skicka ett jobb till Azure Quantum target i din Quantum-arbetsyta
Följ dessa steg för att skicka ett Qiskit-program som ska köras på ett Azure Quantum target:
Öppna menyn Visa i VS Code och välj Kommandopalett.
Ange och välj Skapa: Ny Jupyter Notebook. En tom Jupyter Notebook-fil öppnas på en ny flik.
I den första cellen i anteckningsboken skriver du en Qiskit-krets. Använd till exempel följande krets:
from qiskit import QuantumCircuit # Create a Quantum circuit that acts on the q register circuit = QuantumCircuit(3, 3) circuit.name = "Qiskit Sample - 3-qubit GHZ circuit" circuit.h(0) circuit.cx(0, 1) circuit.cx(1, 2) circuit.measure([0, 1, 2], [0, 1, 2]) # Print out the circuit circuit.draw()Anslut till din Azure Quantum-arbetsyta.
from qdk.azure import Workspace workspace = Workspace(resource_id="") # Add the resource ID of your workspaceHämta leverantörerna från din arbetsyta som kan köra Qiskit-program och skriva ut de tillgängliga targets för varje leverantör.
from qdk.azure.qiskit import AzureQuantumProvider provider = AzureQuantumProvider(workspace) for backend in provider.backends(): print("- " + backend.name)Ange Azure Quantum-backend-tjänsten med den target som du vill skicka ditt jobb till. Följande kod konfigurerar till exempel en serverdel för att köra programmet på Rigetti-simulatorn:
backend = provider.get_backend('rigetti.sim.qvm')Kör programmet på Azure Quantum target och få resultatet. Följande kod kör 1 000 bilder av programmet på den angivna target koden och lagrar resultatet:
job = backend.run(circuit, shots=1000) result = job.result() print(result)
Granska jobbresultatet
Objektet result innehåller information om dina jobbresultat, till exempel mätresultatet för varje skott, samt totalt antal och sannolikheter för varje möjlig mätning.
Om du vill skapa ett histogram med mätresultat skickar du kretsen till get_counts metoden och skickar sedan antalet till plot_histogram funktionen från modulen qiskit.visualization . Följande kod formaterar counts om objektet för att visa alla möjliga mätresultat:
from qiskit.visualization import plot_histogram
print("Job ID:", job.job_id())
counts = result.get_counts(circuit)
print('Counts:', counts)
# Reformat counts to include all possible measurement outcomes, even those with zero counts
full_counts = {format(n, "03b"): 0 for n in range(8)}
full_counts.update(counts)
plot_histogram(full_counts)
Kommentar
Om du vill använda plot_histogram funktionen från Qiskit måste du installera Matplotlib.
pip install matplotlib
Qiskit-jobbresultat för program med qubitförlust
Vissa typer av kvantmaskinvara kan uppleva kvantbitsförlust under en programkörning. Om kvantbitsförlust uppstår när som helst under en mätning för ett Qiskit-program, tas den mätningen bort från resultaten av Azure Quantum-jobbet. Om kvantbitsförlust till exempel inträffar i 10 av 200 skott har jobbresultaten bara 190 totala måttantal.
De råa resultaten för alla skott, inklusive skott där qubitförlust inträffade, är fortfarande tillgängliga i results objektet. Följande kod hämtar båda resultatuppsättningarna:
# Get results only for shots without qubit loss
print('Counts:', result.results[0].data.counts)
print('Probabilities:', result.results[0].data.probabilities)
print('Memory:', result.results[0].data.memory)
# Get the raw total shot results
print('Raw counts:', result.results[0].data.raw_counts)
print('Raw probabilities:', result.results[0].data.raw_probabilities)
print('Raw memory:', result.results[0].data.raw_memory)
För jobb eller targets som inte har qubitförlust är standardresultaten och råresultaten identiska.
Kommentar
Attributet memory för Qiskit-jobbresultat är en lista över mätresultatet för varje skott.
Köra ett jobb i QDK-sparse-simulatorn
QDK innehåller en inbyggd sparse-simulator som du kan använda för att köra Qiskit-program på din lokala dator i stället för att skicka ett jobb till Azure Quantum. Om du vill köra ett Qiskit-program på den glesa simulatorn använder du QSharpBackend för att skapa en instans av ett serverdelsobjekt.
from qsharp.interop.qiskit import QSharpBackend
backend = QSharpBackend()
job = backend.run(circuit)
counts = job.result().get_counts()
print(counts)