Introducción a los modos de ejecución de Qiskit Runtime
Cuando se introdujo Qiskit Runtime, los usuarios solo podían ejecutar circuits como trabajos individuales. A medida que fueron surgiendo distintos tipos de cargas de trabajo cuánticas, se hizo evidente la necesidad de diferentes estrategias de programación. Los modos de ejecución determinan cómo se programan tus trabajos, y elegir el modo correcto permite que tu carga de trabajo se ejecute de manera eficiente dentro de tu presupuesto. Existen tres modos de ejecución: job, session y batch.
Modo job
Una solicitud primitiva individual del estimator o del sampler realizada sin un context manager. Los circuits y las entradas se empaquetan como primitive unified blocs (PUBs) y se envían como una tarea de ejecución al ordenador cuántico. Para ejecutar en modo job, especifica mode=backend al instanciar una primitiva. Consulta Ejemplos de primitivas para ver su uso.
Modo batch
Un gestor de múltiples trabajos para ejecutar eficientemente experimentos que comprenden cargas de trabajo de múltiples trabajos. Estas cargas de trabajo están compuestas por trabajos ejecutables de forma independiente que no tienen ninguna relación condicional entre sí. Con el modo batch, los usuarios envían todos sus trabajos a la vez.
El sistema paraleliza o divide en hilos el paso de preprocesamiento (computación clásica) de cada trabajo primitivo para empaquetar de manera más compacta la ejecución cuántica entre trabajos, y luego ejecuta la parte cuántica de cada trabajo en rápida sucesión para ofrecer los resultados más eficientes. Para más detalles sobre el manejo de hilos, consulta la página de preguntas frecuentes sobre modos de ejecución.
- Al usar el modo batch, no se garantiza que los trabajos se ejecuten en el orden en que se enviaron. Además, aunque tus trabajos batch se ejecutarán lo más juntos posible, no obtienen acceso exclusivo al backend. Por lo tanto, tus trabajos batch podrían ejecutarse en paralelo con los trabajos de otros usuarios si hay suficiente capacidad de procesamiento en la QPU. Además, los trabajos de calibración de la QPU podrían ejecutarse entre los trabajos del batch.
- El tiempo de espera en cola no disminuye para el primer trabajo enviado dentro de un batch. Por lo tanto, los batches no ofrecen ningún beneficio al ejecutar un único trabajo.
Para ejecutar en modo batch, especifica mode=batch al instanciar una primitiva o ejecuta el trabajo en un context manager de batch. Consulta Ejecutar trabajos en un batch para ver ejemplos.
Modo session
Una ventana dedicada para ejecutar una carga de trabajo de múltiples trabajos. Durante esta ventana, el usuario tiene acceso exclusivo al sistema y ningún otro trabajo puede ejecutarse, incluidos los trabajos de calibración. Esto permite a los usuarios experimentar con algoritmos variacionales de manera más predecible e incluso ejecutar múltiples experimentos simultáneamente, aprovechando el paralelismo en la pila. Usar sessions ayuda a evitar los retrasos causados por poner en cola cada trabajo por separado, lo cual puede ser especialmente útil para tareas iterativas que requieren comunicación frecuente entre recursos clásicos y cuánticos.
Para ejecutar en modo session, especifica mode=session al instanciar una primitiva, o ejecuta el trabajo en un context manager de session. Consulta Ejecutar trabajos en una session para ver ejemplos.
- El tiempo de espera en cola no disminuye para el primer trabajo enviado dentro de una session. Por lo tanto, las sessions no ofrecen ningún beneficio al ejecutar un único trabajo.
- Los usuarios del plan Open no pueden enviar trabajos de session.
Flujo de trabajo básico
El flujo de trabajo básico para batches y sessions es similar:
- El primer trabajo en un batch o session entra en la cola normal. En el caso de los batches, todo el batch de trabajos se programa de forma conjunta.
- Cuando el primer trabajo comienza a ejecutarse, el temporizador del tiempo de vida máximo (TTL) se inicia y no se detiene ni pausa hasta que llega al final.
- El temporizador de TTL interactivo comienza después de que se completa cada trabajo. Si no hay trabajos de carga de trabajo listos dentro de la ventana de TTL interactivo, la carga de trabajo se desactiva temporalmente y se reanuda la selección normal de trabajos. Un trabajo puede reactivar la carga de trabajo desactivada si el batch o la session no ha alcanzado su valor máximo de TTL.
nota
El trabajo debe pasar por la cola normal para reactivar la carga de trabajo.
- Si se alcanza el valor máximo de TTL, la carga de trabajo finaliza y los trabajos en cola restantes fallan. Cualquier trabajo que se esté ejecutando no llegará a completarse si hacerlo supera el límite de costos de la instancia.
El siguiente video ilustra el flujo de trabajo básico usando sessions como ejemplo:
Para obtener todos los detalles sobre los temporizadores TTL, consulta la guía de Tiempo máximo de ejecución.