Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Programy Qiskit můžete odeslat ke spuštění v Azure Quantum targets pomocí sady Microsoft Quantum Development Kit (QDK). Programy Qiskit můžete také spustit na místním počítači s použitím integrovaného řídkého simulátoru QDK. QDK podporuje verzi 1 i verzi 2 Qiskitu.
V tomto článku se dozvíte, jak spouštět programy Qiskit s knihovnou QDK Python z poznámkového bloku Jupyter v editoru Visual Studio Code (VS Code).
Poznámka:
Osvědčeným postupem je spustit kvantový program na simulátoru target před odesláním úlohy ke spuštění na kvantovém počítači target. Každý poskytovatel Azure Quantum nabízí jeden nebo více bezplatných simulátorů targets.
Požadavky
Pokud chcete odeslat úlohy Qiskitu do Azure Quantum a spustit programy Qiskit v místním řídkém simulátoru, musíte mít následující:
Pracovní prostor Azure Quantum ve vašem předplatném Azure Pokud chcete vytvořit pracovní prostor, přečtěte si téma Vytvoření pracovního prostoru Azure Quantum.
Místní
prostředí (verze 3.10 nebo vyšší) s nainstalovanými Pip a . Visual Studio Code (VS Code) s nainstalovaným rozšířením Python a Jupyter
Knihovna
qdkPython s rozšířenímiazureaqiskita balíčkemipykernel.pip install --upgrade "qdk[azure,qiskit]" ipykernel
Odešlete úlohu do Azure Quantum ve vašem kvantovém pracovním prostoru target
Pokud chcete odeslat program Qiskit ke spuštění v Azure Quantum target, postupujte takto:
Ve VS Code otevřete nabídku Zobrazení a zvolte Paleta příkazů.
Zadejte a vyberte Vytvořit: Nový poznámkový blok Jupyter. Na nové kartě se otevře prázdný soubor Jupyter Notebook.
V první buňce vašeho notebooku napište okruh Qiskit. Použijte například následující okruh:
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()Připojte se k pracovnímu prostoru Azure Quantum.
from qdk.azure import Workspace workspace = Workspace(resource_id="") # Add the resource ID of your workspaceZískejte z vašeho pracovního prostoru poskytovatele, kteří můžou spouštět programy Qiskit a tisknout dostupné targets pro každého zprostředkovatele.
from qdk.azure.qiskit import AzureQuantumProvider provider = AzureQuantumProvider(workspace) for backend in provider.backends(): print("- " + backend.name)Nastavte back-end Azure Quantum pomocí target, ke kterému chcete odeslat svoji úlohu. Například následující kód nastaví back-end pro spuštění programu v simulátoru Rigetti:
backend = provider.get_backend('rigetti.sim.qvm')Spusťte program v Azure Quantum target a získejte výsledky. Následující kód spustí 1 000 výstřelů vašeho programu na zadaném target a uloží výsledky:
job = backend.run(circuit, shots=1000) result = job.result() print(result)
Prozkoumání výsledků úloh
Objekt result obsahuje informace o výsledcích vaší úlohy, například výsledek měření pro každý snímek a celkový počet a pravděpodobnosti pro každé možné měření.
Pokud chcete vytvořit histogram výsledků měření, předejte obvod metodě get_counts a poté předajte hodnoty počtů do funkce plot_histogram z modulu qiskit.visualization. Následující kód přeformátuje counts objekt tak, aby zobrazoval všechny možné výsledky měření:
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)
Poznámka:
Pokud chcete použít plot_histogram funkci z Qiskitu, musíte nainstalovat Matplotlib.
pip install matplotlib
Výsledky úloh Qiskitu pro programy se ztrátou qubitu
Některé typy kvantového hardwaru můžou během spuštění programu zaznamenat ztrátu qubitu. Pokud dojde ke ztrátě qubitu v jakémkoli okamžiku během snímku programu Qiskit, odebere se tento snímek z výsledků úlohy Azure Quantum. Pokud například dojde ke ztrátě qubitu při 10 z 200 snímků, výsledky úlohy mají pouze 190 celkových hodnot měření.
Nezpracované výsledky pro všechny snímky, včetně snímků, ve kterých došlo ke ztrátě qubitu, jsou v objektu results stále dostupné. Následující kód získá obě sady výsledků:
# 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)
U úloh nebo targets, které nemají ztrátu qubitu, jsou výchozí výsledky a surové výsledky identické.
Poznámka:
Atributem memory pro výsledky úlohy Qiskit je seznam výsledků měření pro každý snímek.
Spustit úlohu na řídkém simulátoru QDK
QDK obsahuje integrovaný řídký simulátor, který můžete použít ke spouštění programů Qiskit na místním počítači místo odeslání úlohy do Azure Quantum. Pokud chcete spustit program Qiskit na řídkém simulátoru, použijte QSharpBackend k vytvoření instance back-endového objektu.
from qsharp.interop.qiskit import QSharpBackend
backend = QSharpBackend()
job = backend.run(circuit)
counts = job.result().get_counts()
print(counts)