Skip to main content
IBM Quantum Platform

Batch

class Batch(backend, max_time=None, *, create_new=True)

GitHub

Basen: Session

Klasse für die Ausführung von Aufträgen im Stapelverarbeitungsmodus.

Der Modus batch ist für die effiziente Durchführung von Experimenten konzipiert, die mehrere unabhängige Aufträge umfassen.

Die Verwendung des Modus batch bietet die folgenden Vorteile:

  • Die klassischen Berechnungen der Aufträge, wie z. B. die Kompilierung, werden parallel ausgeführt. Daher ist die Ausführung mehrerer Aufträge in einem Batch wesentlich schneller als die serielle Ausführung.
  • In der Regel gibt es nur eine minimale Verzögerung zwischen den einzelnen Aufträgen, was dazu beitragen kann, ein Abdriften zu vermeiden.
  • Wenn Sie Ihre Arbeitslast in mehrere Aufträge aufteilen und diese im Modus batch ausführen, können Sie Ergebnisse von einzelnen Aufträgen erhalten, was die Arbeit flexibler macht. Wenn beispielsweise die Ergebnisse eines Auftrags nicht Ihren Erwartungen entsprechen, können Sie die verbleibenden Aufträge stornieren oder den betreffenden Auftrag einfach erneut übermitteln, ohne den gesamten Arbeitsaufwand erneut zu bewältigen.

Der Stapelverarbeitungsmodus kann die Verarbeitungszeit verkürzen, wenn alle Aufträge von Anfang an bereitgestellt werden. Wenn Sie iterative Aufträge übermitteln möchten, verwenden Sie stattdessen den Modus session .

Mit dieser Klasse Batch können Sie einen „ IBM Quantum Compute “-Batch (früher „ Qiskit Runtime “) öffnen und anschließend Aufträge an eine oder mehrere Primitive übermitteln.

Zum Beispiel:

import numpy as np
from qiskit.circuit.library import IQP
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit.quantum_info import random_hermitian
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler, Batch

n_qubits = 127

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False, min_num_qubits=n_qubits)

rng = np.random.default_rng()
mats = [np.real(random_hermitian(n_qubits, seed=rng)) for _ in range(30)]
circuits = [IQP(mat) for mat in mats]
for circuit in circuits:
    circuit.measure_all()

pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuits = pm.run(circuits)

max_circuits = 10
all_partitioned_circuits = []
for i in range(0, len(isa_circuits), max_circuits):
    all_partitioned_circuits.append(isa_circuits[i : i + max_circuits])
jobs = []
start_idx = 0

with Batch(backend=backend):
    sampler = Sampler()
    for partitioned_circuits in all_partitioned_circuits:
        job = sampler.run(partitioned_circuits)
        jobs.append(job)

Weitere Einzelheiten finden Sie auf der Seite " Aufträge in einem Batch ausführen ".

Parameter

  • backend (BackendV2) – Instanz der Backend Klasse.
  • max_time (int | str | None) – Maximale Dauer, während der eine „ IBM Quantum Compute “-Sitzung offen bleiben kann, bevor sie zwangsweise geschlossen wird. Kann als Sekundenwert (int) oder als Zeichenfolge wie „ “2h “, „ 30m “ oder „ 40s” “ angegeben werden. Dieser Wert muss unter dem vom System vorgegebenen Höchstwert liegen.
  • create_new (bool | None) – Bei True wird der POST-Session-API-Endpunkt aufgerufen, um eine neue Sitzung zu erstellen. Verhindert die Erstellung einer neuen Sitzung, wenn from_id() aufgerufen wird.

Erhöht

ValueError - Wenn ein Eingabewert ungültig ist.


Attribute

service

Rückgabe des mit dieser Sitzung verbundenen Dienstes.

Rückgabe

qiskit_ibm_runtime.QiskitRuntimeService die mit dieser Sitzung verbunden sind.

session_id

Gibt die Sitzungs-ID zurück.

Rückgabe

Die Sitzungs-ID. Keine, wenn das Backend ein Simulator ist.


Methoden

backend

backend()

GitHub

Backend für diese Sitzung zurückgeben.

Rückgabe

Backend für diese Sitzung. Keine, wenn unbekannt.

Rückgabetyp

str | Keine

cancel

cancel()

GitHub

Abbrechen aller ausstehenden Aufträge in einer Sitzung.

Rückgabetyp

Keine

close

close()

GitHub

Beenden Sie die Sitzung, damit keine neuen Aufträge mehr angenommen werden.

Schließen Sie die Sitzung, so dass keine neuen Aufträge mehr angenommen werden, aber vorhandene Aufträge in der Warteschlange oder laufende Aufträge bis zum Abschluss ausgeführt werden. Die Sitzung wird beendet, sobald keine Aufträge mehr anstehen.

