Skip to main content
IBM Quantum Platform

Batch

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

GitHub

Basi: Session

Classe per l'esecuzione di lavori in modalità batch.

La modalità batch è progettata per eseguire in modo efficiente esperimenti che comprendono più lavori indipendenti.

L'utilizzo della modalità batch offre i seguenti vantaggi:

  • I calcoli classici dei lavori, come la compilazione, vengono eseguiti in parallelo. Pertanto, l'esecuzione di più lavori in batch è significativamente più veloce rispetto all'esecuzione in serie.
  • Di solito il ritardo tra un lavoro e l'altro è minimo, il che può aiutare a evitare la deriva.
  • Se si suddivide il carico di lavoro in più lavori e li si esegue in modalità batch , è possibile ottenere i risultati dei singoli lavori, rendendoli più flessibili. Ad esempio, se i risultati di un lavoro non soddisfano le aspettative, è possibile annullare i lavori rimanenti o semplicemente inviare nuovamente quel singolo lavoro, evitando di rieseguire l'intero carico di lavoro.

La modalità batch può ridurre i tempi di elaborazione se tutti i lavori vengono forniti all'inizio. Se si desidera inviare lavori iterativi, utilizzare invece la modalità session .

È possibile aprire un batch " IBM Quantum Compute " (precedentemente denominato " Qiskit Runtime ") utilizzando questa classe Batch , per poi inviare i lavori a una o più primitive.

Ad esempio:

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)

Per maggiori dettagli, consultare la pagina " Esecuzione di lavori in batch ".

Parametri

  • backend (BackendV2) – Istanza della Backend classe.
  • max_time (int | str | None) – Tempo massimo durante il quale una sessione di IBM Quantum Compute può rimanere aperta prima di essere chiusa forzatamente. Può essere specificato come numero di secondi (int) o come stringa del tipo “2h, 30m, 40s”. Questo valore deve essere inferiore al limite massimo imposto dal sistema.
  • create_new (bool | None) – Se True, verrà richiamato l'endpoint POST dell'API di sessione per creare una nuova sessione. Impedisce la creazione di una nuova sessione quando viene chiamato from_id() .

Aumenti

ValueError - Se un valore di ingresso non è valido.


Attributi

service

Restituisce il servizio associato a questa sessione.

Risultati

qiskit_ibm_runtime.QiskitRuntimeService associato a questa sessione.

session_id

Restituisce l'ID della sessione.

Risultati

ID sessione. Nessuno se il backend è un simulatore.


Metodi

backend

backend()

GitHub

Restituisce il backend per questa sessione.

Risultati

Backend per questa sessione. Nessuno se sconosciuto.

Tipo di restituzione

str | Nessuno

cancel

cancel()

GitHub

Annulla tutti i lavori in sospeso in una sessione.

Tipo di restituzione

Nessuna

close

close()

GitHub

Chiudi la sessione in modo che non vengano più accettati nuovi lavori.

Chiudere la sessione, in modo che non vengano più accettati nuovi lavori, ma i lavori esistenti in coda o in esecuzione vengano eseguiti fino al completamento. La sessione verrà terminata quando non ci saranno più lavori in sospeso.

Tipo di restituzione

Nessuna

details

details()

GitHub

Restituire i dettagli della sessione.

Risultati

Un dizionario con i dettagli delle sessioni.

  • id: id della sessione.
  • backend_name: backend utilizzato per la sessione.
  • interactive_timeout: Il tempo massimo di inattività (in secondi) tra un lavoro e l'altro consentito prima che la sessione venga disattivata.
  • max_time: Tempo massimo consentito (in secondi) per la sessione, soggetto ai limiti del piano.
  • active_timeout: Il tempo massimo (in secondi) in cui una sessione può rimanere attiva.
  • state: Stato della sessione: aperta, attiva, inattiva o chiusa.
  • accepting_jobs: Se la sessione sta accettando o meno lavori.
  • last_job_started: Timestamp dell'inizio dell'ultimo lavoro della sessione.
  • last_job_completed: Timestamp del completamento dell'ultimo lavoro della sessione.
  • started_at: Timestamp di quando è stata avviata la sessione.
  • closed_at: Timestamp di quando la sessione è stata chiusa.
  • activated_at: Timestamp di quando lo stato della sessione è stato cambiato in attivo.
  • mode: Modalità di esecuzione della sessione.
  • usage_time: Il tempo di utilizzo, in secondi, di questa sessione o batch. L'utilizzo è definito come il tempo in cui un sistema quantistico è impegnato a completare un lavoro.

Tipo di restituzione

dict [str, Qualsiasi] | Nessuno

from_id

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

GitHub

Crea un oggetto Session con un dato session_id.

Ad esempio:

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)

Parametri

  • session_id (str) – L'ID della sessione da creare. Questo deve essere un ID di sessione già esistente.
  • QiskitRuntimeServiceservice (QiskitRuntimeService) – Istanza della classe. Se si utilizzano più istanze, tenere presente che l'istanza cloud attiva nel service verrà sostituita con quella che ha accesso a quel session_id. Si prega di consultare la QiskitRuntimeService documentazione sull'uso di più istanze e il active_instance() metodo per verificare quale sia l'istanza attiva.
  • use_fractional_gates (bool) – Se consentire o meno i gate frazionari per il backend utilizzato per creare la sessione.
  • calibration_id (str | None) – L'ID di calibrazione del backend utilizzato per creare la sessione.

Aumenti

  • IBMInputValueError – Se l'ID della sessione specificato non esiste.
  • IBMRuntimeError – Se il backend della sessione è sconosciuto.

Risultati

Una nuova sessione con i dati session_id

Tipo di restituzione

Sessione

status

status()

GitHub

Restituisce lo stato attuale della sessione.

Risultati

Stato della sessione come stringa.

  • Pending: La sessione è stata creata ma non è attiva. Diventerà attivo quando il lavoro successivo di questa sessione verrà eliminato.
  • In progress, accepting new jobs: la sessione è attiva e accetta nuovi lavori.
  • In progress, not accepting new jobs: la sessione è attiva e non accetta nuovi lavori.
  • Closed: il tempo massimo è scaduto o la sessione è stata chiusa esplicitamente.
  • None: i dettagli sullo stato non sono disponibili.

Tipo di restituzione

str | Nessuno

usage

usage()

GitHub

Restituisce l'utilizzo della sessione in secondi.

L'utilizzo della sessione è il tempo che intercorre tra l'avvio del primo lavoro e l'inattività della sessione, la sua chiusura o il completamento dell'ultimo lavoro, a seconda dell'ultimo caso.

L'utilizzo dei batch è la quantità di tempo che tutti i lavori trascorrono sulla QPU.

Tipo di restituzione

galleggiante | Nessuno

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.