Skip to main content
IBM Quantum Platform

IBM Quantum Compute (ehemals „ Qiskit Runtime “) Kunde

qiskit_ibm_runtime

Module im Zusammenhang mit dem „ IBM Quantum Compute “-Client (früher „ Qiskit Runtime “).

IBM Quantum Compute (früher „ Qiskit Runtime “) ist eine neue Architektur, die Berechnungen mit vielen Iterationen optimiert. Diese Experimente werden im Rahmen des verbesserten hybriden Quanten-Klassik-Prozesses deutlich schneller ablaufen.


Primitive und Sitzungen

IBM Quantum Compute verfügt über zwei vordefinierte Primitive: Sampler und Estimator. Diese Primitive bieten eine vereinfachte Schnittstelle zur Durchführung grundlegender Aufgaben im Bereich des Quantencomputings und tragen gleichzeitig den neuesten Entwicklungen bei der Quantenhardware und -software Rechnung.

IBM Quantum Compute verfügt außerdem über das Konzept einer Sitzung. Jobs, die innerhalb einer Sitzung übermittelt werden, werden vom Scheduler priorisiert. Eine Sitzung ermöglicht es Ihnen, iterative Abfragen an den Quantencomputer effizienter durchzuführen.

Im Folgenden finden Sie ein Beispiel für die Verwendung von Primitiven innerhalb einer Sitzung:

from qiskit_ibm_runtime import QiskitRuntimeService, Session
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import real_amplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

# Initialize account.
service = QiskitRuntimeService()

# Prepare inputs.
psi = real_amplitudes(num_qubits=2, reps=2)
H1 = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
# Bell Circuit
qr = QuantumRegister(2, name="qr")
cr = ClassicalRegister(2, name="cr")
qc = QuantumCircuit(qr, cr, name="bell")
qc.h(qr[0])
qc.cx(qr[0], qr[1])
qc.measure(qr, cr)

backend = service.least_busy(operational=True, simulator=False)
pm = generate_preset_pass_manager(target=backend.target, optimization_level=1)

bell_isa_circuit = pm.run(qc)
psi_isa_circuit = pm.run(psi)
isa_observables = H1.apply_layout(psi_isa_circuit.layout)

with Session(backend=backend) as session:
    # Submit a request to the Sampler primitive within the session.
    sampler = Sampler(mode=session)
    job = sampler.run([bell_isa_circuit])
    pub_result = job.result()[0]
    print(f"Counts: {pub_result.data.cr.get_counts()}")

    # Submit a request to the Estimator primitive within the session.
    estimator = Estimator(mode=session)
    estimator.options.resilience_level = 1  # Set options.
    job = estimator.run(
        [(psi_isa_circuit, isa_observables, theta)]
    )
    pub_result = job.result()[0]
    print(f"Expectation values: {pub_result.data.evs}")

Lokaler Testmodus

Mit dem lokalen Testmodus können Sie Ihre Quantenprogramme validieren, bevor Sie sie an ein physisches System senden. Der lokale Testmodus wird aktiviert, wenn bei der Instanziierung eines Primitivs oder einer Sitzung eines der Fake-Backends in qiskit_ibm_runtime.fake_provider oder eine Qiskit Aer-Backend-Instanz verwendet wird. Zum Beispiel:

from qiskit_aer import AerSimulator
from qiskit.circuit.library import real_amplitudes
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

from qiskit_ibm_runtime import Session
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

# Bell Circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

# Run the sampler job locally using FakeManilaV2
fake_manila = FakeManilaV2()
pm = generate_preset_pass_manager(backend=fake_manila, optimization_level=1)
isa_qc = pm.run(qc)
sampler = Sampler(backend=fake_manila)
result = sampler.run([isa_qc]).result()

# Run the sampler job locally using AerSimulator.
# Session syntax is supported but ignored.
aer_sim = AerSimulator()
pm = generate_preset_pass_manager(backend=aer_sim, optimization_level=1)
isa_qc = pm.run(qc)
with Session(backend=aer_sim) as session:
    sampler = Sampler(mode=session)
    result = sampler.run([isa_qc]).result()

Backend-Daten

