Introdução aos modos de execução do Qiskit Runtime
Quando o Qiskit Runtime foi introduzido, os usuários só podiam executar circuitos como trabalhos individuais. Com o surgimento de diferentes tipos de cargas de trabalho quânticas, ficou evidente a necessidade de diferentes estratégias de agendamento. Os modos de execução determinam como seus trabalhos são agendados, e a escolha do modo de execução correto permite que sua carga de trabalho seja executada com eficiência dentro do seu orçamento. Há três modos de execução: trabalho, sessão e lote.
Modo de tarefa
Uma única solicitação primitiva feita sem um gerenciador de contexto. Os circuitos e as entradas são agrupados em blocos primitivos unificados (PUBs) e enviados como uma tarefa de execução ao computador quântico. Para executar no modo de tarefa, especifique mode=backend isso ao instanciar uma primitiva. Consulte os exemplos do Estimator e do Sampler para saber como usá-los.
Modo em lote
Um gerenciador de múltiplas tarefas para executar com eficiência experimentos que envolvem cargas de trabalho com múltiplas tarefas. Essas cargas de trabalho são compostas por tarefas executáveis de forma independente, sem relação condicional entre si. No modo em lote, os usuários enviam seus trabalhos de uma só vez.
O sistema paraleliza ou divide em threads a etapa de pré-processamento (computação clássica) de cada tarefa primitiva para agrupar de forma mais compacta a execução quântica entre as tarefas e, em seguida, executa a execução quântica de cada tarefa em rápida sucessão para fornecer os resultados mais eficientes. Para obter mais detalhes sobre threading, consulte a página de perguntas frequentes sobre o modo de execução.
- Ao agrupar, não é garantido que os trabalhos sejam executados na ordem em que foram enviados. Além disso, embora seus trabalhos em lote sejam executados o mais próximo possível uns dos outros, eles não têm acesso exclusivo ao backend. Portanto, seus trabalhos em lote podem ser executados em paralelo com os trabalhos de outros usuários se houver capacidade de processamento suficiente na QPU. Além disso, os trabalhos de calibração da QPU podem ser executados entre os trabalhos em lote.
- O tempo de fila não diminui para o primeiro trabalho enviado em um lote. Portanto, os lotes não oferecem nenhum benefício ao executar um único trabalho.
Para executar em modo de lote, especifique mode=batch ao instanciar uma primitiva ou execute o trabalho em um gerenciador de contexto de lote. Consulte Executar trabalhos em um lote para obter exemplos.
Modo de sessão
Uma janela dedicada para executar uma carga de trabalho com vários trabalhos. Durante essa janela, o usuário tem acesso exclusivo ao sistema e nenhum outro trabalho pode ser executado, inclusive os trabalhos de calibração. Isso permite que os usuários façam experiências com algoritmos variacionais de forma mais previsível e até mesmo executem vários experimentos simultaneamente, aproveitando o paralelismo na pilha. O uso de sessões ajuda a evitar atrasos causados pelo enfileiramento de cada trabalho separadamente, o que pode ser particularmente útil para tarefas iterativas que exigem comunicação frequente entre recursos clássicos e quânticos.
Para executar no modo de sessão, especifique mode=session ao instanciar uma primitiva ou execute o trabalho em um gerenciador de contexto de sessão. Consulte Executar trabalhos em uma sessão para obter exemplos.
- O tempo de fila não diminui para o primeiro trabalho enviado em uma sessão. Portanto, as sessões não oferecem nenhum benefício ao executar um único trabalho.
- Os usuários do Open Plan não podem enviar trabalhos de sessão.
Fluxo de trabalho básico
O fluxo de trabalho básico para lotes e sessões é semelhante:
- O primeiro trabalho em um lote ou sessão entra na fila normal. Para lotes, o lote inteiro de trabalhos é programado em conjunto.
- Quando o primeiro trabalho começa a ser executado, o cronômetro de tempo máximo de vida (TTL) é iniciado e não para nem faz pausa até que o final seja atingido.
- O cronômetro TTL interativo é iniciado após a conclusão de cada trabalho. Se não houver trabalhos de carga de trabalho prontos dentro da janela TTL interativa, a carga de trabalho será temporariamente desativada e a seleção normal de trabalhos será retomada. Um trabalho pode reativar a carga de trabalho desativada se o lote ou a sessão não tiver atingido seu valor TTL máximo.
Note
O trabalho deve passar pela fila normal para reativar a carga de trabalho.
- Se o valor TTL máximo for atingido, a carga de trabalho será encerrada e todos os trabalhos restantes na fila falharão. Qualquer trabalho em execução no momento não será executado até a conclusão se isso exceder o limite de custo da instância.
O vídeo a seguir ilustra o fluxo de trabalho básico, usando sessões como exemplo:
Para obter detalhes completos sobre os temporizadores TTL, consulte o guia Tempo máximo de execução.