Deine erste Qiskit Serverless-Arbeitslast remote ausführen
Paketversionen
Der Code auf dieser Seite wurde mit den folgenden Anforderungen entwickelt. Wir empfehlen, diese Versionen oder neuere zu verwenden.
qiskit[all]~=1.4.0
qiskit-ibm-runtime~=0.36.1
qiskit-ibm-catalog~=0.4
Qiskit Serverless wird gerade aufgewertet, und seine Funktionen entwickeln sich schnell weiter. Während dieser Entwicklungsphase findest du Release Notes und die aktuellste Dokumentation auf der Qiskit Serverless GitHub-Seite.
Dieser Abschnitt zeigt, wie du qiskit-ibm-catalog verwendest, um in Qiskit Serverless verfügbare Programme aufzulisten, Eingaben an diese Programme zu übergeben, sie remote auszuführen, ihren Status zu prüfen sowie Ergebnisse und Logs abzurufen.
Stelle sicher, dass du den Workflow in Dein erstes Qiskit Serverless-Programm schreiben abgeschlossen hast, bevor du beginnst.
Verfügbare Programme auflisten
Du kannst QiskitServerless.list() verwenden, um eine Liste der verfügbaren Programme abzurufen, die du mit Qiskit Serverless ausführen kannst. Dazu gehört das zuvor hochgeladene transpile_remote_serverless.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog qiskit-ibm-runtime
from qiskit_ibm_catalog import QiskitServerless
serverless = QiskitServerless()
next(
program
for program in serverless.list()
if program.title == "transpile_remote_serverless"
)
QiskitFunction(transpile_remote_serverless)
Ein hochgeladenes Programm ausführen und Eingaben übergeben
Zuerst richtest du deine Eingaben ein. Dein Programm hat drei Eingaben: circuits, backend und optimization_level. Du kannst random_circuit verwenden, um 30 zufällige Circuits zu erstellen:
from qiskit.circuit.random import random_circuit
qc_random = [(random_circuit(4, 4, measure=True, seed=i)) for i in range(10)]
qc_random[0].draw(output="mpl", idle_wires=False)
Verwende anschließend QiskitRuntimeService und least_busy, um einen backend auszuwählen:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
print(backend.name)
Lege deinen Optimierungsgrad fest:
optimization_level = 3
Wähle dein Programm mit serverless.load('PROGRAM_NAME'):
transpile_remote_serverless = serverless.load("transpile_remote_serverless")
Übergib dann deine Eingaben und führe es auf pythonische Weise wie folgt aus:
job = transpile_remote_serverless.run(
circuits=qc_random,
backend=backend.name,
optimization_level=optimization_level,
)
job.job_id
'118256c5-bbb0-4ea8-9e9f-51aac2220aef'