QiskitRuntimeService verfügt außerdem über Methoden wie backend(), backends(), und least_busy(), mit denen Sie nach einem zu verwendenden Ziel-Backend suchen können. Diese Methoden geben eine oder mehrere IBMBackend Instanzen zurück, die Methoden und Attribute enthalten, die das Backend beschreiben.


Zusätzliche Informationen

Kontoeinrichtung

Sie müssen Ihr Konto zunächst einrichten, bevor Sie den Dienst „ IBM Quantum Compute “ nutzen können. Dazu initialisieren Sie eine Instanz QiskitRuntimeService mit Ihren Anmeldedaten. Wenn Sie die Anmeldedaten nicht jedes Mal neu eingeben möchten, können Sie die Methode QiskitRuntimeService.save_account() verwenden, um die Anmeldedaten auf der Festplatte zu speichern.

IBM Quantum Compute ist unter IBM Cloud verfügbar, und Sie können den Kanal mit oder channel="ibm_cloud" angeben channel="ibm_quantum_platform".

IBM Quantum Compute Stellenangebote

Wenn Sie die Methode run() des oder Sampler des verwenden, Estimator um die Primitive aufzurufen, wird eine -Instanz RuntimeJobV2 zurückgegeben. Diese Klasse verfügt über alle grundlegenden Job-Methoden, wie z. B. RuntimeJobV2.status(), RuntimeJobV2.result(), und RuntimeJobV2.cancel().

Protokollierung

qiskit-ibm-runtime verwendet den Logger qiskit_ibm_runtime .

Zwei Umgebungsvariablen können verwendet werden, um die Protokollierung zu steuern:

  • QISKIT_IBM_RUNTIME_LOG_LEVEL: Gibt die zu verwendende Protokollstufe an.

    Wenn eine ungültige Stufe eingestellt ist, wird die Protokollstufe auf WARNING zurückgesetzt. Die gültigen Protokollebenen sind DEBUG, INFO, WARNING, ERROR und CRITICAL (Groß- und Kleinschreibung wird nicht berücksichtigt). Wenn die Umgebungsvariable nicht gesetzt ist, wird der Level des übergeordneten Loggers verwendet, der ebenfalls standardmäßig auf WARNING steht.

  • QISKIT_IBM_RUNTIME_LOG_FILE: Gibt den Namen der zu verwendenden Protokolldatei an. Falls angegeben,

    meldungen werden nur in der Datei protokolliert. Andernfalls werden die Meldungen im Standardfehler protokolliert (normalerweise auf dem Bildschirm).

Für fortgeschrittene Anwendungen können Sie den Logger selbst ändern. Zum Beispiel, um den Pegel manuell auf WARNING einzustellen:

import logging
logging.getLogger('qiskit_ibm_runtime').setLevel(logging.WARNING)

Klassen

Kolumne „ 1 “
Kolumne „ 2 “
QiskitRuntimeServiceKlasse zur Interaktion mit dem Dienst „ IBM Quantum Compute “ (früher „ Qiskit Runtime “).
EstimatorAlias von EstimatorV2
EstimatorV2EstimatorV2 Primitive für IBM Quantum Compute (ehemals Qiskit Runtime ).
SamplerAlias von SamplerV2
SamplerV2SamplerV2 Primitive für IBM Quantum Compute (ehemals Qiskit Runtime ).
ExecutorKlasse für das Ausführen von QuantumProgram\s.
SessionKlasse zum Erstellen einer „ IBM Quantum Compute “-Sitzung (früher „ Qiskit Runtime “).
BatchKlasse für die Ausführung von Aufträgen im Stapelverarbeitungsmodus.
IBMBackendBackend-Klasse, die eine Schnittstelle zu einem „ IBM Quantum Compute “-Backend (früher „ Qiskit Runtime “) bildet.
RuntimeJobV2Darstellung der Ausführung einer „ IBM Quantum Compute “-Primitive (früher „ Qiskit Runtime “) V2.
RuntimeEncoderJSON-Encoder, der vom Dienst „ IBM Quantum Compute “ verwendet wird.
RuntimeDecoderJSON-Decoder, der vom Dienst „ IBM Quantum Compute “ verwendet wird.
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.