Pular para o conteúdo principal

Tempo máximo de execução para cargas de trabalho do Qiskit Runtime

Para garantir a justiça, há um tempo máximo calculado pelo serviço para cada job do Qiskit Runtime. Se um job ultrapassar esse limite de tempo, ele será cancelado forçosamente e uma exceção RuntimeJobMaxTimeoutError será lançada. Você também pode definir um tempo máximo de execução nos seus jobs para ajudar a controlar os custos.

nota

A sessão ou o batch é encerrado imediatamente quando o limite de custo é atingido.

Definir um tempo máximo de execução

O tempo máximo de execução de um job é o menor destes valores:

  • O valor definido para max_execution_time
  • O valor de timeout do job determinado pelo serviço

O valor de max_execution_time é baseado no tempo quântico, e não no tempo de relógio. O tempo quântico é a quantidade de tempo que a QPU fica dedicada ao processamento do seu job.

Defina o tempo máximo de execução (em segundos) nas opções do job, conforme mostrado no exemplo a seguir. Consulte Especificar opções para obter informações sobre como configurar opções.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(mode=backend)

estimator.options.max_execution_time = 2500

Você também pode descobrir quanto tempo quântico os jobs concluídos utilizaram, retornando as métricas do job da seguinte forma:

# Find quantum time used by the job
print(f"Quantum time used by job {job.job_id()} was {job.metrics()['usage']['quantum_seconds']} seconds")

Tempo máximo de execução calculado pelo serviço

O serviço calcula um valor de timeout adequado para o job com base nos circuitos e opções de entrada. Esse timeout calculado pelo serviço é limitado a 3 horas para garantir um uso justo do dispositivo. Se um max_execution_time também for especificado para o job, o menor dos dois valores é utilizado.

Por exemplo, se você especificar max_execution_time=5000 (aproximadamente 83 minutos), mas o serviço determinar que não deveria levar mais de 5 minutos (300 segundos) para executar o job, então o job será cancelado após 5 minutos.

Tempo máximo de execução do batch

Quando um batch é iniciado, ele recebe um valor máximo de tempo de vida (TTL máximo). Após esse TTL ser atingido, o batch é encerrado, os jobs que já estão em execução continuam sendo executados, e os jobs enfileirados que permanecem no batch são colocados em estado de falha.

Os batches também têm um valor de tempo de vida interativo (TTL interativo) entre jobs que não pode ser configurado. Se você não fechar explicitamente um batch, ele será desativado após o TTL interativo expirar e poderá ser reativado a qualquer momento até atingir seu TTL máximo.

Para instruções sobre como trabalhar com esses valores, consulte Executar jobs em um batch.

Tempo máximo de execução da sessão

Quando uma sessão é iniciada, ela recebe um valor de TTL máximo que determina por quanto tempo a sessão pode ser executada. Após esse TTL ser atingido, a sessão é encerrada, os jobs que já estão em execução continuam sendo executados, e os jobs enfileirados que permanecem na sessão são colocados em estado de falha.

Há também um valor de TTL interativo que não pode ser configurado. Se nenhum job da sessão for enfileirado dentro dessa janela, a sessão será temporariamente desativada.

Para instruções sobre como trabalhar com esses valores, consulte Executar jobs em uma sessão.

Outras limitações

  • As entradas para os jobs não podem exceder 50 MB de tamanho.
  • Usuários do Plano Gratuito podem usar até 10 minutos de tempo quântico por janela contínua de 28 dias. O tempo quântico é a quantidade de tempo que a QPU fica dedicada ao processamento do seu job. Você pode visualizar o uso de uma instância na página Instâncias.

Próximos passos