Saltar al contenido principal
Este proyecto está en fase beta. ¿Encontraste un error? Abre un issue en GitHub. ¿Tienes una pregunta o una idea? Pregunta en Discussions — ¡nos encantaría tu opinión!
¿Cómo es la calidad de la traducción en esta página?

Introducción a los modos de ejecución de Quantum Compute

Cuando se introdujo IBM Quantum Compute Service, 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.

Job mode​

Una solicitud primitiva individual 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 job mode, especifica mode=backend al instanciar una primitiva. Consulta Ejemplos de Estimator y Ejemplos de Sampler para ver su uso.

Batch mode​

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 batch mode, 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.

Un conjunto de trabajos ejecutándose en batch mode. La parte de computación clásica de cada trabajo ocurre simultáneamente, luego todos los trabajos se envían a la QPU. La QPU queda reservada para tu uso desde que el primer trabajo llega a la QPU hasta que el último trabajo termina de procesarse. No hay ningún intervalo entre trabajos en el que la QPU esté inactiva.

Notas
  • 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 batch mode, 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.

Session mode​

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. La función de costo en la imagen representa la de un algoritmo variacional cuántico, ejecutándose en la máquina local de un usuario.

A sets of jobs being run in session mode and the other is being run in batch mode.  Between each job is the interactive TTL (interactive time to live).  The active window starts when the first job starts and ends after the last job is completed. After the final job of the first set of jobs completes, the active window ends and the session is paused (but not closed).  Another set of jobs then starts and jobs continue in a similar manner. The QPU is reserved for your use during the entire session.

Para ejecutar en session mode, 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.

Notas
  • 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Próximos pasos​