Rückgabetyp

Keine

details

details()

GitHub

Details zur Sitzung zurückgeben.

Rückgabe

Ein Wörterbuch mit den Details der Sitzungen.

  • idid der Sitzung.
  • backend_name: für die Sitzung verwendetes Backend.
  • interactive_timeout: Die maximale Leerlaufzeit (in Sekunden) zwischen Aufträgen, die auftreten darf, bevor die Sitzung deaktiviert wird.
  • max_time: Maximal zulässige Zeit (in Sekunden) für die Sitzung, vorbehaltlich der Plangrenzen.
  • active_timeout: Die maximale Zeit (in Sekunden), die eine Sitzung aktiv bleiben kann.
  • state: Status der Sitzung - offen, aktiv, inaktiv oder geschlossen.
  • accepting_jobs: Ob die Sitzung Aufträge annimmt oder nicht.
  • last_job_started: Zeitstempel für den Beginn des letzten Auftrags in der Sitzung.
  • last_job_completed: Zeitstempel für die Beendigung des letzten Auftrags in der Sitzung.
  • started_at: Zeitstempel für den Beginn der Sitzung.
  • closed_at: Zeitstempel, wann die Sitzung beendet wurde.
  • activated_at: Zeitstempel, wann der Sitzungsstatus in aktiv geändert wurde.
  • mode: Ausführungsmodus der Sitzung.
  • usage_time: Die Nutzungszeit dieser Sitzung oder dieses Stapels in Sekunden. Die Nutzung ist definiert als die Zeit, die ein Quantensystem für die Ausführung eines Auftrags benötigt.

Rückgabetyp

dict [str, Any] | None

from_id

classmethod from_id(session_id, service, use_fractional_gates=False, calibration_id=None)

GitHub

Erstelle ein Session-Objekt mit einem bestimmten session_id.

Zum Beispiel:

from qiskit_ibm_runtime import QiskitRuntimeService, Session
service = QiskitRuntimeService()
job = service.job(<job_id>)
existing_session_id = job.session_id

new_session = Session.from_id(existing_session_id, service)

Parameter

  • session_id (str) – Die ID der zu erstellenden Sitzung. Dies muss eine bereits vorhandene Sitzungs-ID sein.
  • QiskitRuntimeServiceservice (QiskitRuntimeService) – Instanz der Klasse. session_idWenn Sie mehrere Instanzen verwenden, beachten Sie bitte, dass die aktive Cloud-Instanz in der service durch diejenige ersetzt wird, die Zugriff auf diese hat. Bitte lesen Sie die QiskitRuntimeService Dokumentation zur Verwendung mehrerer Instanzen und die active_instance() Methode zur Überprüfung, welche Instanz aktiv ist.
  • use_fractional_gates (bool) – Ob für das Backend, das zur Erstellung der Sitzung verwendet wird, Teil-Gates zugelassen werden sollen oder nicht.
  • calibration_id (str | None) – Die Kalibrierungs-ID für das Backend, das zum Erstellen der Sitzung verwendet wird.

Erhöht

  • IBMInputValueError – Falls die angegebene session_id nicht existiert.
  • IBMRuntimeError – Wenn das Backend der Sitzung unbekannt ist.

Rückgabe

Eine neue Session mit dem angegebenen session_id

Rückgabetyp

Sitzung

status

status()

GitHub

Rückgabe des aktuellen Sitzungsstatus.

Rückgabe

Sitzungsstatus als Zeichenkette.

  • Pending: Sitzung ist erstellt, aber nicht aktiv. Sie wird aktiv, wenn der nächste Auftrag dieser Sitzung aus der Warteschlange genommen wird.
  • In progress, accepting new jobs: Sitzung ist aktiv und nimmt neue Aufträge an.
  • In progress, not accepting new jobs: Sitzung ist aktiv und nimmt keine neuen Aufträge an.
  • Closed: max_time ist abgelaufen oder die Sitzung wurde explizit beendet.
  • None: Statusangaben sind nicht verfügbar.

Rückgabetyp

str | Keine

usage

usage()

GitHub

Rückgabe der Sitzungsnutzung in Sekunden.

Die Sitzungsnutzung ist die Zeit vom Start des ersten Auftrags bis zur Inaktivität der Sitzung, ihrer Schließung oder der Beendigung des letzten Auftrags, je nachdem, was zuletzt eintritt.

Die Batch-Nutzung ist die Zeit, die alle Aufträge auf der QPU verbringen.

Rückgabetyp

schwimmer | Keine

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.