Sesión
class Session(backend, max_time=None, *, create_new=True)
Bases: object
Clase para crear una sesión Qiskit Runtime.
Un Qiskit Runtime session permite agrupar una colección de llamadas iterativas al ordenador cuántico. Una sesión se inicia cuando se inicia el primer trabajo dentro de la sesión. Los trabajos subsiguientes dentro de la sesión son priorizados por el planificador.
Puede abrir una sesión Qiskit Runtime utilizando esta clase Session y enviar trabajos a una o más primitivas.
Por ejemplo:
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()}")Parámetros
- backend (BackendV2) – Instancia de la clase
Backend. - max_time (int | str | None) – Tiempo máximo que una sesión de tiempo de ejecución puede permanecer abierta antes de ser cerrada de forma forzada. Se puede especificar en segundos (int) o como una cadena como “2h 30m 40s”. Este valor debe ser inferior al máximo impuesto por el sistema.
- create_new (bool | None) – Si es verdadero, se llamará al punto final de la API de sesión POST para crear una nueva sesión. Evita la creación de una nueva sesión cuando
from_id()se llama.
Eleva
ValueError - Si un valor de entrada no es válido.
Atributos
service
Devuelve el servicio asociado a esta sesión.
Devuelve
qiskit_ibm_runtime.QiskitRuntimeService asociada a esta sesión.
session_id
Devuelve el ID de la sesión.
Devuelve
ID de sesión. Ninguno si el backend es un simulador.
Métodos
backend
backend()
Devuelve el backend de esta sesión.
Devuelve
Backend para esta sesión. Ninguna si es desconocida.
Tipo de retorno
str | Ninguno
cancel
close
close()
Cierra la sesión para que no se acepten más trabajos.
Cierra la sesión para que ya no se acepten nuevos trabajos, pero los trabajos existentes en cola o en ejecución se ejecutarán hasta su finalización. La sesión finalizará cuando no haya más trabajos pendientes.
Tipo de retorno
Ninguna
details
details()
Devuelve los detalles de la sesión.
Devuelve
Un diccionario con los detalles de las sesiones.
id: id de la sesión.backend_name: backend utilizado para la sesión.interactive_timeout: El tiempo máximo de inactividad (en segundos) entre trabajos que se permite que ocurra antes de que se desactive la sesión.max_time: Tiempo máximo permitido (en segundos) para la sesión, sujeto a los límites del plan.active_timeout: El tiempo máximo (en segundos) que una sesión puede permanecer activa.state: Estado de la sesión: abierta, activa, inactiva o cerrada.accepting_jobs: Si la sesión está aceptando trabajos o no.last_job_started: Fecha y hora de inicio del último trabajo de la sesión.last_job_completed: Fecha y hora de finalización del último trabajo de la sesión.started_at: Hora de inicio de la sesión.closed_at: Fecha y hora de cierre de la sesión.activated_at: Marca de tiempo de cuando el estado de la sesión cambió a activo.mode: Modo de ejecución de la sesión.usage_time: El tiempo de uso, en segundos, de esta Sesión o Lote. El uso se define como el tiempo que un sistema cuántico está comprometido para completar un trabajo.
Tipo de retorno
dict [str, Cualquiera] | Ninguno
from_id
classmethod from_id(session_id, service, use_fractional_gates=False, calibration_id=None)
session_idCrea un objeto Session con un dato dado.
Por ejemplo:
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)Parámetros
- session_id (str) – El identificador de la sesión que se va a crear. Este debe ser un identificador de sesión ya existente.
- service (QiskitRuntimeService) – Instancia de la
QiskitRuntimeServiceclase. Si se utilizan varias instancias, ten en cuenta que la instancia en la nube activa en elserviceserá sustituida por aquella que tenga acceso a esesession_id. Consulte laQiskitRuntimeServicedocumentación sobre el uso de varias instancias y elactive_instance()método para comprobar cuál es la instancia activa. - use_fractional_gates (bool) – Si se permiten o no puertas fraccionarias para el backend que se utiliza para crear la sesión.
- calibration_id (str | None) – El identificador de calibración del backend que se utiliza para crear la sesión.
Eleva
- IBMInputValueError – Si el «session_id» proporcionado no existe.
- IBMRuntimeError – Si se desconoce el backend de la sesión.
Devuelve
Se creará una nueva sesión con el valor session_id
Tipo de retorno
status
status()
Devuelve el estado actual de la sesión.
Devuelve
Estado de la sesión en forma de cadena.
Pending: La sesión está creada pero no activa. Se activará cuando se ponga en cola el siguiente trabajo de esta sesión.In progress, accepting new jobs: la sesión está activa y acepta nuevos trabajos.In progress, not accepting new jobs: la sesión está activa y no acepta nuevos trabajos.Closed: max_time expiró o la sesión se cerró explícitamente.None: los detalles de estado no están disponibles.
Tipo de retorno
str | Ninguno
usage
usage()
Devuelve el uso de la sesión en segundos.
El uso de la sesión es el tiempo que transcurre desde que se inicia el primer trabajo hasta que la sesión se inactiva, se cierra o finaliza su último trabajo, lo que ocurra en último lugar.
El uso por lotes es la cantidad de tiempo que todos los trabajos pasan en la QPU.
Tipo de retorno
float | Ninguno