Batch
class Batch(backend, max_time=None, *, create_new=True)
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
batchausfü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
BackendKlasse. - 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()
Backend für diese Sitzung zurückgeben.
Rückgabe
Backend für diese Sitzung. Keine, wenn unbekannt.
Rückgabetyp
str | Keine
cancel
close
close()
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()
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)
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 derservicedurch diejenige ersetzt wird, die Zugriff auf diese hat. Bitte lesen Sie dieQiskitRuntimeServiceDokumentation zur Verwendung mehrerer Instanzen und dieactive_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
status
status()
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()
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