Skip to main content
IBM Quantum Platform

Lote

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

GitHub

Bases: Session

Clase para ejecutar trabajos en modo de ejecución por lotes.

El modo batch está diseñado para realizar de forma eficiente experimentos que comprenden múltiples trabajos independientes.

El uso del modo batch ofrece las siguientes ventajas:

  • La computación clásica de los trabajos, como la compilación, se ejecuta en paralelo. Por lo tanto, ejecutar varios trabajos por lotes es mucho más rápido que ejecutarlos en serie.
  • Suele haber un retraso mínimo entre un trabajo y otro, lo que puede ayudar a evitar la deriva.
  • Si divide su carga de trabajo en varios trabajos y los ejecuta en modo batch , puede obtener resultados de trabajos individuales, lo que hace que sea más flexible trabajar con ellos. Por ejemplo, si los resultados de un trabajo no cumplen sus expectativas, puede cancelar los trabajos restantes, o simplemente volver a enviar ese trabajo individual y evitar volver a ejecutar toda la carga de trabajo.

El modo por lotes puede acortar el tiempo de procesamiento si se proporcionan todos los trabajos al principio. Si desea enviar trabajos iterativos, utilice el modo session .

Puede abrir un lote Qiskit Runtime utilizando esta clase Batch , y luego enviar trabajos a una o más primitivas.

Por ejemplo:

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)

Para más detalles, consulte la página " Ejecutar trabajos por lotes ".

Parámetros

  • backend (BackendV2) – Instancia de Backend la clase.
  • max_time (int | str | None) – Tiempo máximo que una sesión de ejecución puede estar abierta antes de ser cerrada forzosamente. Puede especificarse como segundos (int) o una cadena como “2h 30m 40s”. Este valor debe ser inferior al máximo impuesto por el sistema.
  • create_new (bool | None) – Si es True, 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 se llama a from_id() .

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()

GitHub

Devuelve el backend de esta sesión.

Devuelve

Backend para esta sesión. Ninguna si es desconocida.

Tipo de retorno

str | Ninguno

cancel

cancel()

GitHub

Cancela todos los trabajos pendientes de una sesión.

Tipo de retorno

Ninguna

close

close()

GitHub

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()

GitHub

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 en que se cerró 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)

GitHub

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 QiskitRuntimeService clase. Si se utilizan varias instancias, ten en cuenta que la instancia en la nube activa en el service será sustituida por aquella que tenga acceso a ese session_id. Consulte la QiskitRuntimeService documentación sobre el uso de varias instancias y el active_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

Sesión

status

status()

GitHub

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()

GitHub

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

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.