Sessione
class Session(backend, max_time=None, *, create_new=True)
Basi: object
Classe per la creazione di una sessione “ IBM Quantum Compute ” (precedentemente denominata “ Qiskit Runtime ”).
Un " IBM Quantum Compute " consente session di raggruppare una serie di chiamate iterative al computer quantistico. Una sessione viene avviata quando viene avviato il primo processo al suo interno. I lavori successivi all'interno della sessione vengono ordinati in base alla priorità dallo scheduler.
È possibile aprire una sessione IBM Quantum Compute utilizzando questa Session classe e inviare lavori a una o più primitive.
Ad esempio:
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, Session, SamplerV2 as Sampler
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# 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)
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)
with Session(backend=backend) as session:
sampler = Sampler(mode=session)
job = sampler.run([isa_circuit])
pub_result = job.result()[0]
print(f"Sampler job ID: {job.job_id()}")
print(f"Counts: {pub_result.data.cr.get_counts()}")Parametri
- backend (BackendV2) – Istanza della classe
Backend. - max_time (int | str | None) – Tempo massimo durante il quale una sessione di IBM Quantum Compute può rimanere aperta prima di essere chiusa automaticamente. 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 vero, verrà chiamato l'endpoint API della sessione POST per creare una nuova sessione. Impedisce la creazione di una nuova sessione quando
from_id()viene chiamato.
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()
Restituisce il backend per questa sessione.
Risultati
Backend per questa sessione. Nessuno se sconosciuto.
Tipo di restituzione
str | Nessuno
cancel
close
close()
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()
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)
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 nelserviceverrà sostituita con quella che ha accesso a quelsession_id. Si prega di consultare laQiskitRuntimeServicedocumentazione sull'uso di più istanze e ilactive_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
status
status()
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()
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