Skip to main content
IBM Quantum Platform

Lote

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

GitHub

Bases: Session

Classe para executar trabalhos no modo de execução em lote.

O modo batch foi projetado para executar com eficiência experimentos que compreendem vários trabalhos independentes.

O uso do modo batch oferece os seguintes benefícios:

  • A computação clássica dos trabalhos, como a compilação, é executada em paralelo. Portanto, executar vários trabalhos em um lote é significativamente mais rápido do que executá-los em série.
  • Normalmente, há um atraso mínimo entre os trabalhos, o que pode ajudar a evitar desvios.
  • Se você dividir sua carga de trabalho em vários trabalhos e executá-los no modo batch , poderá obter resultados de trabalhos individuais, o que os torna mais flexíveis para trabalhar. Por exemplo, se os resultados de um trabalho não atenderem às suas expectativas, você poderá cancelar os trabalhos restantes ou simplesmente reenviar esse trabalho individual e evitar a reexecução de toda a carga de trabalho.

O modo de lote pode reduzir o tempo de processamento se todos os trabalhos forem fornecidos desde o início. Se você quiser enviar trabalhos iterativos, use o modo session .

Você pode abrir um lote Qiskit Runtime usando essa classe Batch e, em seguida, enviar trabalhos para uma ou mais primitivas.

Por exemplo:

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 obter mais detalhes, consulte a página " Executar trabalhos em um lote ".

Parâmetros

  • backend (BackendV2) – Instância da Backend classe.
  • max_time (int | str | None) – Tempo máximo que uma sessão de tempo de execução pode ficar aberta antes de ser fechada à força. Pode ser especificado como segundos (int) ou uma cadeia de caracteres como “2h 30m 40s”. Esse valor deve ser menor que o máximo imposto pelo sistema.
  • create_new (bool | None) – Se for True, o ponto de extremidade da API de sessão POST será chamado para criar uma nova sessão. Evita a criação de uma nova sessão quando from_id() é chamado.

Aumentos

ValueError - Se um valor de entrada for inválido.


Atributos

service

Serviço de retorno associado a essa sessão.

Retorna

qiskit_ibm_runtime.QiskitRuntimeService associado a essa sessão.

session_id

Retorna a ID da sessão.

Retorna

ID de Sessão. Nenhum se o backend for um simulador.


Métodos

backend

backend()

GitHub

Retorna o backend para essa sessão.

Retorna

Backend para esta sessão. Nenhum se for desconhecido.

Tipo de retorno

str | Nenhum

cancel

cancel()

GitHub

Cancelar todos os trabalhos pendentes em uma sessão.

Tipo de retorno

Nenhum

close

close()

GitHub

Feche a sessão para que não sejam mais aceitos novos trabalhos.

Feche a sessão para que novos trabalhos não sejam mais aceitos, mas os trabalhos existentes na fila ou em execução serão executados até a conclusão. A sessão será encerrada quando não houver mais trabalhos pendentes.

Tipo de retorno

Nenhum

details

details()

GitHub

Retornar detalhes da sessão.

Retorna

Um dicionário com os detalhes das sessões.

  • idiD da sessão: id da sessão.
  • backend_namebackend usado para a sessão.
  • interactive_timeout: O tempo ocioso máximo (em segundos) entre trabalhos que pode ocorrer antes que a sessão seja desativada.
  • max_time: Tempo máximo permitido (em segundos) para a sessão, sujeito aos limites do plano.
  • active_timeout: O tempo máximo (em segundos) que uma sessão pode permanecer ativa.
  • state: Estado da sessão - aberta, ativa, inativa ou fechada.
  • accepting_jobs: Se a sessão está ou não aceitando trabalhos.
  • last_job_started: Registro de data e hora do início do último trabalho na sessão.
  • last_job_completed: Registro de data e hora da conclusão do último trabalho na sessão.
  • started_at: Registro de data e hora de quando a sessão foi iniciada.
  • closed_at: Registro de data e hora de quando a sessão foi encerrada.
  • activated_at: Registro de data e hora de quando o estado da sessão foi alterado para ativo.
  • mode: Modo de execução da sessão.
  • usage_time: O tempo de uso, em segundos, dessa sessão ou lote. O uso é definido como o tempo que um sistema quântico fica comprometido para concluir um trabalho.

Tipo de retorno

dict [str, Qualquer] | Nenhum

from_id

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

GitHub

Crie um objeto Session com um determinado session_id.

Por exemplo:

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) – O ID da sessão a ser criada. Esse deve ser um ID de sessão já existente.
  • service (QiskitRuntimeService) – Instância da classe QiskitRuntimeService . Se estiver usando várias instâncias, observe que a instância na nuvem ativa no service será substituída pela que tiver acesso a esse session_id. Consulte a QiskitRuntimeService documentação sobre o uso de várias instâncias e o active_instance() método para verificar qual é a instância ativa.
  • use_fractional_gates (bool) – Se deve ou não permitir portas fracionárias para o backend utilizado para criar a sessão.
  • calibration_id (str | None) – O ID de calibração do backend utilizado para criar a sessão.

Aumentos

  • IBMInputValueError – Se o session_id fornecido não existir.
  • IBMRuntimeError – Se o backend da sessão for desconhecido.

Retorna

Uma nova sessão com o session_id

Tipo de retorno

Sessão

status

status()

GitHub

Retorna o status da sessão atual.

Retorna

Status da sessão como uma cadeia de caracteres.

  • Pending: A sessão foi criada, mas não está ativa. Ele se tornará ativo quando o próximo trabalho dessa sessão for retirado da fila.
  • In progress, accepting new jobssessão: está ativa e aceitando novos trabalhos.
  • In progress, not accepting new jobssessão: está ativa e não está aceitando novos trabalhos.
  • Closedtempo máximo expirou ou a sessão foi encerrada explicitamente.
  • None: os detalhes do status não estão disponíveis.

Tipo de retorno

str | Nenhum

usage

usage()

GitHub

Retorna o uso da sessão em segundos.

O uso da sessão é o tempo desde o início do primeiro trabalho até o momento em que a sessão fica inativa, é fechada ou quando o último trabalho é concluído, o que ocorrer por último.

O uso do lote é a quantidade de tempo que todos os trabalhos passam na QPU.

Tipo de retorno

float | Nenhum

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.