Sessão
class Session(backend, max_time=None, *, create_new=True)
Bases: object
Classe para criar uma sessão Qiskit Runtime.
Um Qiskit Runtime session permite que você agrupe uma coleção de chamadas iterativas para o computador quântico. Uma sessão é iniciada quando o primeiro trabalho dentro da sessão é iniciado. Os trabalhos subsequentes dentro da sessão são priorizados pelo agendador.
Você pode abrir uma sessão Qiskit Runtime usando essa classe Session e enviar trabalhos para uma ou mais primitivas.
Por exemplo:
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) – Instância da classe
Backend. - max_time (int | str | None) – Tempo máximo que uma sessão de tempo de execução pode permanecer aberta antes de ser encerrada forçosamente. Pode ser especificado como segundos (int) ou uma string como “2h 30m 40s”. Este valor deve ser inferior ao máximo imposto pelo sistema.
- create_new (bool | None) – Se for verdadeiro, o endpoint da API da sessão POST será chamado para criar uma nova sessão. Impede 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()
Retorna o backend para essa sessão.
Retorna
Backend para esta sessão. Nenhum se for desconhecido.
Tipo de retorno
str | Nenhum
cancel
close
close()
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()
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)
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.session_idSe estiver usando várias instâncias, observe que a instância ativa na nuvemserviceserá substituída pela que tiver acesso a esse recurso. Consulte aQiskitRuntimeServicedocumentação sobre o uso de várias instâncias e oactive_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
status
status()
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()
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