Elegir el modo de ejecución adecuado
Las cargas de trabajo a escala utilitaria pueden tardar muchas horas en completarse, por lo que es importante que tanto los recursos clásicos como los cuánticos se programen de forma eficiente para agilizar la ejecución. Los modos de ejecución proporcionan flexibilidad a la hora de equilibrar el coste y el tiempo para utilizar los recursos de forma óptima para sus cargas de trabajo. Hay varios aspectos a tener en cuenta a la hora de elegir qué modo de ejecución utilizar, como el tiempo total de ejecución (tiempo máximo de vida, o TTL) y el tiempo entre trabajos (TTL interactivo).
A continuación se resumen las ventajas de cada uno de ellos:
- Lote
- Todo el lote de trabajos se programa conjuntamente y no hay tiempo de espera adicional para cada uno.
- La computación clásica de los trabajos, como la compilación, se ejecuta en paralelo. Por lo tanto, ejecutar varios trabajos por lotes es mucho más rápido que ejecutarlos en serie.
- Suele haber un retraso mínimo entre los trabajos, lo que puede ayudar a evitar la deriva.
- Si divide su carga de trabajo en varios trabajos y los ejecuta por lotes, puede obtener resultados de trabajos individuales, lo que hace que sea más flexible trabajar con ellos. Por ejemplo, si los resultados de un trabajo no cumplen sus expectativas, puede cancelar los trabajos restantes. Además, si un trabajo falla, puede volver a enviarlo en lugar de volver a ejecutar toda la carga de trabajo.
- Suele ser más barato que las sesiones.
- Sesión
- Todas las funciones del modo por lotes (pero que requieren un mayor uso; consulte Uso de la carga de trabajo para obtener más detalles sobre cómo se calcula el uso).
- Acceso dedicado y exclusivo a la QPU durante la ventana activa de la sesión.
- Útil para cargas de trabajo que no tienen todas las entradas listas al principio, para cargas de trabajo iterativas que requieren un postprocesamiento clásico antes de que pueda ejecutarse la siguiente, y para experimentos que necesitan ejecutarse lo más juntos posible.
- job
- Más fácil de usar cuando se realiza un pequeño experimento.
- Podría ejecutarse antes que el modo por lotes.
Recomendaciones y mejores prácticas
Por lo general, utilice el modo por lotes a menos que tenga cargas de trabajo que no tengan todas las entradas listas al principio.
-
Utilice el modo por lotes para enviar varios trabajos primitivos simultáneamente y acortar el tiempo de procesamiento.
-
Utilice el modo de sesión para cargas de trabajo iterativas, o si necesita acceso dedicado a la QPU.
-
Utilice siempre el modo trabajo para enviar una única solicitud primitiva.
-
Dado que las sesiones suelen ser más caras, se recomienda utilizarlas por lotes siempre que no se necesiten las ventajas adicionales de utilizar sesiones.
-
Los usuarios de Open Plan no pueden enviar trabajos de sesión.
Para garantizar el uso más eficiente de los modos de ejecución, se recomiendan las siguientes prácticas:
-
La ejecución de un trabajo conlleva unos gastos fijos. En general, si cada uno de sus trabajos utiliza menos de un minuto de tiempo de QPU, considere la posibilidad de combinar varios en un trabajo más grande (esto se aplica a todos los modos de ejecución). "Tiempo QPU" se refiere al tiempo empleado por el complejo QPU para procesar tu trabajo.
-
Si cada uno de tus trabajos consume más de un minuto de tiempo de QPU, o si combinar trabajos no resulta práctico, aún puedes ejecutar varios trabajos en paralelo. Cada trabajo pasa por un procesamiento tanto clásico como cuántico. Mientras que una QPU sólo puede procesar un trabajo a la vez, se pueden procesar hasta cinco trabajos clásicos en paralelo. Puede aprovechar esta ventaja enviando varios trabajos en modo de ejecución por lotes o por sesiones.
Lo anterior son directrices generales, y usted debe ajustar su carga de trabajo para encontrar la proporción óptima, especialmente cuando se utilizan sesiones. Por ejemplo, si utiliza una sesión para obtener acceso exclusivo a un backend, considere la posibilidad de dividir los trabajos grandes en otros más pequeños y ejecutarlos en paralelo. Esto podría ser más rentable porque puede reducir el tiempo de reloj de pared.
Ejemplos
Ejecutar un algoritmo variacional cuántico
La ejecución de un algoritmo variacional cuántico suele seguir este flujo:
- Prepara el ansatz.
- Evalúa la función de coste en una QPU.
- Tome el resultado del paso anterior y páselo por un optimizador clásico.
- Ajuste los parámetros según el resultado de (3) y vuelva al paso (2).
En este caso, si estaba utilizando el modo de trabajo o por lotes, cada trabajo generado por el paso (2) tiene que volver a pasar por la cola. Esto aumenta drásticamente la duración del experimento (tiempo de reloj de pared) debido al tiempo de espera. También podría tardar más en converger debido a la deriva del dispositivo. Es decir, se supone que cada iteración da un resultado mejor, pero la deriva del dispositivo podría empeorar los resultados posteriores.
Además, si utiliza PEA o PEC, puede aprender el modelo de ruido una vez y aplicarlo a trabajos posteriores cuando se ejecuten en sesión dedicada. Esto no suele funcionar con el modo por lotes o trabajos porque el modelo de ruido podría quedar obsoleto para cuando el siguiente trabajo salga de la cola.
Comparar la configuración de mitigación de errores
Para comparar los efectos de los métodos de mitigación de errores disponibles, puede seguir este flujo:
- Construye un circuito y un observable.
- Envíe trabajos primitivos que utilicen diferentes combinaciones de ajustes de mitigación de errores.
- Represente gráficamente los resultados para observar los efectos de los distintos ajustes.
En este caso, todos los empleos (que están relacionados pero son independientes) están disponibles desde el principio. Si utiliza el modo por lotes, se programan colectivamente, por lo que sólo tendrá que esperar a que pasen por la cola una vez. Además, como el objetivo es comparar los efectos de varios métodos de mitigación de errores, es beneficioso que se ejecuten lo más juntos posible. Así pues, el lote sería una buena elección. Podría ejecutar estos trabajos en una sesión, pero dado que las sesiones suelen ser más caras, se recomienda utilizar la ejecución por lotes siempre que no necesite la funcionalidad adicional que ofrecen las sesiones.